İpucu – Temel Bash Terminal Komutları ile başladığımız Linux serüvenine devam ediyoruz. Bundan sonra, bu tarz yazılar ile linuxe ilişkin ipuçlarını ve bazı komutları paylaşıyor olacağım. Açıkçası, her ne kadar çeşitli vesileler ile linux kullansam da, linux üzerinde yazılım geliştirmeyeli baya oldu. Bu yazılar ile hem kendime hatırlatıcı hem de benim gibi linux kullanmayı planlanan arkadaşlar için de yol gösterici paylaşımlar yapmayı planlıyorum. Bu tarz yazıları çok uzun tutmayı da planlamıyorum, bu sebeple, konuyu daha fazla uzatmadan başlayalım.
Diyelim, Linux’e SSH ile her bağlandığınızda bash shell’inin açılması için ne yapabiliriz diye düşünüyorsanız, aşağıdaki komutu kullanabilirsiniz. Bu özellikle, WSL ya da uzak Linux bilgisayarlarına bağlanarak kullanacak geliştiricilere yardımcı olacaktır.
1 |
chsh -s /bin/bash |
Paket Yönetimi
Bildiğiniz üzere Linux’e ilişkin paket yönetimi oldukça sık başvurduğumuz işlerden biri. Şimdi, bu hususa ilişkin komutlara bakıyor olacağız.
Güncelleme yapabileceğim paketleri görmek için:
1 2 |
sudo apt update apt list --upgradable |
Bunları güncellemek için:
1 |
sudo apt upgrade |
Bir paketi bulabilmek için:
1 |
apt search AramaIcınKuıllanılacakKelime |
Bu pakete ilişkin detaylar için:
1 |
apt show Paketİsmi |
Sadece ilgili paketi kurmak için:
1 |
sudo apt install Paketİsmi |
İlgili paketi kaldırmak için:
1 |
sudo apt remove Paketİsmi |
Sistemde kurulu paketleri görmek için:
1 |
apt list --installed |
Bu arada dikkatli kullanıcılar bazı yerlerde “apt” bazı yerlerde “apt-get” kullanıldığını görmüş olabilirler. Bunların farkı ne diye benim gibi sormuş olabilirsiniz, aşağıdaki sayfada oldukça doyurucu açıklamalar mevcut ama uzun lafın kısası, “apt” son kullanıcılar için daha çok tercih edilen hali. Diğer farklar için aşağıdaki adrese başvurabilirsiniz:
https://askubuntu.com/questions/445384/what-is-the-difference-between-apt-and-apt-get
Servisler
Şimdi de servislere ilişkin bir takım komutlara bakalım.
Çalışan bütün servisleri görmek için (burada önünde – olanlar çalışmayanlar, + olanlar çalışanlar, ? durum bildirmeyenler/terbiyesizler
1 |
service --status-all |
Bu servislerden çalışmayanları çalıştırmak için:
1 |
sudo service Servisİsmi start |
Bu servislerden çalışanları durdurmak için:
1 |
sudo service Servisİsmi stop |
İlgili servisin durumunu öğrenmek için:
1 |
sudo service Servisİsmi status |
İşlemler
Biraz da çalışan proseslere (process) bakalım. Her Linux sisteminde ilk çalışan prosesin ID’si 1 numarasını alır ve diğer bütün prosesleri bu proses başlatır.
Çalışan prosesleri görmek için “ps -ef” komutunu çağırabilirsiniz:
1 2 3 4 5 6 |
<strong>ps -ef</strong> UID PID PPID C STIME TTY TIME CMD root 1 0 0 21:55 ? 00:00:00 /init root 12 1 0 21:55 tty1 00:00:00 /init yazilim+ 13 12 0 21:55 tty1 00:00:00 -bash yazilim+ 13288 13 0 22:19 tty1 00:00:00 ps -ef |
Bir uygulama geliştirdiniz ve bir çok proses ve thread içeriyor bunları daha güzel bir şekilde görmek istemez misiniz?
1 2 3 4 |
yazilimperver@DESKTOP-DQ0D6DS:~/cookbook$ pstree -p init(1)─┬─init(13289)───wsltermd(13290)───bash(13291) ├─init(13308)───bash(13309)───pstree(13328) └─{init}(11) |
Burada () içerisinde yazanlar prosesler, {} içerisinde yazanlar ise thread no’ları temsil eder. Daha güzel bir örnek için aşağıdaki çıktıya bakabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 |
$ pstree -p systemd(1)─┬─ModemManager(925)─┬─{ModemManager}(944) │ └─{ModemManager}(949) ├─NetworkManager(950)─┬─dhclient(1981) │ ├─{NetworkManager}(989) │ └─{NetworkManager}(991) ├─accounts-daemon(927)─┬─{accounts-daemon}(938) │ └─{accounts-daemon}(948) ├─acpid(934) ├─agetty(1103) ├─avahi-daemon(953)───avahi-daemon(970) |
Çalışan bütün servisleri görebilmek için ise “systemctl” komutunu kullanabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
yazilimperver@osboxes:~$ systemctl UNIT LOAD ACTIVE SUB DESCRIPTION > proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File Syste> sys-devices-pci0000:00-0000:00:01.1-ata2-host1-target1:0:0-1:0:0:0-block-sr0.device loaded active plugged VBOX_CD-ROM VBox_GAs_6.1.26 > sys-devices-pci0000:00-0000:00:03.0-net-enp0s3.device loaded active plugged 82540EM Gigabit Ethernet Controller (PRO/100> sys-devices-pci0000:00-0000:00:05.0-sound-card0.device loaded active plugged 82801AA AC'97 Audio Controller > sys-devices-pci0000:00-0000:00:0d.0-ata4-host3-target3:0:0-3:0:0:0-block-sda-sda1.device loaded active plugged VBOX_HARDDISK 1 > sys-devices-pci0000:00-0000:00:0d.0-ata4-host3-target3:0:0-3:0:0:0-block-sda-sda2.device loaded active plugged VBOX_HARDDISK 2 > sys-devices-pci0000:00-0000:00:0d.0-ata4-host3-target3:0:0-3:0:0:0-block-sda-sda3.device loaded active plugged VBOX_HARDDISK 3 > sys-devices-pci0000:00-0000:00:0d.0-ata4-host3-target3:0:0-3:0:0:0-block-sda-sda4.device loaded active plugged VBOX_HARDDISK 4 > sys-devices-pci0000:00-0000:00:0d.0-ata4-host3-target3:0:0-3:0:0:0-block-sda.device loaded active plugged VBOX_HARDDISK > sys-devices-platform-serial8250-tty-ttyS0.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS0 > sys-devices-platform-serial8250-tty-ttyS1.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS1 > sys-devices-platform-serial8250-tty-ttyS10.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS10 > sys-devices-platform-serial8250-tty-ttyS11.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS11 > |
Çalışan herhangi bir servise ilişkin durumu görebilmek için ise “systemctl status Servisİsmi” komutunu kullanabilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
yazilimperver@osboxes:~$ systemctl status cups.service ● cups.service - CUPS Scheduler Loaded: loaded (/lib/systemd/system/cups.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-11-13 19:27:44 UTC; 12min ago TriggeredBy: ● cups.socket ● cups.path Docs: man:cupsd(8) Main PID: 709 (cupsd) Tasks: 1 (limit: 4617) Memory: 2.9M CGroup: /system.slice/cups.service └─709 /usr/sbin/cupsd -l Warning: some journal files were not opened due to insufficient permissions. |
Herhangi bir servisi başlatmak/durdurmak ve tekrar başlatmak için ise aşağıdaki komutları kullanabilirsiniz:
1 2 3 |
sudo systemctl start sshd.service sudo systemctl stop sshd.service sudo systemctl restart sshd.service |
Bu servislerin açılışta otomatik başlatılması için de aşağıdaki komutu kullanabilirsiniz:
1 |
sudo systemctl enable sshd.service |
Son olarak sıkıntılı bir prosesi durdurmak için ne yapabiliriz ona bakalım:
1 |
sudo systemctl kill Servisİsmi |
Bu komut ile güvenli bir şekilde ilgili prosesi güvenli bir şekilde kapatır. Velev ki, her türlü ilgili prosesi kapatmak isterseniz:
1 |
sudo systemctl kill -9 Servisİsmi |
Son iki komut aslında ilgili proseslere sinyal göndermektedir. Bunlardan ilki SIGTERM, ikincisi ise SIGKILL sinyali göndermektedir.
Bir ipucu yazısını daha tamamlamış oluyoruz sevgili yazılımperver dostlarım. Bir sonraki ipucunda ya da yazımda görüşmek üzere kendinize iyi bakın.