หยุดโปรแกรมที่ทำงานเมื่อเริ่มต้นใน Linux


29

ฉันจะหยุดโปรแกรมที่ทำงานเมื่อเริ่มต้นใน Linux ได้อย่างไร ฉันต้องการลบแอพบางตัวออกจากการเริ่มต้นเพื่อให้สามารถจัดการได้โดยsupervisordapache2


นั่นเป็นเหตุผลที่ฉันไม่ได้ติดแท็ก ... ฉันกำลังมองหารูปแบบทั้งหมดที่ฉันทำงานกับ distros ที่แตกต่างกันไม่กี่
Frozenskys

คำตอบ:


29

ขึ้นอยู่กับ distro ของคุณใช้เครื่องมือ chkconfig หรือ update-rc.d เพื่อเปิด / ปิดบริการระบบ

บนระบบสไตล์ redhat / suse / mandrake:

sudo chkconfig apache2 off 

บนเดเบียน:

sudo update-rc.d -f apache2 remove

ชำระเงินหน้าคนของพวกเขาสำหรับข้อมูลเพิ่มเติม


ทำไมคุณต้องใช้ -f (ฉันถือว่ามันแรง) จาก Debian ที่ใช้พื้นฐาน
Frozenskys

2
มีไฟล์อยู่สองชุดในการเล่นที่นี่ คุณมีสคริปต์เริ่มต้นจริงใน /etc/init.d/ และคุณมีลิงค์ไปยังมันในไดเรกทอรี runlevel /etc/rcrunlevel.d/ พวกเหล่านี้ชี้ไปที่สคริปต์ใน /etc/init.d/ หากคุณไม่ใช้ -f update-rd.d จะล้มเหลวเว้นแต่จะไม่มีสคริปต์ใน /etc/init.d/ ถูกลบไปแล้ว หากคุณใช้ -f update-rc.d จะลบไฟล์ลิงก์อย่างถูกต้องโดยไม่คำนึงว่าสคริปต์ /etc/init.d/ จะถูกลบหรือไม่
jacksonh

อาที่มีเหตุผลมากมายฉันลืมไปแล้วว่าสคริปต์ runlevel เป็นเพียงการเชื่อมโยงไปยังสคริปต์ init ขอบคุณสำหรับคำอธิบายเพิ่มเติม
Frozenskys

6

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

# mv /etc/init/servicename.conf /etc/init/servicename.conf.disabled

ปัญหาเกี่ยวกับวิธีนี้คือไม่อนุญาตให้คุณเริ่มบริการโดยใช้:

# service start servicename

อีกทางเลือกหนึ่งคือการเปิดservicename.confไฟล์ในโปรแกรมแก้ไขที่คุณชื่นชอบและใส่เครื่องหมายบรรทัดใด ๆ ที่ขึ้นต้นด้วย:

start on

นั่นคือเปลี่ยนสิ่งนี้เป็น

#start on ...

ที่ "... " เป็นอะไรก็ตามหลังจาก "เริ่มต้น" ก่อนหน้านี้ ด้วยวิธีนี้เมื่อคุณต้องการเปิดใช้งานอีกครั้งคุณไม่จำเป็นต้องจำว่าพารามิเตอร์ "เริ่มต้น" คืออะไร

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

# echo "manual" >> /etc/init/servicename.conf

สิ่งนี้จะทำให้คนธรรมดาไม่สนใจวลี "เริ่มต้น" ใด ๆ ก่อนหน้านี้ในไฟล์



1

เพื่อแสดงรายการบริการเริ่มต้นทั้งหมด

    systemctl

หากต้องการหยุดบริการไม่ให้เริ่มต้นทำงาน

    sudo systemctl disable servicename

เช่นถ้าเราต้องการหยุดการทำงานเซิร์ฟเวอร์ ssh เมื่อเริ่มต้น

    sudo systemctl disable sshd.service

เราสามารถเปิดใช้งานสิ่งนี้ได้อีกครั้งโดยใช้

    sudo systemctl enable sshd.service

