Ubuntu12.04: Cara menonaktifkan proses daemon saat startup

23

Saya biasanya menggunakan service start/stopatau initctl start/stopuntuk memulai atau menghentikan proses daemon tetapi sekarang apa yang saya cari adalah untuk menonaktifkan proses daemon mulai dari contoh startup mysqld.

Saat ini apa yang saya lakukan adalah mengubah nama /etc/init/mysql.confuntuk /etc/init/mysql.conf.baktapi setelah membaca sedikit tentang systemdsaya datang untuk mengetahui bahwa ia menyediakan enable & disablepilihan untuk tugas di atas.

Jadi, apakah ada sesuatu yang serupa di ubuntu 12.04 dengan upstart.

RanRag
sumber
Anda mengatakan Anda menggunakan systemd? Saya menggunakannya di komputer Fedora 17 saya. systemctl [enable|disable|is-enabled] mysqld.service
BenjiWiebe
1
@ BenjiWiebe: Tidak, saya tidak menggunakan systemd. Saya menggunakan pemula karena systemd bukan default di ubuntu 12.04 / 12.10.
RanRag
1
oh saya mengerti sekarang ... Tidak yakin apa yang saya pikirkan.
BenjiWiebe

Jawaban:

26

Anda dapat menonaktifkan layanan dengan menjalankan perintah berikut:

sudo update-rc.d -f <service name> disable

Kutipan halaman manual:

Ketika dijalankan dengan opsi menonaktifkan [S | 2 | 3 | 4 | 5], perbarui-rc.d memodifikasi tautan runlevel yang ada untuk skrip /etc/init.d/name dengan mengganti nama tautan awal untuk menghentikan tautan dengan nomor urut sama dengan dengan selisih 100 minus nomor urut asli.

