ลบบริการจากคนธรรมดา


9

ฉันติดตั้ง mysql (จาก repos) บนเครื่องพัฒนา (แล็ปท็อป) และฉันไม่ต้องการให้ daemon ทำงานในการบู๊ตทุกครั้ง ฉันได้คัดลอก /etc/init/mysql.conf ไปยัง /etc/init/mysql.conf.old แล้วลบทุกอย่างหลังจากบรรทัด "เริ่มต้นที่" อย่างไรก็ตามเมื่อรีบูทฉันไม่สามารถเริ่ม mysqld ผ่านการพุ่งพรวดได้อีก:

$ sudo service mysql start
start: Unknown job: mysql

สิ่งนี้ก็ล้มเหลวเช่นกัน (ลองทำอะไรที่จุดนี้):

$ sudo service mysql restart
stop: Unknown job: mysql
start: Unknown job: mysql

นี่คือสคริปต์พุ่งพรวดของฉัน:

# /etc/init/mysql.conf
....
start on
stop on starting rc RUNLEVEL=[016]

นี่คือสคริปต์เริ่มต้น:

# /etc/init/mysql.conf.old
....
start on runlevel [2345]
stop on starting rc RUNLEVEL=[016]

ทุกสิ่งที่ฉันอ่านมาจนถึงตอนนี้ชี้ให้เห็นว่านี่เป็นวิธีที่การป้องกันบริการจากการเริ่มต้นเวลาบูต มีวิธีที่ดีกว่าในการทำเช่นนี้หรือฉันทำผิดพลาดในสคริปต์พุ่งพรวด?

UPDATE : ฉันได้ย้ายไฟล์ conf การสำรองข้อมูลออกจาก / etc / init และเริ่มต้นใหม่โดยคิดว่าอาจมีข้อขัดแย้ง แต่คนธรรมดายังคงกล่าวว่าUnknown job: mysql


ตรวจสอบ / var / log / syslog ก็อาจจะบอกคุณว่ามีปัญหาไวยากรณ์ใน /etc/init/mysql.conf นอกจากนี้คุณยังสามารถลอง 'init-
checkconf

คำตอบ:


17

หากคุณอยู่บน Ubuntu 11.04 หรือใหม่กว่าคุณสามารถใช้manualคำหลักและ. แทนที่ไฟล์ใน / etc / init เพื่อปิดการใช้งานเริ่มต้นอัตโนมัติ:

sudo sh -c 'echo manual >> /etc/init/mysql.override'

manualลบstart onstanza ออกจากการกำหนดค่าของงานได้อย่างมีประสิทธิภาพ

หากคุณใช้ Ubuntu 10.04 คุณสามารถทำได้:

sudo sh -c 'echo start on never >> /etc/init/mysql.conf'

สุดท้าย start onในแฟ้มจะแทนที่คนก่อนหน้าใด ๆ ดังนั้นนี้ควรจะทำงาน neverแต่ก็ถือว่ามีกรณีใดที่เรียกว่า


0

จากโพสต์นี้ : ส่วน "เริ่มต้น" จะต้องสมบูรณ์และถูกต้องในไวยากรณ์

start on runlevel [!0123456]

บรรทัดนี้หมายถึงรันเมื่อระดับการรันไม่อยู่ใน [0,1,2,3,4,5,6] (ซึ่งเป็นเลเวลเดียวเท่านั้นดังนั้นจึงไม่เคยรัน)

อีกตัวเลือกหนึ่งคือการใช้chkconfigตามนี้โพสต์

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