27 Aralık 2017 Çarşamba

realpath komutu

Giriş
Çalışılan dizine (PWD) belirtilen dosya ismini ekler. Dosyanın mevcut olup olmamasının önemi yoktur. Açıklaması şöyle.
Print the resolved absolute file name; all but the last component must exist
Örnek
Şöyle yaparız.
$ pwd
/homes/yosefkl
$ realpath test
/homes/yosefkl/test
Örnek
sh dosyası şöyle çalıştırılmış olsun
uploadme Hello.txt
sh dosyasında şöyle yaparız. Böyle bana girdi olarak verilen dosyanın gerçek dizin yolunu bulabilirim.
echo $(realpath "$1")
-e seçeneği
Dosya yok ise hata verir. Şöyle yaparız.
$ realpath -e playground
realpath: playground: No such file or directory

19 Aralık 2017 Salı

at komutu

Giriş
at ile kuyrukta bekleyen işleri görmek için atq komutu kullanılır.

Bilgisayar Kapalı İse at Komutuna Ne Olur?
Açıklaması şöyle.
at executes any command that should have been executed before when you wake up the
computer. So a job you add using at 20:00 today can very well be executed suddenly three
days later when you power on your computer again. 
Yani at zamanı kaçırdıysa, ileriki bir zamanda da çalışabilir. Görmek için şöyle yaparız.
$ sudo date -s "2017-12-15 23:57:00"
$ at 23:59 17-12-15 <<<'echo executed >at_test'
job 1 at Fri Dec 15 23:59:00 2017
# suspend, wake after four minutes
$ date
Sat Dec 16 00:01:17 CET 2017
$  cat <at_test || atq
bash: /home/dessert/at_test: No such file or directory
1       Fri Dec 15 23:59:00 2017 a dessert
# wait a few minutes
$  cat <at_test || atq
executed
Örnek
Şöyle yaparız. EOT için Ctrl + D tuşuna basılır
% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019
-f seçeneği
Dosya ismini belirtir. Şöyle yaparız.
at -f my_script.sh 23:00
next hour seçeneği
Şöyle yaparız.
sudo at next hour -f myiptablesscript

13 Aralık 2017 Çarşamba

rm komutu

Giriş
remove anlamına gelir.
rm komutu seçeneksiz kullanılırsa alt dizinlere bakmaz. Sadece bulunulan dizindeki dosyaları siler.

