จะเปิดหรือปิดบริการได้อย่างไร?


821

ฉันอ่านเกี่ยวกับวิธีเปิดใช้งานและปิดใช้งานบริการใน Ubuntu และดูเหมือนว่ามีความเป็นไปได้ที่แตกต่างกันในการจัดการ

วิธีแรกที่ฉันพบคือupdate-rc.dการเพิ่มบริการใหม่เพื่อเริ่มต้นซึ่งมีจุดมุ่งหมายใน/etc/init.dโฟลเดอร์และเนื้อหา

อีกอันที่ฉันพบคือการแก้ไข.confไฟล์ใน/etc/initโฟลเดอร์

วิธีที่แนะนำในการเปิด / ปิด / เพิ่มบริการคืออะไรและเพราะเหตุใด

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


1
สำหรับเครือข่ายโปรดดู: askubuntu.com/questions/230698/…
Jorge Castro

สิ่งนี้จะเป็นประโยชน์สำหรับผู้ที่ติดอยู่กับ Fedora 12 และลงจอดที่นี่ ในกรณีที่ linkrot chkconfigเป็นสิ่งที่คุณต้องการ
นิ้วเลือดออก

3
โปรดทราบว่าคำตอบสำหรับ Ubuntu 14.04 ยังคงหายไปที่นี่
Reinier Post

2
@MarcelloNuccio: เริ่มต้นด้วย Ubuntu 15.04 การพุ่งพรวดได้รับการสนับสนุนจาก Systemd
Dan Dascalescu

โปรแกรม Auto เริ่มต้นมีการกำหนดค่าในการautostartแสดงออกหรือ*.serviceไฟล์ในหลายสถานที่เช่นเดียวกับในหรือinit.d crontabดู: unix.stackexchange.com/a/525845/43233
Noam Manos

คำตอบ:


831

มีบริการที่สามารถเปิด / ปิดการใช้งานได้โดยใช้ GUI (เช่นstartupแอปพลิเคชัน) หรือเทอร์มินัล

สำหรับเทอร์มินัลคุณมีหลายตัวเลือก ก่อนอื่นให้เปิดเทอร์มินัล (ประเภท "เทอร์มินัล" ในเส้นประและเปิดขึ้นมา) แล้ว:

บริการเปิด / ปิดการใช้งานชั่วคราว

ที่จะหยุดและเริ่มให้บริการชั่วคราว (ไม่เปิด / ปิดการใช้งานสำหรับรองเท้าในอนาคต) service SERVICE_NAMEคุณสามารถพิมพ์ ตัวอย่างเช่น:

  • sudo service apache2 stop(จะหยุดบริการ Apache จนกว่าจะรีบูตหรือจนกว่าคุณจะเริ่มอีกครั้ง)

  • sudo service apache2 start(จะเริ่มบริการ Apache โดยถือว่าหยุดก่อนหน้านี้)

  • service apache2 status (จะแจ้งให้คุณทราบถึงสถานะการให้บริการหากมีการเปิด / ปิดการทำงานของคนพิการ / ไม่ทำงาน)

  • sudo service apache2 restart(จะรีสตาร์ทบริการนี้ใช้บ่อยที่สุดเมื่อคุณเปลี่ยนไฟล์กำหนดค่าในกรณีนี้หากคุณเปลี่ยนการกำหนดค่า PHP หรือการกำหนดค่า Apache การรีสตาร์ทจะช่วยให้คุณไม่ต้องหยุด / เริ่มต้นด้วย 2 บรรทัดคำสั่ง )

  • service apache2(ในกรณีนี้เนื่องจากคุณไม่ได้กล่าวถึง ACTION ในการดำเนินการสำหรับบริการมันจะแสดงตัวเลือกทั้งหมดสำหรับบริการเฉพาะนั้น) ลักษณะนี้จะแตกต่างกันไปขึ้นอยู่กับบริการเช่นด้วย MySQL มันจะพูดถึงเพียงว่า ไม่มีพารามิเตอร์ สำหรับบริการอื่น ๆ เช่นบริการเครือข่ายมันจะพูดถึงรายการเล็ก ๆ ของตัวเลือกทั้งหมดที่มี


