อะไรคือความแตกต่างระหว่าง "systemctl start" และ "systemctl enable"?


83

ฉันติดตั้ง MariaDB- เซิร์ฟเวอร์ไปยังเครื่องของฉัน ในขณะที่ตั้งค่าฉันพบกับปัญหาว่าฉันต้องเปิดใช้งานตลอดเวลาหรือไม่เพราะเอกสารที่ฉันติดตามจะได้รับตามขั้นตอนเหล่านี้

sudo yum install mariadb mariadb-server 
sudo systemctl start mariadb.service  
sudo systemctl enable mariadb.service

2
คุณยังสามารถenable และ startด้วย--nowswich ของenablesubcommand systemctl enable sshd --nowเช่น: เช่นเดียวกับdisableคำสั่งในstopการให้บริการ

คำตอบ:


131

systemctl startและsystemctl enableทำสิ่งต่าง ๆ

enable จะขอหน่วยที่ระบุไว้ในสถานที่ที่เกี่ยวข้องเพื่อให้มันจะเริ่มโดยอัตโนมัติเมื่อบูตหรือเมื่อเสียบปลั๊กฮาร์ดแวร์ที่เกี่ยวข้องหรือสถานการณ์อื่น ๆ ขึ้นอยู่กับสิ่งที่ระบุไว้ในไฟล์หน่วย

start เริ่มหน่วยทันที

disableและstopอยู่ตรงข้ามกับสิ่งเหล่านี้ตามลำดับ

ซึ่งหมายความว่าเมื่อคุณติดตั้ง MariaDB เป็นครั้งแรกคุณอาจต้องการเรียกใช้systemctl enable mariadb.serviceเพื่อเปิดใช้งานเพื่อเริ่มการบู๊ต คุณอาจต้องการเรียกใช้systemctl start mariadb.serviceหรือเพิ่งรีบูตเพื่อเริ่มต้น MariaDB หากต้องการหยุด MariaDB ให้เรียกใช้systemctl stop mariadb.service(มันจะเริ่มอีกครั้งในการบูตครั้งถัดไปหรือเมื่อคุณเริ่มด้วยตนเอง) systemctl disable mariadb.serviceปิดการใช้งานจึงไม่ได้เริ่มต้นในการบูตอีกต่อไปเรียกใช้

ที่มา: systemctl man page


4
++++ สำหรับการอธิบายที่ชัดเจน
sunleo

ดังนั้นเมื่อเราควรพิมพ์ systemctl เปิดใช้งาน ทุกครั้งที่เราต้องการเรียกใช้บริการ systemd
Goldname

ไม่เมื่อคุณต้องการให้มันเริ่มต้นโดยอัตโนมัติ systemctl disableหากคุณต้องการที่จะหยุดมันจากการเริ่มต้นโดยอัตโนมัติจากนั้นคุณเรียก
vurp0

นั่นหมายความว่าบริการเริ่มต้นที่รูตหรือไม่ ฉันจะเริ่มให้บริการในฐานะผู้ใช้รายอื่นขณะบูตได้อย่างไร
Chaminda Bandara

18

จากmanpage :systemctl

enable NAME...
   Enable one or more unit files or unit file instances, as specified
   on the command line. This will create a number of symlinks as
   encoded in the "[Install]" sections of the unit files. After the
   symlinks have been created, the systemd configuration is reloaded
   (in a way that is equivalent to daemon-reload) to ensure the
   changes are taken into account immediately. Note that this does not
   have the effect of also starting any of the units being enabled. If
   this is desired, either --now should be used together with this
   command, or an additional start command must be invoked for the
   unit.
   ...
   Enabling units should not be confused with starting (activating)
   units, as done by the start command. Enabling and starting units is
   orthogonal: units may be enabled without being started and started
   without being enabled. Enabling simply hooks the unit into various
   suggested places (for example, so that the unit is automatically
   started on boot or when a particular kind of hardware is plugged
   in). Starting actually spawns the daemon process (in case of
   service units), or binds the socket (in case of socket units), and
   so on.

เป็นหลักenableทำเครื่องหมายบริการสำหรับการเริ่มต้นในการบูตและstartเริ่มบริการทันที


เราควรเปิดใช้งานเมื่อใด เราจำเป็นต้องทำเพียงครั้งเดียวเท่านั้น?
Goldname

@Goldname คุณเปิดใช้งานในครั้งแรกที่คุณต้องการเริ่มทำงานในการบูตครั้งถัดไป เพียงครั้งเดียวก็เพียงพอแล้ว
muru

แล้วเมื่อเราแก้ไขมันล่ะ เราจะต้องเปิดใช้งานใหม่หรือไม่
Goldname

@ Gold ชื่อคุณไม่จำเป็นต้องเปิดใช้งานอีกครั้ง
muru

ขอบคุณและสิ่งเดียวกันจะเกิดขึ้นหากไฟล์ถูกย้ายไปยังไดเรกทอรีอื่นและ / หรือระบบรีบูตหรือไม่
Goldname

4

ตั้งแต่ systemctl เวอร์ชัน 220 เปิดใช้งานและปิดใช้งานการสนับสนุน - ตอนนี้สลับไปที่บริการเริ่ม / หยุดพร้อมกันกับการเปิด / ปิดการใช้งาน

เช่น systemctl --now enable foobar.service

ใช้systemctl --versionเพื่อตรวจสอบเวอร์ชั่นที่คุณติดตั้ง

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