บริการเทียบกับสคริปต์ systemctl - ที่จะใช้


24

ใน Fedora เรามีสคริปต์ 'systemctl' และ 'service' systemctlดูเหมือนว่าการให้บริการภายในเรียก ดังนั้นวิธีการที่ถูกต้อง / เหมาะสมใน Fedora คือการเริ่มหรือหยุดบริการ - ผ่านsystemctlหรือserviceสิ่งอำนวยความสะดวก อาจจะมีความแตกต่างที่ต้องจำไว้?


3
ผู้ใช้ Debian, ดังนั้นจึงไม่สามารถตอบได้อย่างแน่นอน, แต่service foo startใน debian นั้นทำงานได้ไม่ว่าระบบ init ของคุณจะเป็น systemd หรือ sysvinit หรือพุ่งพรวด; systemctlอาจจะไม่ทำงานหาก systemd ไม่ใช่ PID1
Shadur

คำตอบ:


14

วิธีที่จะหยุด / เริ่มให้บริการใน Fedora (รุ่นที่ใหม่กว่า) systemctlคือการใช้

อย่างไรก็ตามอาจมีบริการบางอย่าง/etc/init.d/ที่คุณสามารถควบคุมได้ด้วยserviceคำสั่ง คุณยังคงสามารถควบคุมพวกเขาด้วยการsystemctlเป็นsystemdแผนที่โดยอัตโนมัติไปยังไฟล์หน่วยสำหรับคุณ

ตัวอย่างเช่นใน CentOS 7 ของฉัน (Fedora 19 หรือราว ๆ นั้น) มี/etc/rc.d/init.d/networkสคริปต์ที่ฉันสามารถควบคุมได้ด้วยserviceคำสั่ง ถ้าฉันใช้systemctlแทนมันยังคงใช้งานได้:

# sudo systemctl status network
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network)
Active: active (exited) since Tue 2014-11-11 08:21:51 GMT; 2 weeks 1 days ago

ในขณะที่คุณสามารถดูจะได้รับการแมปไป/etc/rc.d/init.d/networkโดยsystemdและsystemctlการควบคุมคำสั่งมัน

ฉันน่าจะเป็น 'ปีที่แล้ว' และใช้serviceแทน:

# service network status
Configured devices:
lo eth0
Currently active devices:
lo eth0 tun0

ทั้งสองทำงาน แต่โปรดทราบว่าพวกเขาให้ผลลัพธ์ที่แตกต่างกันในstatusคำสั่งของพวกเขา


10

โดยทั่วไปแล้วกรณีที่serviceสคริปต์ถูกเปลี่ยนเส้นทางไปยังสคริปต์ systemctl (Systemd) ดังนั้นโดยทั่วไปแล้วคุณต้องการใช้สิ่งที่คุณต้องการ

ตัวอย่าง

จากระบบ Fedora 20 ของฉัน

$ service sshd status
Redirecting to /bin/systemctl status  sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Fri 2014-11-21 09:12:10 EST; 5 days ago
 Main PID: 1095 (sshd)
   CGroup: /system.slice/sshd.service
           └─1095 /usr/sbin/sshd -D

Nov 21 09:12:10 dufresne systemd[1]: Starting OpenSSH server daemon...
Nov 21 09:12:10 dufresne systemd[1]: Started OpenSSH server daemon.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on 0.0.0.0 port 22.
Nov 21 09:12:11 dufresne sshd[1095]: Server listening on :: port 22.

โดยทั่วไปฉันใช้ทั้งสองวิธีเนื่องจากนิสัยเก่าตายยาก แต่ถ้าคุณกำลังพยายามปรับให้เข้ากับโลก Systemd ฉันจะบังคับตัวเองให้ทำสิ่งต่าง ๆ โดยใช้systemctlถ้าเป็นไปได้

นอกจากนี้ Systemd ยังนำทุกสิ่งที่คุณเคยทำด้วยchkconfigและserviceภายใต้คำสั่งเดียวsystemctlดังนั้นฉันจึงพบว่าง่ายต่อการรับมือในระยะยาว

สูตรนี้ในเว็บไซต์ของโครงการ Fedora มีประโยชน์ในการเปลี่ยน

   SS1

อนึ่งคำตอบสำหรับคำถามเดิมของคุณจะถูกตอบในเชิงอรรถในหน้านั้น:

โปรดทราบว่าบรรทัด / sbin / บริการและ / sbin / chkconfig ทั้งหมดที่กล่าวไว้ข้างต้นยังคงทำงานกับ systemd และจะถูกแปลเป็นภาษาท้องถิ่นเท่าที่จำเป็น ข้อยกเว้นเพียงอย่างเดียวคือ chkconfig - รายการ

อ้างอิง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.