วิธีจัดการบริการ Systemd ด้วย Systemctl

ระบบเริ่มต้นและผู้จัดการบริการสำหรับการกระจาย Linux ส่วนใหญ่ตอนนี้คือ systemd.


กระบวนการ systemd แทนที่ SysV init มันทำงานเป็นกระบวนการแรกหลังจากเคอร์เนลบูตและรับผิดชอบในการนำโฮสต์ Linux ไปสู่สถานะที่สามารถใช้งานได้ มีหน้าที่รับผิดชอบในการเริ่มและจัดการบริการติดตั้งระบบไฟล์จัดการฮาร์ดแวร์สร้างพรอมต์การเข้าสู่ระบบและอื่น ๆ อีกมากมาย.

ข้อดีที่สำคัญของ SysV คือ systemd เริ่มให้บริการมากที่สุดเท่าที่จะเป็นไปได้ในแบบคู่ขนานดังนั้นจึงเร่งกระบวนการเริ่มต้นและทำให้หน้าจอเข้าสู่ระบบเร็วขึ้น.

หน่วย

รายการที่จัดการโดย systemd เรียกว่าหน่วย ไฟล์ยูนิตอยู่ใน / lib / systemd / system.

หน่วยบริการ

สำหรับการจัดการบริการหน่วยเป้าหมายคือหน่วยบริการซึ่งมีไฟล์หน่วยที่มีคำต่อท้าย .บริการ.

การจัดการบริการ systemd

คำสั่งในการจัดการหน่วย systemd คือ systemctl.

การเริ่มและหยุดบริการ

ในการเริ่มเซอร์วิส systemd ให้ใช้คำสั่ง systemctl start:

$ sudo systemctl ชื่อเริ่มต้นบริการ

คุณสามารถออกจาก. บริการต่อท้าย ตัวอย่างเช่นเมื่อต้องการเริ่มเซิร์ฟเวอร์ apache บน Ubuntu:

$ sudo systemctl เริ่ม apache2

ในการหยุดบริการที่กำลังทำงานอยู่:

$ sudo systemctl หยุด name.service

ดังนั้นเพื่อหยุดเซิร์ฟเวอร์ apache บน Ubuntu:

$ sudo systemctl หยุด apache2

รีสตาร์ทและบริการโหลดซ้ำ

ในการเริ่มบริการที่กำลังทำงานอยู่ให้ใช้คำสั่ง restart:

$ sudo systemctl รีสตาร์ท name.service

และในกรณีที่จำเป็นต้องใช้ไฟล์การโหลดซ้ำเท่านั้น

$ sudo systemctl รีโหลดชื่อบริการ

เปิดใช้งานและปิดใช้งานบริการ

หากคุณต้องการให้บริการเริ่มต้นโดยอัตโนมัติเมื่อบูตระบบให้ใช้คำสั่ง enable:

$ sudo systemctl เปิดใช้งาน name.service

หากต้องการปิดใช้งานบริการไม่ให้เริ่มต้นที่บูตระบบให้ทำดังนี้

$ sudo systemctl ปิดการใช้งาน name.service

การปิดใช้งานไม่ได้หยุดบริการที่กำลังทำงานอยู่.

การดูสถานะบริการ

วิธีดูข้อมูลเกี่ยวกับบริการ:

$ sudo systemctl สถานะ name.service

นี่จะแสดงสถานะของบริการและสองสามบรรทัดแรกของไฟล์บันทึก ดังนั้นในขณะที่บริการกำลังทำงานอยู่ผลลัพธ์ของ

sudo systemctl status apache2

คือ

apache2.service – เซิร์ฟเวอร์ Apache HTTP
โหลดแล้ว: โหลดแล้ว (/lib/systemd/system/apache2.service; เปิดใช้งาน; ค่าที่ตั้งไว้ล่วงหน้าของผู้ขาย: เปิดใช้งาน)
ดร็อปอิน: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
ใช้งานอยู่: แอคทีฟ (วิ่ง) ตั้งแต่อ. 2020-05-19 22:11:36 UTC; 4 วันที่ผ่านมา
กระบวนการ: 11,6002 ExecReload = / usr / sbin / apachectl สง่างาม (รหัส = ออกจากสถานะ = 0 / ความสำเร็จ)
PID หลัก: 104165 (apache2)
งาน: 55 (จำกัด : 1024)
CGroup: /system.slice/apache2.service
start104165 / usr / sbin / apache2 -k start
start116006 / usr / sbin / apache2 -k start
start116007 / usr / sbin / apache2 -k start