Bu komutu ile rm - rf /* şeklinde çok hata yapılıyor. safe-rm komutunu kurmak çok daha emniyetli.

rm vs rmdir komutları
Açıklaması şöyle. Yani rm komutu gidip rmdir komutunu kullanıyor
Unlinking directories was originally a privileged operation:
  
So rmdir was implemented as a small binary which only removed directories, which at the time involved removing .. and . inside the directory, and then the directory itself. rmdir was designed to be setuid root; it performs separate permission tests using access to determine whether the real user is allowed to remove a directory. Like any setuid root binary, it’s better to keep it simple and tightly-focused.

rm -r actually used this separate binary to delete directories as necessary.

It seems the lasting difference between rm -r and rmdir is the result of this initial difference.
-d seçeneği
Sadece boş olan dizini siler. rmdir ile aynıdır. Açıklaması şöyle
-d will only remove empty directories. -r doesn't care
-f/--force seçeneği
Silme işlemini onaylamak için kullanıcıya sormaz. Açıklaması şöyle
-r is recursive, it repeatedly deleted the contents. -f just means don't prompt the user –
Örnek
Şöyle yaparız.
rm -f wordpress-169.sql
Gerçek dosyayı değil sembolik linkin başını silmek için şöyle yaparız.
rm -f sd/common.py
-i seçeneği

interactive anlamına gelir. Silmeden önce onay ister. Şöyle yaparız.
rm -i wordpress-*.sql
--no-preserve-root seçeneği
root dizini yani / dizinini silmek için kullanılır.

-r/--recursive seçeneği
Açıklaması şöyle
rm -r deletes the target directory and recursively deletes everything inside that directory (including non-empty directories and files of any type)

14 Kasım 2017 Salı

dash

Ubuntu'daki varsayılan kabuk bash kabuğu değil dash kabuğu.

Windows chkdsk komutu

/F seçeneği
Şöyle yaparız.
C:\WINDOWS\system32>chkdsk D: /F

iperf3 komutu - Hız Ölçer

Giriş
Açıklaması şöyle
iperf can be used to generate a stream of data traffic. It can act both as a sender and a receiver, and record information about sent and received data, such as: data rate, packet loss and jitter.
Açıklaması şöyle
To check the external speed, we just run iperf3 against a given internet target as in the screenshot above. The result is not particularly important on its own, but when compared with previous results it speaks volumes. Why did the speed decrease on that particular day? Why did the speed decrease forever after that particular day? Why did the speed suddenly increase? All these questions are excellent conversation starters when thinking about the home network.a
iperf ile hem TCP hem de UDP testi yapılabilir.

iperf3 komutu iperf komutunun daha gelişmiş hali.

-b seçeneği
Kullanılacak bant genişliğini belirtir.  Örneğin 100 megabyte. UDP trafiği kullanılır. Şöyle yaparız.
iperf3 -c xxxxxxxx.co.uk -u -b 100M
Çıktı olarak şunu alırız.
Connecting to host xxxxxxx.co.uk, port 5201
[  4] local 192.168.1.102 port 53077 connected to x.x.x.x port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  10.5 MBytes  87.9 Mbits/sec  1342  
[  4]   1.00-2.00   sec  10.8 MBytes  90.3 Mbits/sec  1378  
[  4]   2.00-3.00   sec  10.8 MBytes  90.6 Mbits/sec  1382  
[  4]   3.00-4.00   sec  10.8 MBytes  90.8 Mbits/sec  1386  
[  4]   4.00-5.00   sec  10.8 MBytes  90.2 Mbits/sec  1376  
[  4]   5.00-6.00   sec  10.8 MBytes  90.2 Mbits/sec  1376  
[  4]   6.00-7.00   sec  10.8 MBytes  90.3 Mbits/sec  1378  
[  4]   7.00-8.00   sec  10.8 MBytes  90.8 Mbits/sec  1384  
[  4]   8.00-9.00   sec  10.8 MBytes  90.7 Mbits/sec  1384  
[  4]   9.00-10.00  sec  10.8 MBytes  90.5 Mbits/sec  1381  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   108 MBytes  90.2 Mbits/sec  8.214 ms  0/1 (0%)  
[  4] Sent 1 datagrams

iperf Done.
-B seçeneği
Bind to interface address anlamına gelir.

-c seçeneği
İstemci açar. TCP kullanarak istemci açıp sunucu arasındaki bantgenişliğini test etmek için şöyle yaparız.
iperf3 -c xxxxxxx.co.uk
Connecting to host xxxxxxx.co.uk, port 5201
[  4] local 192.168.1.102 port 56608 connected to x.x.x.x port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  95.0 KBytes   778 Kbits/sec    0   16.8 KBytes       
[  4]   1.00-2.00   sec  85.2 KBytes   698 Kbits/sec    0   20.9 KBytes       
[  4]   2.00-3.00   sec  79.6 KBytes   652 Kbits/sec    0   25.1 KBytes       
[  4]   3.00-4.00   sec  74.0 KBytes   607 Kbits/sec    3   19.6 KBytes       
[  4]   4.00-5.00   sec  72.6 KBytes   595 Kbits/sec    0   25.1 KBytes       
[  4]   5.00-6.00   sec  71.2 KBytes   583 Kbits/sec    2   19.6 KBytes       
[  4]   6.00-7.00   sec  61.4 KBytes   503 Kbits/sec    1   19.6 KBytes       
[  4]   7.00-8.00   sec  82.4 KBytes   675 Kbits/sec    0   19.6 KBytes       
[  4]   8.00-9.00   sec  71.2 KBytes   583 Kbits/sec    1   12.6 KBytes       
[  4]   9.00-10.00  sec  72.6 KBytes   595 Kbits/sec    0   19.6 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   765 KBytes   627 Kbits/sec    7             sender
[  4]   0.00-10.00  sec   735 KBytes   602 Kbits/sec                  receiver

iperf Done.
-t seçeneği
İstemcinin kaç saniye süresince veri göndermesi istediğimizi belirtir.

-u seçeneği
UDP trafiği kullanılır. Şöyle yaparız.
iperf3 -c -u xxxxxxx.co.uk
Çıktı olarak şunu alırız.
Connecting to host xxxxxxxxx.co.uk, port 5201
[  4] local 192.168.1.102 port 41387 connected to x.x.x.x port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   1.00-2.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   2.00-3.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   3.00-4.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   4.00-5.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   5.00-6.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   6.00-7.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   7.00-8.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   8.00-9.00   sec   128 KBytes  1.05 Mbits/sec  16  
[  4]   9.00-10.00  sec   128 KBytes  1.05 Mbits/sec  16  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  11.913 ms  136/146 (93%)  
[  4] Sent 146 datagrams

iperf Done.

-p seçeneği
İstemci veya sunucunun kullanacağı port numarasını belirtir.

-P seçeneği
İstemcinin kaç tane paralel bağlantı kullanmasını istediğimizi belirtir.

-s seçeneği
Sunucu açar. 
Örnek
Şöyle yaparız.
iperf -s
Örnek
Şöyle yaparız. Böylece iki bilgisayar arasındaki hızı ölçeriz
# Computer 1
iperf3 -s

# Computer 2
iperf3 -c 192.168.68.116


6 Kasım 2017 Pazartesi

groups komutu

Giriş
Belirtilen kullanıcının ait olduğu grupları gösterir.

3 Kasım 2017 Cuma

iptables-save komutu

Giriş
iptables komutu ile yapılan değişkliğin kaydedilmesini sağlar.

-c seçeneği
counter değerlerini de gösterir.

Örnek
Tablonun ilk hali şöyle olsun.
root@debian:~# iptables-save -c
# Generated by iptables-save v1.4.21 on Fri Nov  3 09:11:15 2017
*filter
:INPUT ACCEPT [8:528]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5:492]
COMMIT
# Completed on Fri Nov  3 09:11:15 2017
 Yeni bir kural ekleyelim.
iptables -A INPUT -s localhost -j ACCEPT
Kaydetmek için şöyle yaparız.
root@debian:~# iptables-save -c
# Generated by iptables-save v1.4.21 on Fri Nov  3 09:11:24 2017
*filter
:INPUT ACCEPT [6:396]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:496]
[0:0] -A INPUT -s 127.0.0.1/32 -j ACCEPT
COMMIT
# Completed on Fri Nov  3 09:11:24 2017
root@debian:~#

2 Kasım 2017 Perşembe

test komutu

-t seçeneği
Açıklaması şöyle. isatty() çağrısının aynısını yapar
-t file_descriptor
True if file descriptor number file_descriptor is open and is associated with a terminal. False if file_descriptor is not a valid file descriptor number, or if file descriptor number file_descriptor is not open, or if it is open but is not associated with a terminal.
Standard Input için şöyle yaparız.
test -t 0
Diğer inputlar için şöyle yaparız.
test -t 0 -a -t 1 -a -t 2
bash içinde şöyle yaparız.
if [ -t 0 ] ; then ...

19 Ekim 2017 Perşembe

update-alternatives komutu - JDK'ları Yönetir

Giriş
Birden fazla JDK sürümünü yönetebilmeyi sağlar. Bu komut yerine SDKMAN tercih edilebilir

--list seçeneği
Örnek
Şöyle yaparız
$ update-alternatives --list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/jdk-11.0.3+7/bin/java
--install seçeneği
Örnek
Şöyle yaparız
update-alternatives --install /usr/bin/java java /opt/jdk/jdk1.8.0_152/bin/java 100
--remove seçeneği
Örnek
Şöyle yaparız
$ sudo update-alternatives --remove "java" /usr/lib/jvm/jdk-11.0.3+7/bin/java
update-alternatives: removing manually selected alternative - switching java to auto mode


18 Ekim 2017 Çarşamba

bash kodlama - backslash

Giriş
backslash özel bazı karakterlerden önce geliyorsa -escape diyelim- farklı yorumlanır. Bu özel karakterler şunlar
$ ` " \ ve newline

Çift Tırnak
Şöyle yaparız. Escape yapılmadığı için aynı çıktıyı alırız
[user@linux ~]$ echo "foo \ "
foo \
Şöyle yaparız. Escape yapıldığı için özel karakteri görürüz.
[user@linux ~]$ echo "foo \" "
foo "
[user@linux ~]$ echo "foo \\ "
foo \
Çift Tırnak Olmadan
Şöyle yaparız. Line continuation anlamına gelir.
[user@linux ~]$ echo foo \ # Space after \
foo