ผู้ดูแลระบบ Linux - การจัดการทรัพยากรด้วย systemctl

systemctlเป็นยูทิลิตี้ที่ใช้ในการควบคุม systemd. systemctl ช่วยให้ผู้ดูแลระบบ CentOS สามารถดำเนินการหลายอย่างบน systemd ได้แก่ -

  • กำหนดค่าหน่วย systemd
  • รับสถานะของ systemd untis
  • เริ่มและหยุดบริการ
  • เปิด / ปิดบริการ systemd สำหรับรันไทม์ ฯลฯ

ไวยากรณ์คำสั่งสำหรับsystemctlนั้นค่อนข้างธรรมดาแต่อาจทำให้ยุ่งเหยิงกับสวิตช์และตัวเลือกต่างๆ เราจะนำเสนอฟังก์ชันที่สำคัญที่สุดของsystemctl ที่จำเป็นสำหรับการจัดการ CentOS Linux

Basic systemctl syntax: 
systemctl [OPTIONS] COMMAND [NAME]

ต่อไปนี้เป็นคำสั่งทั่วไปที่ใช้กับsystemctl -

  • start
  • stop
  • restart
  • reload
  • status
  • is-active
  • list-units
  • enable
  • disable
  • cat
  • show

เราได้กล่าวแล้วเริ่มต้น , หยุด , โหลด , รีสตาร์ท , เปิดใช้งานและปิดการใช้งานกับ systemctl ลองดูคำสั่งที่ใช้กันทั่วไปที่เหลือ

สถานะ

ในรูปแบบที่เรียบง่ายที่สุดคำสั่งสถานะสามารถใช้เพื่อดูสถานะของระบบโดยรวม -

[root@localhost rdc]# systemctl status 
 ● localhost.localdomain 
  State: running 
  Jobs: 0 queued
  Failed: 0 units 
  Since: Thu 2017-01-19 19:14:37 EST; 4h 5min ago 
CGroup: / 
       ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 
       ├─user.slice 
       │ └─user-1002.slice 
       │   └─session-1.scope 
       │     ├─2869 gdm-session-worker [pam/gdm-password] 
       │     ├─2881 /usr/bin/gnome-keyring-daemon --daemonize --login 
       │     ├─2888 gnome-session --session gnome-classic 
       │     ├─2895 dbus-launch --sh-syntax --exit-with-session

ผลลัพธ์ข้างต้นได้รับการควบแน่น ในสถานะ systemctl ในโลกแห่งความจริงจะแสดงสถานะกระบวนการแบบทรีประมาณ 100 บรรทัด

สมมติว่าเราต้องการตรวจสอบสถานะของบริการไฟร์วอลล์ของเรา -

[root@localhost rdc]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon 
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) 
Active: active (running) since Thu 2017-01-19 19:14:55 EST; 4h 12min ago 
 Docs: man:firewalld(1) 
Main PID: 825 (firewalld) 
CGroup: /system.slice/firewalld.service 
       └─825 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

อย่างที่คุณเห็นบริการไฟร์วอลล์ของเราเปิดใช้งานอยู่ในขณะนี้และใช้งานมานานกว่า 4 ชั่วโมงแล้ว

รายการหน่วย

คำสั่ง list-units ช่วยให้เราสามารถแสดงรายการหน่วยทั้งหมดในประเภทหนึ่ง ๆ ตรวจสอบซ็อกเก็ตที่จัดการโดยsystemd -

[root@localhost]# systemctl list-units --type=socket 
UNIT                         LOAD     ACTIVE     SUB     DESCRIPTION     
avahi-daemon.socket          loaded   active  running    Avahi mDNS/DNS-SD Stack Activation Socket 
cups.socket                  loaded   active  running    CUPS Printing Service Sockets 
dbus.socket                  loaded   active  running    D-Bus System Message Bus Socket 
dm-event.socket              loaded   active  listening  Device-mapper event daemon FIFOs 
iscsid.socket                loaded   active  listening  Open-iSCSI iscsid Socket
iscsiuio.socket              loaded   active  listening  Open-iSCSI iscsiuio Socket 
lvm2-lvmetad.socket          loaded   active  running    LVM2 metadata daemon socket 
lvm2-lvmpolld.socket         loaded   active  listening  LVM2 poll daemon socket 
rpcbind.socket               loaded   active  listening  RPCbind Server Activation Socket 
systemd-initctl.socket       loaded   active  listening  /dev/initctl Compatibility Named Pipe 
systemd-journald.socket      loaded   active  running    Journal Socket 
systemd-shutdownd.socket     loaded   active  listening  Delayed Shutdown Socket 
systemd-udevd-control.socket loaded   active  running    udev Control Socket 
systemd-udevd-kernel.socket  loaded   active  running    udev Kernel Socket 
virtlockd.socket             loaded   active  listening  Virtual machine lock manager socket 
virtlogd.socket              loaded   active  listening  Virtual machine log manager socket

ตอนนี้เรามาตรวจสอบบริการที่กำลังทำงานอยู่ -

[root@localhost rdc]# systemctl list-units --type=service 
UNIT                      LOAD     ACTIVE     SUB     DESCRIPTION 
abrt-ccpp.service         loaded   active   exited    Install ABRT coredump hook 
abrt-oops.service         loaded   active   running   ABRT kernel log watcher 
abrt-xorg.service         loaded   active   running   ABRT Xorg log watcher 
abrtd.service             loaded   active   running   ABRT Automated Bug Reporting Tool 
accounts-daemon.service   loaded   active   running   Accounts Service 
alsa-state.service        loaded   active   running   Manage Sound Card State (restore and store) 
atd.service               loaded   active   running   Job spooling tools 
auditd.service            loaded   active   running   Security Auditing Service

ใช้งานอยู่

คือใช้งานคำสั่งนี้เป็นตัวอย่างของคำสั่ง systemctl ที่ออกแบบมาเพื่อส่งกลับข้อมูลสถานะของหน่วย

[root@localhost rdc]# systemctl is-active ksm.service 
active

แมว

catเป็นหนึ่งในคำสั่งที่ไม่ค่อยมีใครใช้ แทนการใช้แมวที่เปลือกและพิมพ์เส้นทางไปยังแฟ้มหน่วยเพียงแค่ใช้แมว systemctl

[root@localhost]# systemctl cat firewalld 
# /usr/lib/systemd/system/firewalld.service
[Unit] 
Description=firewalld - dynamic firewall daemon 
Before=network.target 
Before=libvirtd.service 
Before = NetworkManager.service 
After=dbus.service 
After=polkit.service 
Conflicts=iptables.service ip6tables.service ebtables.service ipset.service 
Documentation=man:firewalld(1)

[Service] 
EnvironmentFile = -/etc/sysconfig/firewalld 
ExecStart = /usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS 
ExecReload = /bin/kill -HUP $MAINPID 
# supress to log debug and error output also to /var/log/messages 
StandardOutput = null 
StandardError = null

Type = dbus 
BusName = org.fedoraproject.FirewallD1

[Install] 
WantedBy = basic.target 
Alias = dbus-org.fedoraproject.FirewallD1.service

[root@localhost]#

ตอนนี้เรามีการสำรวจทั้งsystemdและsystemctlในรายละเอียดขอใช้พวกเขาในการจัดการทรัพยากรในcgroupsหรือกลุ่มควบคุม