SYSTEMD

เริ่มต้นด้วย Ubuntu 15.04 การพุ่งพรวดจะเลิกใช้กับ Systemd ด้วย Systemd เพื่อจัดการบริการเราสามารถทำสิ่งต่อไปนี้:

systemctl start SERVICE- ใช้เพื่อเริ่มบริการ ไม่คงอยู่หลังจากรีบูต

systemctl stop SERVICE- ใช้เพื่อหยุดบริการ ไม่คงอยู่หลังจากรีบูต

systemctl restart SERVICE - ใช้เพื่อรีสตาร์ทบริการ

systemctl reload SERVICE - หากบริการรองรับมันจะทำการโหลดไฟล์ปรับแต่งที่เกี่ยวข้องโดยไม่รบกวนกระบวนการใด ๆ ที่กำลังใช้บริการ

systemctl status SERVICE- แสดงสถานะของบริการ บอกว่าบริการกำลังทำงานอยู่หรือไม่

systemctl enable SERVICE- เปิดบริการในการรีบูตครั้งต่อไปหรือในเหตุการณ์เริ่มต้นครั้งถัดไป ยังคงมีอยู่หลังจากรีบูต

systemctl disable SERVICE- ปิดบริการเมื่อรีบูตครั้งถัดไปหรือในเหตุการณ์หยุดถัดไป ยังคงมีอยู่หลังจากรีบูต

systemctl is-enabled SERVICE - ตรวจสอบว่ามีการกำหนดค่าบริการให้เริ่มต้นหรือไม่ในการรีบูตครั้งถัดไป

systemctl is-active SERVICE - ตรวจสอบว่าบริการใช้งานอยู่ในปัจจุบัน

systemctl show SERVICE - แสดงข้อมูลทั้งหมดที่เกี่ยวกับการบริการ

sudo systemctl mask SERVICE- ปิดใช้งานบริการโดยสมบูรณ์โดยเชื่อมโยงกับ/dev/null; คุณไม่สามารถเริ่มบริการด้วยตนเองหรือเปิดใช้งานบริการ

sudo systemctl unmask SERVICE- ลบลิงก์ไปยัง/dev/nullและเรียกคืนความสามารถในการเปิดใช้งานและหรือเริ่มบริการด้วยตนเอง


UPSTART (เลิกใช้แล้วตั้งแต่ 15.04)

หากเราต้องการใช้วิธีการพุ่งพรวดอย่างเป็นทางการ (โปรดทราบว่าในขณะนี้บริการบางอย่างไม่ได้ถูกเปลี่ยนเป็นพุ่งพรวด) เราสามารถใช้คำสั่งต่อไปนี้:

status SERVICE- สิ่งนี้จะบอกเราว่าบริการที่แปลงแล้วนั้นทำงานอยู่หรือไม่ โปรดทราบว่านี้จะเลิกในความโปรดปรานของstart, stop, และstatus restartนอกจากนี้ยังจะแจ้งให้เราทราบหากบริการยังไม่ได้รับการเปลี่ยนเป็นพุ่งพรวด:

บริการที่แปลงแล้วมักจะแสดงสถานะปัจจุบัน (เริ่ม, กำลังทำงาน, หยุด ... ) และ ID กระบวนการ บริการแปลงไม่ใช่จะให้ข้อผิดพลาดเกี่ยวกับงานที่ไม่รู้จัก

แป้นพิมพ์ลัดบางตัวอาจทำงานกับserviceคำสั่งด้านบน แต่ไม่สามารถใช้กับคำสั่งด้านล่างได้เว้นแต่จะถูกแปลงเป็นบริการพุ่งพรวด 100%:

  • เริ่ม -sudo start mysql

  • STOP -sudo stop mysql

  • รีสตาร์ท -sudo restart mysql

  • สถานะ -sudo status smbd

