10 Aralık 2018 Pazartesi

systemd-ask-password komutu

Giriş
Bash kodlama yaparken şifrenin girilmesi için kullanılır. Söz dizimi şöyle.
systemd-ask-password [OPTIONS...] MESSAGE
Örnek
Şöyle yaparız.
PASSWORD=$(systemd-ask-password "Please type your Password:")
Please type your Password: ***********

poweroff komutu

Giriş
DBus vasıtasıyla  systemd'ye bağlanır. Aslında altta shutdown komutunu kullanır. Bu komut yerine şöyle de yapılabilir.
gnome-session-quit -poweroff
Bazı sistemlerde yerel bağlantı varsa şifreye gerek yoktur. Açıklaması şöyle
On some distributions using systemd, poweroff is now a symlink to systemctl, which instructs systemd to shut the system down on behalf of the user, without asking for the password (if the user has sufficient privileges, typically indicated by the fact that they’re using a local session, i.e. they have physical access to the system).
Örnek
Şöyle yaparız.
poweroff

4 Aralık 2018 Salı

geteuid metodu

Giriş
Dosyanın sahibi olan kullanıcının numarasını döner.

geteid ve getid Farkı
Dosyanın sahibi root olsun.
chmod u+s foo
foo uygulamasını ben çalıştırınca getuid() root user id'sini döner. getid() ise benim user id numaramı döner.

SIGINT (Ctrl+C) (2)

Giriş
SIGINT controlling terminal (yani shell) tarafından gönderilir. Kullanıcı Ctrl+C tuşuna basarsa tty sürücüsü bunu yakalar ve shell'i haberdar eder. Shell de kendisine bağlı olarak çalışan ön plandaki (foreground) uygulamayı haberdar eder.

Bu sinyali yakalayan kod yazarsak göz ardı edilebilir ancak bu kodu yazmazsak uygulamamız sonrlanır. Açıklaması şöyle.
If you don't handle the SIGINT signal, the default action is to terminate the process (unconditionally).
- Windows'ta Linux'taki gibi sinyaller yok. Ancak Ctrl+C console uygulamaları için aynı şekilde çalışıyor. Console Metodları başlıklı yazıya bakabilirsiniz.
Why Linux always output “^C” upon pressing of Ctrl+C? sorusuna göz atmakta fayda var.

signal metodu yazısına bakabilirsiniz
sigaction metodu yazısına bakabilirsiniz

3 Aralık 2018 Pazartesi

bash kodlama - matematiksel işlemler

Giriş
Açıklaması şöyleç
An arithmetic operator: -eq, -gt, -lt, -ge, -le and -ne inside a [[ ]] (in ksh,zsh and bash) means to automatically expand variable names as in the c language, not need for a leading $.
Örnek
Şöyle yaparız.
$ [[ x -eq 3 ]] && echo yes || echo no
 yes

$ [[ x -eq 4 ]] && echo yes || echo no
 no
Örnek
Eğer eq, gt gibi matematiksel operatör kullanmayacaksak değişken için dolar işareti eklemek gerekir. Şöyle yaparız.
exit_code="$?"

if [[ "$exit_code" != "0" ]]; then
  ...
fi

SIGKILL (9)

Giriş
Açıklaması şöyle.
The SIGKILL signal is sent to a process to cause it to terminate immediately. In contrast to SIGTERM and SIGINT, this signal cannot be caught or ignored, and the receiving process cannot perform any clean-up upon receiving this signal.
Açıklaması şöyle.
The program actually never receives the SIGKILL signal, as SIGKILL is completely handled by the operating system/kernel.

When SIGKILL for a specific process is sent, the kernel's scheduler immediately stops giving that process any more CPU time (and interrupts its currently executing threads, if there is any). As a result, the process itself would never get the chance to actually process the information that it has received a SIGKILL. Then other kernel routines are called to remove the process from memory and free all resources it had open at the time. As usual, the parent (PPID) of the killed process is notified of the death of the child process with a SIGCHLD signal.
SIGKILL sinyalini durdurmanın yolu yoktur. Uygulama bu sinyali alınca işletim sistemi tarafından kapatılır. Uygulamanın hiçbir şekilde uyarılmadan kapatılır. Hatta uygulamanın kapatılmaması bir hatadır. Açıklaması şöyle
In fact, if SIGKILL fails to terminate a process, that by itself constitutes an operating system bug which you should report.
Diğer
Linux'da bu sinyali göndermek için "kill -9" komutu kullanılır.

2 Aralık 2018 Pazar

jobs komutu

Giriş
Arka planda çalışan işleri gösterir. Çıktısının açıklaması şöyle.
%+ : current job; last job stopped in foreground or started in background
%- : last/previous job
%% : same as +
Arka plandaki iş jobs komutu ile listelendikten sonra fg komutu ile ön plana alınabilir.

Örnek
Şöyle yaparız.
$bash: /singh/test1 &
[1] 9223
$bash:  /singh/test2 &
[2] 9226
$bash:  /singh/test3 &
[3] 9234
$bash:  /singh/test4 &
[4] 9237
$bash:  jobs
[1]   Running                 /singh/test &
[2]   Running                 /singh/test2 &
[3]-  Running                 /singh/test3 &
[4]+  Running                 /singh/test4 &
Diğer
Arka plandaki iş bitince yine çıktıda + veya - alabiliriz.

Örnek
Şöyle yaparız.
$ sleep 10 
[1]+  Stopped    sleep 10

# by running kill -STOP 28105  on another terminal
Örnek
Şöyle yaparız.
$ set -b
$ sleep 10 &
[1] 27866
$ sleep 10 &
[2] 27868
$  [1]-  Done                    sleep 10

[2]+  Done                    sleep 10

disown komutu

Giriş
Açıklaması şöyle.
With disown, a process is removed from the list of jobs in the current interactive shell. Running jobs after starting a background process and running disown will not show that process as a job in the shell. A disowned job will not receive a HUP from the shell when it exits
-h seçeneği
Açıklaması şöyle.
With disown -h, the job is not removed from the list of jobs, but the shell would not send a HUP signal to it if it exited


25 Kasım 2018 Pazar

dmesg komutu

Giriş
dmesg komutu ile kernel loglarını görebilme imkanı var. dmesg kernel içindeki etkin logları gösterir. Açıklaması şöyle.
The kernel stores messages in a ring buffer in memory.
...
You can also display messages from the kernel ring buffer using the dmesg command. The command also has options to interact with the ring buffer, for example to read and clear messages.
/var/log/dmesg Dosyası
/var/log/dmesg dosyası ise eski logları gösterir.

-T seçeneği
Şöyle yaparız
$ dmsg -T
[Fri Oct  1 04:17:36 2021] end_request: critical medium error, dev sde, sector 1041778840
[Fri Oct  1 04:17:37 2021] sd 0:0:0:4: [sde] Unhandled sense code
[Fri Oct  1 04:17:37 2021] sd 0:0:0:4: [sde]
[Fri Oct  1 04:17:37 2021] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[Fri Oct  1 04:17:37 2021] sd 0:0:0:4: [sde]
[Fri Oct  1 04:17:37 2021] Sense Key : Medium Error [current]
[Fri Oct  1 04:17:37 2021] sd 0:0:0:4: [sde]
[Fri Oct  1 04:17:37 2021] Add. Sense: Unrecovered read error
[Fri Oct  1 04:17:37 2021] sd 0:0:0:4: [sde] CDB:
[Fri Oct  1 04:17:37 2021] Read(10): 28 00 3e 18 48 98 00 00 08 00
[Fri Oct  1 04:17:37 2021] end_request: critical medium error, dev sde, sector 1041778840