ตารางเปรียบเทียบการใช้งาน SysVinit กับ Systemd
หลังจากที่ RHEL ได้ออก version 7 มาทำให้ผู้ใช้งานต่างต้องปรับตัวกับการเปลี่ยนระบบ service manager กันใหม่ จากระบบก่อนๆ ที่ใช้ SysVinit มาเป็น Systemd ซึ่งมีข้อดีมากกว่าการใช้ SysVinit หลายข้อ เช่นการทำงานแบบ parallel การทำ handling mount point หรือ support cgroups เป็นต้น
จากการที่คำสั่งการทำงานได้มีการเปลี่ยนเแปลงเกือยทั้งหมด ดังนั้นผมจึงนำตารางเปรียบเทียบคำสั่งระหว่าง SysVinit กับ Systemd เพื่อให้ผู้ที่ใช้งานสามารถนำไปเปรียบเทียบกับคำสั่งที่เคยใช้งานอยู่ก่อนหน้านี้
*** ชื่อ service ที่ยกตัวอย่างในตารางนี้ชื่อ abc ครับ
Service Command
Sysvinit Command | Systemd Command | |
---|---|---|
Start service (ไม่ได้เกี่ยวกับการตั้ง start ตอน boot ใหม่) | service abc start | systemctl start abc |
Stop service (ไม่ได้เกี่ยวกับการตั้ง stop ตอน boot ใหม่) | service abc stop | systemctl stop abc |
Restart service | service abc restart | systemctl restart abc |
reload config โดยไม่กระทบต่อการทำงาน (ถ้า support) | service abc reload | systemctl reload abc |
Restarts service ถ้าหาก service นั้นทำงานอยู่ | service abc condrestart | systemctl condrestart abc |
ตรวจสอบสถานะการทำงานของ Service | service abc status | systemctl status abc |
ตรวจสอบ list ของ service ที่มีในระบบ (สามารถสั่ง stop หรือ start ได้) | ls /etc/rc.d/init.d/ | systemctl หรือ systemctl list-unit-files –type=servicels /lib/systemd/system/*.service /etc/systemd/system/*.service |
กำหนดให้ service on เมื่อระบบได้ boot ขึ้นมาใหม่ | chkconfig abc on | systemctl enable abc |
กำหนดให้ service off เมื่อระบบได้ boot ขึ้นมาใหม่ | chkconfig abc off | systemctl disable abc |
ตรวจสอบการตั้งค่า service on หรือ off เมื่อมี boot ระบบขึ้นมาใหม่ใน environment ปัจจุบัน | chkconfig abc | systemctl is-enabled abc |
แสดงตาราง services ในแต่ละ runlevels ว่าถูกตั้งค่าเป็น on หรือ off | chkconfig –list | systemctl list-unit-files –type=service หรือ ls /etc/systemd/system/*.wants/ |
แสดง list runlevels ของ service ว่าตั้งค่าเป็น on หรือ off | chkconfig abc –list | ls /etc/systemd/system/*.wants/abc.service |
เพิ่ม service file เข้าไปใหม่ หรือแก้ไข configuration ต่างๆ | chkconfig abc –add | systemctl daemon-reload |
system log
Sysvinit | Systemd | |
---|---|---|
ตรวจสอบ system log | tail /var/log/messages หรือ tail /var/log/syslog |
journalctl -f |
Runlevels
Sysvinit | Systemd | |
---|---|---|
System halt | 0 | runlevel0.target หรือ poweroff.target |
Single user mode | 1, s, single | runlevel1.target หรือ rescue.target |
Multi user | 2 | runlevel2.target หรือ multi-user.target |
Multi user with Network | 3 | runlevel3.target หรือ multi-user.target |
Experimental | 4 | runlevel4.target หรือ multi-user.target |
Multi user with network and graphic | 5 | runlevel5.target หรือ graphic.target |
Reboot | 6 | runlevel6.target หรือ reboot.target |
Emergency shell | emergency | emergency.target |
เปลี่ยน runlevel/target เป็นแบบ multi user | telinit 3 | systemctl isolate multi-user.target หรือ systemctl isolate runlevel3.target |
ตั้งค่าให้เป็น multi user runlevel/target สำหรับ boot ครั้งต่อไป | sed s/^id:*:initdefault:/id:3:initdefault:/ | ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target |
ตรวจสอบ runlevel ปัจจุบัน | runlevel | systemctl get-default |
เปลี่ยน current runlevel | sed s/^id:*:initdefault:/id:3:initdefault:/ | systemctl set-default multi-user.target |
Machine state
Sysvinit | Systemd | |
---|---|---|
system halt | halt | systemctl halt |
ปิดเครื่อง (power off) | poweroff | systemctl poweroff |
Reboot | reboot | systemctl reboot |
Suspend system | pm-suspend | systemctl suspend |
Hibernate | pm-hibernate | systemctl hibernate |
Systemd new commands
Systemd | |
---|---|
รัน systemd command จาก remote host | systemctl abc.service start -H user@remotehost |
Check boot time | systemd-analyze หรือ systemd-analyze time |
Kill ทุก process ที่มีความสัมพันธืกับ service | systemctl kill abc |
ตรวจสอบ event log ของวันนี้ | journalctl –since=today |
จัดการ hostname | hostnamectl |
จัดการ date/time (รวมถึง timezone) | timedatectl |