เปิดใช้งาน / ปิดใช้งานบริการ

หากต้องการสลับบริการตั้งแต่เริ่มต้นหรือหยุดอย่างถาวรคุณจะต้อง:

echo manual | sudo tee /etc/init/SERVICE.override

โดยที่ stanza manualจะหยุดการพุ่งพรวดจากการโหลดบริการโดยอัตโนมัติในการบู๊ตครั้งถัดไป บริการใด ๆ ที่.overrideลงท้ายด้วยจะมีความสำคัญเหนือกว่าไฟล์บริการดั้งเดิม คุณจะสามารถเริ่มบริการได้ด้วยตนเองหลังจากนั้น .overrideถ้าคุณไม่อยากให้เรื่องนี้แล้วก็ลบ ตัวอย่างเช่น:

echo manual | sudo tee /etc/init/mysql.override

จะทำให้บริการ MySQL เข้าสู่manualโหมด หากคุณไม่ต้องการสิ่งนี้หลังจากนั้นคุณสามารถทำได้

sudo rm /etc/init/mysql.override

และ Reboot เพื่อให้บริการเริ่มต้นโดยอัตโนมัติอีกครั้ง แน่นอนว่าการเปิดใช้งานบริการวิธีที่พบบ่อยที่สุดคือการติดตั้ง หากคุณติดตั้ง Apache, Nginx, MySQL หรืออื่น ๆ จะเริ่มโดยอัตโนมัติเมื่อการติดตั้งเสร็จสิ้นและจะเริ่มทุกครั้งที่บูทคอมพิวเตอร์ manualปิดการใช้งานดังกล่าวข้างต้นจะทำให้การใช้งานในการให้บริการ


คุณต้องการเพิ่ม.serviceคำสั่งทุกคำสั่งหรือไม่? systemctl mongod statusทำงานได้ดี
Dan Dascalescu

@DanDascalescu ไม่คุณไม่ได้ แต่ให้ฉันชี้แจงว่ามี
Luis Alvarado

4
ควรจะต้องวางไฟล์. override ไว้ใน /etc/init.d/ นั่นคือตำแหน่งที่วางบริการหรือไม่
โอบีวัน - PallavJha

ทำไมถึงพุ่งพรวดใน 15.04 เป็นวิธีที่เหมาะสมในการเรียกใช้สคริปต์ในการเริ่ม / เริ่มต้นใหม่ในอูบุนตู 16.04 หรือใหม่กว่าคืออะไร?
Kamalakannan J

1
ขอบคุณสำหรับคำตอบที่ครอบคลุมนี้ systemdชุดของคำสั่งที่ทำงานรักษาบน Ubuntu 18.04
Doktor J

355

ขณะนี้มีจริงสามวิธีที่แตกต่างกันสำหรับซอฟแวร์ที่จะเริ่มต้นเป็นบริการในอูบุนตูเป็นSysV , พุ่งพรวดและsystemd บริการถูกกำหนดที่นี่เป็นโปรแกรมที่ดำเนินการโดยระบบในพื้นหลังเมื่อเทียบกับบริการที่เริ่มต้นและเรียกใช้โดยผู้ใช้โดยตรง

SysV

วิธีดั้งเดิมในการเริ่มบริการใน Linux คือการวางสคริปต์ไว้/etc/init.dแล้วใช้update-rc.dคำสั่ง (หรือใน Distros ที่ใช้ RedHat chkconfig) เพื่อเปิดหรือปิดใช้งาน

คำสั่งนี้ใช้ตรรกะที่ซับซ้อนเล็กน้อยเพื่อสร้าง symlink /etc/rc#.dซึ่งควบคุมลำดับของการเริ่มบริการ หากคุณทำงานls /etc/rc2.dคุณสามารถดูเพื่อที่ว่าบริการจะถูกฆ่าด้วยชื่อไฟล์เช่นและเริ่มต้นกับชื่อไฟล์K##xxxx ในหมายถึง "เพื่อเริ่มต้น" สำหรับบริการ ตรงกันข้ามในหมายถึงคำสั่งฆ่าสำหรับการให้บริการS##xxxx##S##xxxxxxxx##K##xxxxxxxx