Mark Cohen
sumber
2
Saya tidak punya cukup reputasi untuk memilih ini dan melakukannya tanpa penjelasan akan menjadi tidak sopan, jadi hanya komentar: Pertanyaan oleh @Noob berkaitan dengan Ubuntu 12,04 yang menggunakan konfigurasi Upstart (/etc/init/*.conf file) untuk sebagian besar daemon sistem (seperti yang disebutkan oleh @Noob) sementara saran Anda hanya berfungsi untuk daemon mulai menggunakan skrip di /etc/init.d/* (gaya SysV lama). Sunting: Sebagai catatan, warl0ck memiliki jawaban yang tepat (terima kasih!).
xolox
3
Pertanyaannya adalah tentang situasi hipotetis atau umum yang menggunakan mysql sebagai kasus topikal tertentu. OP tampaknya setidaknya sebagian menyadari jawaban ini, tetapi mungkin bermanfaat bagi generasi mendatang untuk mencatat bahwa beberapa paket yang bermanfaat tidak dan tidak akan menghormati format pemula (seperti webmin dan banyak yang dibuat sendiri dari paket sumber sekitar saat komentar) . Itu berarti metode ini bisa menjadi jawaban parsial yang valid untuk konteks, seperti halnya jawaban warl0ck dan Mark untuk mengatasi titik tertentu dari layanan mysql hipotetis yang dipasang dengan manajer paket.
JustinC
Bendera -f tidak diperlukan.
dannyman
20

Cara yang benar untuk menonaktifkan dan memulai layanan, adalah membuat file XX.override,

echo 'manual' > /etc/init/mysqld.override

Dengan begitu layanan pemula tidak akan memulai secara otomatis

bunga aster
sumber
Apakah ini masih berfungsi Ubuntu 12.04?
RSK
@RSK ya, mengapa Anda tidak mencobanya saja?
Daisy
1
Saya mencoba dan tidak bekerja untuk saya. Coba lagi dan akan memperbarui Anda.
RSK
Tidak, itu tidak berfungsi di Ubuntu-14.04.
Hi-Angel
1
@RSK yes, why don't you just give it a try?Saya kira, karena sangat merepotkan untuk memulai ulang sistem dengan "a try" untuk setiap saran dari halaman ini.
user907860
7

@ warl0ck sudah benar; ingin menambahkan bahwa informasi ini didokumentasikan dengan cukup baik dalam dokumentasi Pemula: http://upstart.ubuntu.com/cookbook/#disabling-a-job-from-automatically-starting

Secara khusus:

Dengan Upstart 1.3, Anda dapat menggunakan override file dan bait manual untuk mencapai hasil yang sama dengan cara yang lebih sederhana [27]:

# echo "manual" >> /etc/init/myjob.override

Perhatikan bahwa Anda dapat mencapai efek yang sama dengan melakukan ini:

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

Namun, menggunakan fasilitas override berarti Anda dapat membiarkan file konfigurasi pekerjaan asli tidak tersentuh.

Untuk kembali ke perilaku asli, hapus atau ganti nama file override (atau hapus bait manual dari file ".conf" Anda).

Tandai Glossop
sumber
5

Ada juga perangkat lunak yang bagus untuk membantu dalam hal ini. Ini disebut rcconf.

Cukup unduh menggunakan:

sudo apt-get install rcconf

dan menggunakannya dengan perintah

rcconf

Anda mendapatkan antarmuka (baris perintah) yang bagus untuk menonaktifkan / mengaktifkan layanan.

delh
sumber
Ini tidak termasuk dalam sistem, jadi instal lebih banyak hal tidak akan menjadi jawaban yang lebih baik.
m3nda
tapi sangat berguna: D
Magico
1

Mencoba menavigasi ke /etc/rc2.ddan mengubah nama apa yang ingin tidak dijalankan pada saat startup: mengubah (awal, modal) "S" menjadi "K" (misalnya, S02mysqluntuk K02mysql). Jika Anda berubah pikiran, balik saja. Saya pikir 2 merujuk ke runlevel, dalam hal apa 2 adalah default, multiuser runlevel. Mungkin di situlah Anda memiliki sebagian besar barang untuk penggunaan komputer sehari-hari.

Sunting : Baca komentar James O'Gorman di bawah ini.

Emanuel Berg
sumber
1
Ya '2' merujuk ke run-level. Anda dapat memeriksa run-level Anda saat ini menggunakan who -ratau runlevel.
RanRag
Itu benar who --runlevel,.
Emanuel Berg
1
Meskipun ini mencapai apa yang Anda inginkan, secara teknis hal yang salah untuk dilakukan. Dalam istilah SysV init, skrip 'S' adalah skrip start dan 'K' adalah skrip kill - yaitu S dijalankan secara berurutan saat startup dan K dijalankan secara berurutan saat shutdown (atau mengubah ke runlevel yang lebih rendah).
James O'Gorman
@ JamesO'Gorman: Menarik, saya menggunakan Debian, apakah Anda mengatakan "K script" saya dijalankan pada saat shutdown? Apakah ada beberapa huruf yang bisa digunakan untuk menonaktifkan script sama sekali, tanpa bahaya apa pun? (Agak praktis untuk menyimpannya di folder yang sama, jika situasi baru muncul di mana Anda inginkan.)
Emanuel Berg
@ EmanuelBerg Ya, initakan menjalankan 'KXXscript stop' saat shutdown. Anda harus menghapus symlink atau menghapus bit eksekusi dari skrip init asli. Saya percaya Debian menggunakan update-rc.duntuk mengelola ini. Penggunaan RHEL (dan turunannya) chkconfig.
James O'Gorman
0

Dengan Pemula, konfigurasi layanan terletak pada file dalam /etc/init/. Misalnya ssh dikendalikan menggunakan file konfigurasi/etc/init/ssh.conf

File ini menentukan "acara" yang akan meminta Pemula untuk memulai "pekerjaan".

Untuk mencegah layanan memulai secara otomatis, salah satu dari beberapa metode dapat digunakan:
a) Ubah nama file service.conf sehingga tidak berakhir dengan .conf
b) Berikan komentar pada baris "mulai" dari file service.conf.

Dalam versi yang lebih baru dari pemula (setidaknya sejak v1.3) Anda juga dapat mengganti mulai secara online menggunakan file service.override, sehingga Anda dapat menggunakan:
# echo manual > /etc/init/service.override

Terakhir Anda juga dapat menambahkan kata kunci "manual" ke akhir file konfigurasi layanan, mis. Via:
# echo manual >> /etc/init/service.conf

Perhatikan bahwa ini tidak "menghentikan" layanan yang sedang berjalan, itu hanya mencegahnya dari memulai secara otomatis. Ketika diatur untuk startup "manual" Anda mengontrol layanan menggunakan initctl, misalnya untuk berhenti dan memulai daemon SSH:
# initctl stop ssh
# initctl start ssh

Dokumentasi terbaik untuk Pemula adalah di http://upstart.ubuntu.com/cookbook/

Bagian 11.44 mencakup "menonaktifkan layanan dari memulai otomatis, di sini: http://upstart.ubuntu.com/cookbook/#disabling-a-job-from-automatically-starting

Johan
sumber
0

Ya, saya harus mengatakan itu

echo "manual" >> /etc/init/myjob.override

sedikit menyesatkan karena itu berarti menambahkan file override. Saya menguji ini pada 14,04 dengan manajer jaringan dan berikut ini tidak berfungsi

vim /etc/init/network-manager.override:
start
manual

Namun ini berhasil

vim /etc/init/network-manager.override:
#start
manual

Jadi, IMO, initctl mencari baris tanpa komentar pertama dan mengeksekusinya. Mungkin saya salah, tetapi itu adalah hasil tes saya. Masukan dipersilakan.

infoclogged
sumber