การแจกแจงลินุกซ์เกือบทุกครั้งใช้ systemd สำหรับการเริ่มบริการ bootstrapping ดังนั้นคำสั่งด้านบนสามารถใช้งานได้กับ distros ส่วนใหญ่


ยินดีต้อนรับสู่ U&L และขอบคุณสำหรับการสนับสนุนของคุณ! ฉันต้องการจะชี้ให้เห็นว่าคำถามนี้มีอายุประมาณแปดปีแล้วดังนั้นคำตอบที่ได้รับการยอมรับนั้นถูกต้องในเวลา การใช้ systemctl อาจถูกต้องแล้วแต่ถูกต้องสำหรับคำถามอื่น
Jeff Schaller

@ Prince ขอบคุณสำหรับคำอธิบายรายละเอียด มันช่วยให้ฉันเข้าใจว่าการเริ่มต้นระบบทำงานใน Xubuntu ของฉันอย่างไร
รัก. โดยพระเยซูคริสต์

0

Slackware และ Arch linux มีวิธีที่คล้ายกันในการหยุด / เริ่มกระบวนการตอนบู๊ตซึ่งแตกต่างจากตัวอย่าง Ubuntu และ Redhat สไตล์ที่ระบุด้านบน

ในทั้ง Slackware และ Arch linuxes มีสคริปต์ sh ในไดเรกทอรี/etc/rc.dโดยทั่วไปหนึ่งสคริปต์ต่อ daemon หรือหนึ่งสคริปต์ต่อระบบย่อย

ตัวอย่างเช่น Slackware เริ่มต้น Apache เว็บเซิร์ฟเวอร์ด้วยสคริปต์/etc/rc.d/rc.httpdเรียกในเวลาที่เหมาะสมในระหว่างการเริ่มต้นระบบด้วยอาร์กิวเมนต์ "เริ่มต้น" Arch linux มีสคริปต์ที่ต่างชื่อกัน แต่สิ่งเดียวกันก็เกิดขึ้น

เพื่อป้องกันไม่ให้กระบวนการบางอย่างเริ่มต้นในระหว่างการบูตระบบบน Slackware คุณเพียงแค่สร้างสคริปต์ที่เหมาะสมใน /etc/rc.d ซึ่งไม่สามารถเรียกใช้งานได้ เพื่อป้องกันไม่ให้ Apache เริ่มการบู๊ตครั้งถัดไป:

chmod -x /etc/rc.d/rc.httpd

ในการหยุด Apache ที่เริ่มเมื่อบู๊ต: /etc/rc.d/rc.httpd stop คุณจะต้องเป็นรูท

ซุ้มประตูค่อนข้างซับซ้อนกว่าเล็กน้อย ไฟล์ /etc/rc.conf ซึ่งเป็นเชลล์สคริปต์มีอาร์เรย์ DAEMONS เพื่อป้องกันไม่ให้ Apache เริ่มต้นตอนบู๊ตคุณต้องเปลี่ยนบรรทัดนี้ใน /etc/rc.conf:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd httpd ntpd postgresql)

ถึงบรรทัดนี้:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd ntpd postgresql)

หากต้องการหยุด apache ที่กำลังรันอยู่คุณจะต้องเรียกใช้/etc/rc.d/httpd stopในฐานะรูท


0

บน Ubuntu 10.04 คุณสามารถควบคุมโปรแกรมเริ่มต้นบางอย่างจาก GUI

System→การPreferences→การStartup Applications

การตั้งค่าแอปพลิเคชันเริ่มต้น


1
ภาพต้นฉบับไม่อยู่ที่นั่นอีกแล้ว
tshepang

-1

1) แตะ superkey บนแป้นพิมพ์ของคุณ 2) ค้นหา 'แอปพลิเคชันเริ่มต้น' 3) เลือกโปรแกรมที่คุณต้องการปิดการใช้งาน 4) กดปุ่มนี้เพื่อตอบคำตอบถ้า worx

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