19 พฤษภาคม 22:11:36 ubuntu18 systemd [1]: เริ่มต้นเซิร์ฟเวอร์ Apache HTTP…
19 พฤษภาคม 22:11:36 ubuntu18 systemd [1]: เริ่มต้นเซิร์ฟเวอร์ Apache HTTP.
21 พฤษภาคม 06:25:01 ubuntu18 systemd [1]: โหลดเซิร์ฟเวอร์ Apache HTTP อีกครั้ง.
21 พฤษภาคม 06:25:01 ubuntu18 systemd [1]: โหลดเซิร์ฟเวอร์ Apache HTTP อีกครั้ง.
22 พฤษภาคม 06:25:01 ubuntu18 systemd [1]: โหลดเซิร์ฟเวอร์ Apache HTTP อีกครั้ง.

ในการตรวจสอบว่าบริการใช้งานอยู่หรือไม่:

$ sudo systemctl เป็นชื่อที่ใช้งานอยู่บริการ

ดังนั้นในขณะที่บริการ apache2 กำลังทำงานเอาต์พุตของคำสั่ง systemctl is-active คือ:

$ sudo systemctl ใช้งาน apache2
คล่องแคล่ว

วิธีตรวจสอบว่ามีการเปิดใช้งานบริการหรือไม่:

$ sudo systemctl เปิดใช้งาน name.service.

การดูสถานะระบบ

คำสั่งทั้งหมดที่คุณเห็นจนถึงตอนนี้ใช้เพื่อจัดการบริการเดียว เมื่อคุณต้องการภาพรวมของสถานะระบบใช้ชุดคำสั่งต่อไปนี้:

เพื่อดูหน่วยทุกประเภท

$ sudo systemctl -t ช่วย
ประเภทหน่วยที่มีอยู่:
บริการ
เบ้า
เป้า
เครื่อง
ภูเขา
automount
แลกเปลี่ยน
เครื่องจับเวลา
เส้นทาง
ชิ้น
ขอบเขต

ในการแสดงรายการยูนิตที่ติดตั้งทั้งหมดให้ใช้ list-unit-files

$ sudo systemctl list-unit-files
หน่วยสถานะไฟล์
คงที่ proc-sys-fs-binfmt_misc.automount
-.สร้างแล้ว
สร้าง boot-efi.mount
dev-hugepages.mount คงที่
dev-mqueue.mount คงที่
สร้าง mnt.mount แล้ว
คงที่ proc-sys-fs-binfmt_misc.mount
sys-fs-fuse-connections.mount คงที่
sys-kernel-config.mount คงที่
sys-kernel-debug.mount คงที่
เปิดใช้งาน acpid.path
เปิดใช้งาน apport-autoreport.path
แบบคงที่ systemd-ask-password-console.path
คงที่ systemd-ask-password-plymouth.path
แบบคงที่ systemd-ask-password-wall.path
session-161.scope transient
accounts-daemon.service เปิดใช้งาน

ผลลัพธ์มีเพียงสองคอลัมน์ไฟล์หน่วยและรัฐ โดยปกติสถานะจะเปิดใช้งานปิดใช้งานคงที่หรือปิดบัง.

  • คงที่: นี่หมายความว่าไม่สามารถเปิดใช้งานเครื่องทำการกระทำแบบครั้งเดียวหรือเป็นการพึ่งพาหน่วยอื่นและไม่สามารถทำงานได้ด้วยตัวเอง.
  • Masked: หน่วยที่ถูกระบุว่าเป็น masked หมายความว่าไม่สามารถเริ่มต้นได้โดยสมบูรณ์เนื่องจากมีการเชื่อมโยงกับ / dev / null. สิ่งนี้เรียกว่าการปิดบังหน่วย สิ่งนี้จะป้องกันไม่ให้บริการเริ่มต้นทำงานด้วยตนเองหรือโดยอัตโนมัติ.