ปัญหาหนึ่งที่สำคัญกับSysVก็คือว่าเมื่อบูตระบบทุกอย่างที่จะต้องทำในอนุกรมสิ่งหนึ่งหลังจากที่อื่นทำให้เวลาการบูตระบบช้าจริงๆ มีการพยายามทำสิ่งนี้ควบคู่กัน แต่พวกมันเป็นคนจับจดและยากที่จะใช้ประโยชน์จาก นี่คือเหตุผลหลักที่สร้างพุ่งพรวด

พุ่งพรวด

พุ่งพรวดใช้ไฟล์คำจำกัดความของงานใน/etc/initเพื่อกำหนดว่าเหตุการณ์ใดที่ควรเริ่มให้บริการ ดังนั้นในขณะที่ระบบกำลังบู๊ตเครื่องพุ่งพรวดประมวลผลเหตุการณ์ต่าง ๆ และจากนั้นสามารถเริ่มบริการหลาย ๆ แบบพร้อมกัน สิ่งนี้ทำให้พวกเขาสามารถใช้ทรัพยากรของระบบได้อย่างเต็มที่ตัวอย่างเช่นโดยเริ่มบริการดิสก์ที่มีขอบเขตในขณะที่บริการอื่น ๆ ทำงานกับ CPU หรือในขณะที่เครือข่ายกำลังรอที่อยู่ IP แบบไดนามิกจะได้รับมอบหมาย

