Merhabalar
Bu yazıda Linux tabanlı işletim sistemlerinde servisleri yönetilmenize olanak sağlayan systemctl komutunun detaylarına değineceğim. En basit tanımıyla systemd linux kerneli için sistem ve servis yöneticisidir. Systemd linux tabanlı işletim sistemleri için geliştirilmiştir ve birçok linux dağıtımı (centos, red hat, debian, oracle) systemd kullanmaya başladılar. Systemd ‘nin amacı ise sistemdeki servislerin çalışmasını organize etmektir. Bu yönetimi ise systemctl, journalctl, notify, analyze, loginctl, nspawn vb.. araçlar sayesinde gerçekleştirilir.
Basit örnekler halinde başlamak gerekirse, aşağıdaki gibi bir komut kullanarak bir servisi durdurabilirsiniz. Bu örnekte ssh servisi yer almaktadır.
root# systemctl stop sshd
veya bir servisi başlatmak isterseniz aşağıdaki komutu kullanabilirsiniz.
root# systemctl start sshd
Bir servisi restart etmek isterseniz aşağıdaki komutu kullanabilirsiniz.
root# systemctl restart sshd
Bir servis hakkında detaylı durum bilgisini listelemek isterseniz aşağıdaki komut kullanılabilir.
root# systemctl status sshd
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running) since Thu 2015-08-27 08:06:51 PDT; 6s ago
Main PID: 8481 (sshd)
CGroup: /system.slice/sshd.service
└─8481 /usr/sbin/sshd -D
Aug 27 08:06:51 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
Aug 27 08:06:51 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
Aug 27 08:06:51 localhost.localdomain sshd[8481]: Server listening on 0.0.0.0 port 22.
Aug 27 08:06:51 localhost.localdomain sshd[8481]: Server listening on :: port 22.
Bir servisi devre dışı bırakmak isterseniz aşağıdaki komut kullanılabilir.
root# systemctl disable sshd
aynı şekilde servisi devreye almak isterseniz aşağıdaki komut kullanılabilir.
root# systemctl enable sshd
Bir işletim sistemini yeniden başlatmanın birçok yöntem bulunmaktadır. Bu yöntemlerden birisi ise systemctl komutudur. Aşağıdaki komutu kullanarak sistemi yeniden başlatabilirsiniz.
root# systemctl reboot
root# reboot
root# init 6
Sistemi tamamen kapatmak için yine birçok yöntem bulunmaktadır. Aşağıdaki komutlardan birisini kullanabilirsiniz.
root# systemctl poweroff
root# shutdown -h now
root# poweroff
root# init 0
Sistemi uyku moduna almak için aşağıdaki komut kullanılabilir.
root# systemctl suspend
Sistemi derin uyku moduna almak için ise aşağıdaki komutu kullanabilirsiniz.
root# systemctl hibernate
Systemd versiyon bilgilerini görmek isterseniz aşağıdaki komutu kullanabilirsiniz.
root# systemctl --version
Bir servisin aktif olup olmadığını birçok yöntem veya komut ile görebilirsiniz. Aynı zamanda systemctl komutunu kullanarak ‘da görmeniz mümkün.
root# systemctl is-enabled sshd
enabled
Bir servisi kesintiye uğratmadan yapılandırma dosyasını yeniden yüklemesini isterseniz aşağıdaki komut kullanılabilir.
root# systemctl reload sshd
Sistemde devam eden işlerin listesini görmek isterseniz aşağıdaki komut kullanılabilir. Başka bir seçenek ise jobs komutudur.
root# systemctl list-jobs
No jobs running.
aynı şekilde bir işi iptal etmek isterseniz işin ismini aşağıdaki gibi belirtebilirsiniz.
root# systemctl cancel JOB
Bir süreci öldürmenin yine birçok yöntemi bulunmaktadır. Aynı zamanda systemctl komutu ile bunuda yapabilirsiniz. Aşağıdaki komutu kullanarak ssh sürecini öldürebilirsiniz.
root# systemctl kill sshd.service
veya süreci öldürmek için bir sinyal belirtebilirsiniz.
root# systemctl kill -s SIGKILL sshd.service
Systemctl komutun bir diğer harikulade özelliği ise uzaktaki bir sunucunun servisini görebilmenizi sağlıyor. Aşağıdaki komutu kullanarak uzak sunucunun ssh servisinin durumunu görebilirsiniz.
root# systemctl -H [email protected] status sshd.service
Sistemde dinlenen soketleri görmek isterseniz aşağıdaki komut kullanılabilir.
root# systemctl list-sockets
LISTEN UNIT ACTIVATES
/dev/initctl systemd-initctl.socket systemd-initctl.service
/dev/log systemd-journald.socket systemd-journald.service
/run/dmeventd-client dm-event.socket dm-event.service
/run/dmeventd-server dm-event.socket dm-event.service
/run/lvm/lvmetad.socket lvm2-lvmetad.socket lvm2-lvmetad.service
/run/systemd/journal/socket systemd-journald.socket systemd-journald.service
/run/systemd/journal/stdout systemd-journald.socket systemd-journald.service
/run/systemd/shutdownd systemd-shutdownd.socket systemd-shutdownd.service
/run/udev/control systemd-udevd-control.socket systemd-udevd.service
/var/run/avahi-daemon/socket avahi-daemon.socket avahi-daemon.service
Systemctl komutunun bir diğer güzel özelliği ise işlem bekleyen, yarım kalmış, başarısız olmuş servisleri aşağıdaki –fail parametresi ile görmenizi sağlar.
root# systemctl --fail
UNIT LOAD ACTIVE SUB DESCRIPTION
bluetooth.target loaded active active Bluetooth
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
Systemctl komutu ile yüklü olan tüm servisleri ve onlar hakkında durumlarını görmek isterseniz aşağıdaki komutu kullanabilirsiniz.
root# systemctl list-unit-files --type service
UNIT FILE STATE
abrt-ccpp.service enabled
abrt-oops.service enabled
abrt-pstoreoops.service disabled
abrt-vmcore.service enabled
abrt-xorg.service enabled
abrtd.service enabled
accounts-daemon.service enabled
auditd.service enabled
bluetooth.service enabled
brandbot.service static
brltty.service disabled
canberra-system-bootup.service disabled
canberra-system-shutdown-reboot.service disabled
canberra-system-shutdown.service disabled
chrony-wait.service disabled
chronyd.service enabled
colord.service
root# systemctl list-units --type target
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
bluetooth.target loaded active active Bluetooth
cryptsetup.target loaded active active Encrypted Volumes
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network.target loaded active active Network
paths.target loaded active active Paths
remote-fs-pre.target loaded active active Remote File Systems (Pre)
remote-fs.target loaded active active Remote File Systems
slices.target loaded active active Slices
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
timers.target loaded active active Timers
Aşağıdaki komutu kullanarak sistem birimleri hakkında birçok bilgi alabilirsiniz.
root# systemctl list-units --all
UNIT LOAD ACTIVE SUB DESCRIPTION
proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File System Au
dev-cdrom.device loaded active plugged VMware_Virtual_IDE_CDROM_Drive
dev-disk-by\x2d...e_00000000000000000001.device loaded active plugged VMware_Virtual_IDE_CDROM_Drive
dev-disk-by\x2d...e_10000000000000000001.device loaded active plugged VMware_Virtual_IDE_CDROM_Drive
dev-disk-by\x2d...2db1df\x2d7853c1983de3.device loaded active plugged VMware_Virtual_S
dev-disk-by\x2d...2da997\x2d9f53bb4f6a07.device loaded active plugged VMware_Virtual_S
dev-fd0.device loaded active plugged /dev/fd0
dev-sda.device loaded active plugged VMware_Virtual_S
dev-sda1.device loaded active plugged VMware_Virtual_S
dev-sda2.device loaded active plugged VMware_Virtual_S
dev-sda3.device loaded active plugged VMware_Virtual_S
dev-sr0.device loaded active plugged VMware_Virtual_IDE_CDROM_Drive
dev-sr1.device loaded active plugged VMware_Virtual_IDE_CDROM_Drive
dev-ttyS0.device loaded active plugged /dev/ttyS0
dev-ttyS1.device loaded active plugged /dev/ttyS1
dev-ttyS2.device loaded active plugged /dev/ttyS2
dev-ttyS3.device loaded active plugged /dev/ttyS3
Aşağıdaki gibi bir komut kullanarak bir servise bağlı birimlerin belirli türlerini görebilirsiniz. Örneğin, mount servisine bağlı birimleri listelemek için,
root# systemctl list-units --type mount
UNIT LOAD ACTIVE SUB DESCRIPTION
-.mount loaded active mounted /
boot.mount loaded active mounted /boot
dev-hugepages.mount loaded active mounted Huge Pages File System
dev-mqueue.mount loaded active mounted POSIX Message Queue File System
sys-kernel-config.mount loaded active mounted Configuration File System
sys-kernel-debug.mount loaded active mounted Debug File System
Bir işletim sisteminin çalışma seviyesini geçerli oturum için değiştirmek isterseniz aşağıdaki komutları kullanabilirsiniz.
poweroff.target : Runlevel 0 değerine eşittir.
rescue.target : Single user mode değerine eşittir.
multi-user.target : Runlevel 2,3,4 değerine eşittir.
graphical.target : Runlevel 5 değerine eşittir.
reboot.target : Runlevel 6 değerine eşittir.
emergency.target : Acil durum moduna geçer.
hybrid-sleep.target : Hazırda bekleme ve askıya alma modu.
root# systemctl isolate poweroff.target
root# systemctl isolate rescue.target
root# systemctl isolate multi-user.target
root# systemctl isolate graphical.target
root# systemctl isolate reboot.target
root# systemctl isolate emergency.target
root# systemctl isolate hybrid-sleep.target
Örneğin, yukarıdaki herhangi bir çalışma seviyesini varsayılan olarak kullanmak isterseniz aşağıdaki komutu kullanabilirsiniz.
root# systemctl set-default multi-user.target
Sistem varsayılan hangi açılış seviyesini kullandığını görmek isterseniz aşağıdaki komut kullanılabilir.
root# systemctl get-default
multi-user.target
Bir servise bağlı bağımlılıkları görmek isterseniz aşağıdaki komutu kullanabilirsiniz.
root# systemctl list-dependencies sshd
sshd.service
├─sshd-keygen.service
├─system.slice
└─basic.target
├─firewalld.service
├─microcode.service
├─rhel-autorelabel-mark.service
├─rhel-autorelabel.service
├─rhel-configure.service
├─rhel-dmesg.service
├─rhel-loadmodules.service
├─paths.target
├─slices.target
│ ├─-.slice
Yukarıdaki komuta benzer bir komut ise aşağıdaki gibidir. Aşağıdaki komut kullanarak bir servise ait konfigurasyon dosyasının içeriğinin bir listesini görebilirsiniz. Bir başka seçenek ise konfigurasyon dosyalarını bulup cat komutu ile bakabilirsiniz. Bu yol daha basit gibi. 🙂
root# systemctl show sshd.service
Id=sshd.service
Names=sshd.service
Requires=basic.target
Wants=sshd-keygen.service system.slice
WantedBy=multi-user.target
ConsistsOf=sshd-keygen.service
Conflicts=shutdown.target
ConflictedBy=sshd.socket
Before=shutdown.target multi-user.target
...
Yukarıdaki çıktının içerisinden sadece bir kelimeyi görmek isterseniz o kelimenin ismini aşağıdaki gibi belirterek sadece belirttiğiniz kelimeyi aratabilirsiniz.
root# systemctl show sshd.service -p Id
Id=sshd.service
veya
root# systemctl show sshd.service | grep Id
Id=sshd.service
Daha fazla bilgi için man sayfasına bakabilirsiniz.
Leave a Reply