รายการบริการที่ติดตั้งทั้งหมด

คำสั่ง systemctl list-unit-files พร้อมตัวกรองบริการ -t หรือ –type แสดงสถานะของบริการที่ติดตั้งเท่านั้น.

$ sudo systemctl list-unit-files -t บริการ

หน่วยสถานะไฟล์
accounts-daemon.service เปิดใช้งาน
ปิดใช้งาน acpid.service
apache-htcacheclean.service ถูกปิดใช้งาน
[email protected] พิการ
เปิดใช้งาน apache2.service
[email protected] พิการ
apparmor.service เปิดใช้งาน
apport-autoreport.service คงที่
[email protected] คงที่
apport.service สร้างแล้ว
apt-daily-upgrade.service แบบคงที่
ฉลาด – รายวันบริการคงที่
เปิดใช้งาน atd.service
[email protected] เปิดการใช้งาน
เปิดใช้งาน blk-Availability.service
bootlogd.service สวมหน้ากาก
bootlogs.service สวมหน้ากาก

หากต้องการดูหน่วยบริการที่ใช้งานอยู่ทั้งหมดให้ใช้ list-units พร้อมตัวกรองเซอร์วิส -t

$ sudo systemctl รายการหน่วย – บริการ

หน่วยย่อยคำอธิบายย่อยที่แอ็คทีฟ
accounts-daemon.service กำลังโหลดแอคเคาต์เซอร์วิสที่กำลังรัน
apache2.service ที่โหลดทำงานอยู่กำลังรันเซิร์ฟเวอร์ Apache HTTP
apparmor.service โหลดการเริ่มต้นใช้งาน AppArmor ที่ออกแล้ว
apport.service โหลด LSB ที่ออกจากการใช้งานแล้ว: การสร้างรายงานข้อขัดข้องอัตโนมัติ
atd.service ที่โหลดทำงานอยู่กำลังเรียกใช้ตัวกำหนดการเรียกใช้งานที่เลื่อนออกไป
blk-Availability.service ถูกโหลดให้ออกจากสถานะพร้อมใช้งานของอุปกรณ์บล็อก
cloud-config.service ที่โหลดทำงานอยู่ออกจากใช้การตั้งค่าที่ระบุใน cloud-con
cloud-final.service โหลดที่แอ็คทีฟออกจาก Execute ผู้ใช้คลาวด์ / สคริปต์สุดท้าย
cloud-init-local.service ถูกโหลดใช้งานแล้วออกจากงานเริ่มต้น cloud-init (pre-networking)
cloud-init.service ถูกโหลดที่แอ็คทีฟออกจากงานเริ่มต้น cloud-init (บริการเมทาดาทา
console-setup.service ถูกโหลดที่แอ็คทีฟออกแล้วตั้งค่าฟอนต์คอนโซลและคีย์แม็พ
cron.service กำลังโหลดที่กำลังทำงานอยู่กำลังประมวลผลโปรแกรมพื้นหลังปกติ dae

ผลลัพธ์มีคอลัมน์ต่อไปนี้:

  • UNIT: ชื่อหน่วยบริการ systemd
  • โหลด: แสดงว่าการอ่านและโหลดคำจำกัดความหน่วยถูกต้องหรือไม่
  • คล่องแคล่ว: อธิบายว่าอุปกรณ์ใช้งานอยู่หรือไม่.
  • SUB: สถานะการเปิดใช้งานในระดับต่ำของหน่วยให้ข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับหน่วย สิ่งนี้จะแตกต่างกันตามประเภทของหน่วย.
  • รายละเอียด: คำอธิบายของหน่วยบริการ.

ข้อสรุป

ฉันหวังว่านี่จะช่วยให้คุณมีความคิดเกี่ยวกับการใช้ systemctl เพื่อจัดการบริการบน Linux หากสนใจเรียนรู้เพิ่มเติมคุณสามารถลองดูได้ หลักสูตรการเรียนรู้ Linux.

Tags:

  • ลินุกซ์

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map