คุณสามารถดูไฟล์งานพุ่งพรวดทั้งหมดได้จากการรัน ls /etc/init/*.conf

ให้ฉันหยุดที่นี่และบอกว่าถ้าคุณไม่รู้ว่าบริการคืออะไรหรือทำอะไรอย่าปิดใช้งาน!

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

บริการพุ่งพรวดขึ้นหรือไม่

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

status servicename

ถ้ามันเป็นงานธรรมดามันจะแสดงสิ่งนี้:

$ status statd
statd start/running, process 942

แต่ถ้าไม่ใช่คุณจะเห็นอะไรแบบนี้มากขึ้น:

$ status apache2
status: Unknown job: apache2

ในกรณีนี้apache2ยังไม่ได้รับการแปลงพุ่งพรวด ดังนั้นเพื่อปิดการใช้งานapache2คุณเพียงแค่เรียกใช้

sudo update-rc.d apache2 disable
sudo service apache2 stop

ปิดการใช้งานบริการ (งาน) ในการพุ่งพรวด

คำจำกัดความงานพุ่งพรวดไม่มีupdate-rc.dคำสั่ง ในการปิดการใช้งานคุณต้องแก้ไขไฟล์งานโดยตรงเพื่อปิดการใช้งาน มีสองวิธีในการทำเช่นนี้

หากคุณต้องการที่จะยังคงสามารถเริ่มต้นด้วยตนเองคุณจะต้องแสดงความคิดเห็นstart onเงื่อนไข สมมติว่าคุณต้องการติดตั้งsambaแต่ไม่เริ่มโดยอัตโนมัติ นี่คือไฟล์งาน (เป็น natty):

description "SMB/CIFS File Server"
author      "Steve Langasek <steve.langasek@ubuntu.com>"

start on local-filesystems
stop on runlevel [!2345]

respawn

pre-start script
    RUN_MODE="daemons"

    [ -r /etc/default/samba ] && . /etc/default/samba

    [ "$RUN_MODE" = inetd ] && { stop; exit 0; }

    install -o root -g root -m 755 -d /var/run/samba
end script

exec smbd -F

หากต้องการปิดใช้งานsambaคุณสามารถใส่#เครื่องหมาย " start on local-filesystems" ไว้ข้างหน้า โปรดทราบว่าแม้ว่าจะไม่เริ่มการสำรองข้อมูลในการบู๊ตคุณยังคงต้องหยุดการทำงานในครั้งนี้ด้วย

sudo service smbd stop

อย่างไรก็ตามหากคุณไม่ต้องการให้แซมบ้าเริ่มต้นฉันขอแนะนำให้นำพัสดุออกจริง อย่างไรก็ตามหากคุณต้องการติดตั้ง แต่ไม่สามารถเริ่มต้นได้คุณสามารถทำได้ดังนี้:

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

ปิดการใช้งานบริการโดยใช้ start / stop stanza (ลง 11.04)

เริ่มต้นด้วยรุ่นธรรมดาที่จะอยู่ใน 11.04 มีคำหลักใหม่ที่ปิดการใช้งานstart onและบท:stop on manualดังนั้นอีกวิธีในการปิดใช้งานบริการ ณ วันที่ 11.04 คือ:

echo 'manual' | sudo tee /etc/init/mysql.override

# command from root shell
echo manual >> /etc/init/mysql.override

คุณสามารถสร้างoverrideไฟล์เพื่อปิดการใช้งานบริการโดยไม่ต้องแก้ไขคำจำกัดความของงานเลยเพียงแค่ใส่manualคำสำคัญลงไป


20
ดูเหมือนว่า 11.04 มีการแทนที่ด้วย ดังนั้นจึงecho manual >> /etc/init/<service>.overrideเป็นที่ต้องการเนื่องจากปล่อยไฟล์. conf ดั้งเดิมไว้เหมือนเดิม อย่างไรก็ตามมันก็เป็นความอัปยศที่การเปิด / ปิดพื้นฐานดังกล่าวใช้เวลา 3 ปีในการพัฒนาและไม่มี GUI สำหรับสิ่งนั้น
MestreLion

3
update-rc.dเป็นสิ่งที่สำคัญจริงๆ
Timofey

2
ดูเหมือนว่าจะคลี่คลายหัวข้อเดิมมากกว่าคำตอบที่ได้รับการติดแท็กเป็นคำตอบที่อ่อนแอโดยผู้โพสต์คำถามดั้งเดิม ขอบคุณ! :)
Henning

1
ในกรณีของฉันไฟล์/etc/init/ssh.confมีอยู่ แต่status sshและstatus sshdทั้งคู่ก็พูดว่า "งานที่ไม่รู้จัก" คำตอบนี้ดูเหมือนจะไม่เป็นไปได้เช่นนั้น?
Brian Z

1
status sshให้ฉัน 'งานที่ไม่รู้จัก' เช่นกัน แต่service ssh statusทำงานให้ฉัน
ptim

129

SysV-RC-conf

ลองใช้sysv-rc-conf

sudo apt-get install sysv-rc-conf

และเพื่อเริ่มจัดการบริการให้ดำเนินการ

sudo sysv-rc-conf

ซึ่งจะเปิดหน้าต่างโต้ตอบเช่นนี้

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถเลื่อนดูหน้าต่างๆที่ใช้Ctrl+nสำหรับหน้าถัดไปและCtrl+pหน้าก่อนหน้า คุณสามารถเปิดใช้งานและปิดใช้งานบริการโดยเลือกSPACEในระดับที่ต้องการ

งานธุรการ-

อีกทางเลือกหนึ่งคือ งาน - ผู้ดูแลระบบโดยการติดตั้งผ่าน

sudo apt-get install jobs-admin

ซึ่งยังให้ GUI เช่นนี้

ตัวอย่างงานผู้ดูแลระบบ

ในการแสดงงานเพิ่มเติมคุณต้องทำเครื่องหมายแสดงงานที่ได้รับความคุ้มครองจากเมนู

chkconfig

และตัวเลือกที่สามจะchkconfig ,

sudo apt-get install chkconfig

สามารถใช้งานผ่าน CLI chkconfigเพื่อแสดงรายการงานเปิด / ปิด นอกจากนี้เราสามารถดูบริการระบบโดยใช้chkconfig –list

สามารถเปิดใช้บริการได้

chkconfig <service> on

สามารถปิดบริการโดยใช้

chkconfig <service> off

และเรายังสามารถเพิ่มบริการของเราเองโดยใช้สคริปต์เริ่มต้นที่เหมาะสมกับส่วนหัวที่เหมาะสม

chkconfig --add <service>

ปรับปรุง rc.d

และตัวเลือกอื่นสามารถเรียกว่าที่นี่ปรับปรุง rc.dอธิบายสั้น ๆที่นี่

โปรดทราบว่าสำหรับ Ubuntu Server 12.04 update-rc.d จะใช้แทน chkconfig


1
บนเซิร์ฟเวอร์ Ubuntu:Package chkconfig is not available, but is referred to by another package.
pwned

@pwned คุณมีอิสระที่จะแก้ไขและโพสต์ข้อมูลที่อัปเดตเกี่ยวกับฉบับเซิร์ฟเวอร์ขอบคุณ
atenz

ฉันทำตามที่คุณแนะนำตอนนี้มันก็ขึ้นอยู่กับการตรวจสอบเพื่อน
pwned

jobs-adminไม่อนุญาตให้เปลี่ยนงาน (Ubuntu 14.04), สร้างรายงานความผิดพลาดแทน ;-)
Sadi

5
sysv-rc-conf ไม่เหมาะสำหรับใช้กับการพุ่งพรวดหรือ systemd มันเป็นเพียงสำหรับระบบเก่า 5 ระบบซึ่งไม่ได้เป็นค่าเริ่มต้นบน Ubuntu Linux มานานเกือบทศวรรษ Debian Bug # 791689 ยอมรับสิ่งนี้และคำถามที่ว่าทำไมมันไม่ได้ถูกทำเครื่องหมายว่าขัดแย้งกับ systemd
JdeBP

48

สำหรับพวกเราที่ใช้งาน Ubuntu ผ่าน ssh ฉันคิดว่าตัวเลือกที่ดีที่สุดคือrcconf- โปรแกรมที่ใช้ข้อความ:

sudo apt-get install rcconf
sudo rcconf

ข้อความแสดงแทน

นำทางด้วยปุ่มแท็บและลูกศรกด spacebar เพื่อเปิด / ปิด การเปลี่ยนแปลงจะคงอยู่ตลอดการรีสตาร์ท

สกรีนช็อตที่ยืมมาจากบล็อกนี้ซึ่งแสดงให้เห็นsysv-rc-confซึ่งเป็นเครื่องมือที่คล้ายกันซึ่งช่วยให้คุณสามารถตั้งระดับการรัน (สำหรับผู้ที่สนใจเกี่ยวกับ runlevels มากพอที่จะต้องการเปลี่ยนแปลง :)

น่าเสียดายที่ rcconf ไม่ทำงานกับการพุ่งพรวด (บริการที่ระบุไว้ใน/etc/init/*) เพียงแค่ใช้กลไกแบบดั้งเดิม ( ls -l /etc/init.d/*- คือสิ่งที่ไม่ใช่ลิงก์สัญลักษณ์)

โชคดีที่บริการหลายอย่างที่เกี่ยวข้องเมื่อ ssh-ing ในเซิร์ฟเวอร์ (Apache, Tomcat, mdadm, boinc-client ... ) ยังไม่ได้ถูกย้ายไปที่หน้าแรก


6
มันยังใช้งานได้กับพุ่งพรวดหรือไม่?
oKtosiTe

3
น่าเสียดายที่ไม่มี แต่มันได้ผลกับทุกกรณีที่ฉันต้องการเปลี่ยนแปลง - งานพุ่งพรวดน่าจะเป็นสิ่งที่ฉันไม่ต้องการปิดการใช้งาน - นาฬิกาฮาร์ดแวร์, log daemon, เครือข่าย ฯลฯ (บนเซิร์ฟเวอร์ Ubuntu อย่างน้อย) แต่มันเป็นสิ่งที่ต้องระวัง (ฉันไม่ได้ :) ฉันได้อัปเดตโพสต์แล้ว
jg-faustus

น่าเสียดายที่ mysql ถูกเปลี่ยนเป็นคนธรรมดา และนั่นคือบริการที่ฉันใช้เมื่อฉันทำโครงการบางอย่างเท่านั้น
MestreLion

มีข้อผิดพลาดกับ rcconf บน Ubuntu 12.04 ที่ป้องกันไม่ให้โปรแกรมเริ่มทำงาน เพื่อแก้ปัญหาคุณต้องติดตั้งแพคเกจโต้ตอบ
devius

1
เนื่องจากคำตอบนี้ถูกเขียนขึ้นupdate-rc.dมีการเปลี่ยนแปลงและฟังก์ชั่นบางอย่างที่เลิกใช้แล้วถูกนำออกไป Debian bug # 727735 บันทึกว่า rcconf ไม่ได้ถูกเปลี่ยนให้ตรงกัน และไม่ rcconf ไม่ทำงานกับ systemd ดังนั้นจึงไม่สามารถใช้ได้กับระบบเริ่มต้นเริ่มต้นสำหรับ Ubuntu Linux ในช่วงทศวรรษที่ผ่านมา
JdeBP

18

ฉันพบว่ามีเครื่องมือ GUI นี้เช่น BUM แต่เข้ากันได้กับ Upstart:

  • งานธุรการ-

    sudo apt-get install jobs-admin
    

แต่มันง่ายเกินไปและไม่อนุญาตให้เปลี่ยน "งานที่ได้รับการป้องกัน" (jobbs นั่นคืออะไรแอปเปิ้ลมีงานระบบปฏิบัติการมี daemons!)
kakaz

ฉันไม่ได้อนุญาตให้มีการเปลี่ยนแปลง "งานที่ไม่มีการป้องกัน" (Ubuntu 14.04), การผลิตรายงานความผิดพลาดแทนที่จะ ;-)
Sadi

12

การแก้ไขไฟล์กำหนดค่าเริ่มต้นที่มีอยู่ (ดังอธิบายข้างต้น) ไม่ใช่ความคิดที่ดี แพ็คเกจที่อัปเดตอาจมีการกำหนดค่าที่อัปเดตและคุณต้องทำซ้ำการเปลี่ยนแปลงซ้ำแล้วซ้ำอีก

โดยการดูที่man 5 initหนึ่งจะได้พบกับการแก้ปัญหาที่เหมาะสมมากขึ้น: ใช้การตั้งค่าแทนที่ ตัวอย่างสั้น ๆ : สมมติว่าเรามีบริการที่เรียกว่า "foobar" ดังนั้นจะมีไฟล์ที่เรียกว่า/etc/init/foobar.confมีการกำหนดค่าพุ่งพรวด ตอนนี้คุณไม่ต้องการลบไฟล์นั้นหรือแก้ไขมัน - แต่ไม่ต้องการให้บริการนี้ทำงาน? ดังนั้นให้แทนที่ไฟล์ที่อยู่ติดกับ: /etc/init/foobar.override, ประกอบด้วย (หรือเป็นทางเลือกส่วนหัวที่มีคำอธิบายและ) แทนstart on/ stop onบรรทัดที่คุณวางบรรทัดด้วยคำเดียว: manual. วิธีนี้คุณแจ้งให้คนทั่วไปทราบโดยทั่วไปใช้foobar.confแต่แทนที่คำจำกัดความการเริ่มต้นเพื่อเริ่มให้บริการนั้นเมื่อมีการบังคับใช้ด้วยตนเอง (ผ่านservice foobar startในตัวอย่างของเรา)



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