บริการและ systemctl ต่างกันอย่างไร


33

บางทีนี่อาจเป็นคำถามเล็กน้อย แต่ก็ไม่ชัดเจนสำหรับฉัน ในหนึ่งในเซิร์ฟเวอร์ของเราเรามีกระบวนการพื้นหลังบางอย่างทำงานซึ่งเริ่มต้นด้วยserviceและอื่น ๆ ที่เริ่มต้นด้วยsystemctlเช่นนี้:

$ service nginx start
$ systemctl start gunicorn

ความแตกต่างระหว่างสองคำสั่งคืออะไร? วิธีใดที่เป็นที่ต้องการในการจัดการกับบริการพื้นหลัง วิธีการกำหนดค่าคำสั่งที่ต้องการ?


3
มีคำอธิบายที่ดีมากมี
Félix Brunet

ส่วนที่เจ็บปวดของเรื่องนี้บางคนบอกว่าบริการคือ 'หมดอายุ' และหากไม่เป็นเช่นนั้นทำไมพวกเขาถึงเปลี่ยนลำดับของข้อโต้แย้งเช่นเดียวกับ 'find / grep / ค้นหา' ฯลฯ ... ไม่มีความสอดคล้องภายในการเผยแพร่ linux :(
killjoy

คำตอบ:


37

serviceเป็นคำสั่ง "ระดับสูง" ที่ใช้สำหรับการเริ่มต้นและหยุดบริการในยูนิกซ์และลินุกซ์ที่แตกต่างกัน ขึ้นอยู่กับผู้จัดการบริการ "ระดับต่ำกว่า" serviceเปลี่ยนเส้นทางไปยังไบนารีที่ต่างกัน

ตัวอย่างเช่นบน CentOS 7 จะเปลี่ยนเส้นทางไปsystemctlยังในขณะที่ CentOS 6 จะเรียก/etc/init.dสคริปต์ที่เกี่ยวข้องโดยตรง ในอีกทางหนึ่ง Ubuntu รุ่นเก่านั้นจะทำการเปลี่ยนเส้นทางไปupstart

service เพียงพอสำหรับการจัดการบริการขั้นพื้นฐานในขณะที่โทรโดยตรง systemctlให้ตัวเลือกการควบคุมที่มากขึ้น


9

systemctlserviceเป็นพื้นรุ่นที่มีประสิทธิภาพมากขึ้นของ

ด้วยserviceคุณสามารถทำคำสั่งที่เกี่ยวข้องกับการให้บริการ (เช่นstatus, reload, restart) ในขณะที่มีsystemctlคุณสามารถใช้คำสั่งที่สูงขึ้นเช่น:

systemctl is-failed name.service # check if service failed to load

หรือปิดบังบริการ:

systemctl mask name.service

มีข้อมูลที่ดีมากมายในหน้านี้จาก Ask Ubuntu


1

systemctlยูทิลิตี้เป็นหลักในการควบคุมภูต / บริการsystemd,
ในขณะที่serviceคำสั่งเป็นยูทิลิตี้แบบดั้งเดิมในSysVinitโลก

หนึ่งในคุณสมบัติที่ systemd คือการเข้ากันได้กับคำสั่ง sysvinit / เดิม
ดังนั้นหากคุณมีsystemctlคำสั่ง
service foo startจะเป็นเสื้อคลุมรอบsystemctl start fooจะเป็นเสื้อคลุมรอบ

chkconfigเรื่องเดียวกันสำหรับ

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