Pertanyaan Bagaimana cara mengaktifkan atau menonaktifkan layanan?


Saya membaca tentang cara mengaktifkan dan menonaktifkan layanan di Ubuntu dan tampaknya ada berbagai kemungkinan untuk mengelolanya.

Metode pertama yang saya temukan adalah update-rc.d untuk menambahkan layanan baru ke startup, yang bertujuan pada /etc/init.d folder dan isinya.

Yang lain yang saya temukan adalah mengedit .conf file dalam /etc/init map.

Apa cara yang disarankan untuk mengaktifkan / menonaktifkan / menambahkan layanan dan mengapa?

Bisakah Anda memberikan langkah antipeluru singkat dengan langkah contoh tentang cara menambahkan layanan di Ubuntu dan mengaktifkan dan menonaktifkannya?


761
2017-12-29 21:03


asal


Untuk berjejaring silakan lihat: askubuntu.com/questions/230698/… - Jorge Castro
Ini akan sangat membantu bagi mereka yang terjebak di Fedora 12 dan telah mendarat di sini. Dalam hal linkrot chkconfigadalah apa yang Anda cari. - Bleeding Fingers
Perhatikan bahwa jawaban untuk Ubuntu 14.04 masih hilang di sini. - Reinier Post
@MarcelloNuccio: Dimulai dengan Ubuntu 15.04, Upstart tidak lagi mendukung Systemd. - Dan Dascalescu


Jawaban:


Ada layanan yang dapat diaktifkan / dinonaktifkan menggunakan GUI (seperti startup aplikasi) atau terminal.

Untuk Terminal Anda memiliki beberapa opsi. Pertama, buka terminal (Ketik "terminal" di dasbor, misalnya, dan buka). Kemudian:

Layanan pengaktifan / penonaktifan sementara

Untuk menghentikan dan memulai layanan untuk sementara (Tidak mengaktifkan / menonaktifkannya untuk boot berikutnya), Anda dapat mengetik service SERVICE_NAME. Sebagai contoh:

  • sudo service apache2 stop (Akan BERHENTI layanan Apache sampai Reboot atau sampai Anda memulainya lagi).

  • sudo service apache2 start (Akan MULAI layanan Apache dengan asumsi itu dihentikan sebelumnya.).

  • service apache2 status (Akan memberitahu Anda STATUS layanan, apakah itu baik diaktifkan / menjalankan cacat / TIDAK berjalan.).

  • sudo service apache2 restart (Akan MENGULANG KEMBALI layanan. Ini paling sering digunakan ketika Anda telah mengubah, file konfigurasi. Dalam hal ini, jika Anda mengubah konfigurasi PHP atau konfigurasi Apache. Restart akan menyelamatkan Anda dari keharusan berhenti / mulai dengan 2 baris perintah)

  • service apache2 (Dalam hal ini, karena Anda tidak menyebutkan TINDAKAN untuk dijalankan untuk layanan, ini akan menunjukkan kepada Anda semua opsi yang tersedia untuk layanan khusus tersebut.) Aspek ini bervariasi tergantung pada layanan, misalnya, dengan MySQL, itu hanya akan menyebutkan bahwa tidak memiliki parameter. Untuk layanan lain seperti layanan jaringan itu akan menyebutkan daftar kecil dari semua opsi yang tersedia.


SYSTEMD

Dimulai dengan Ubuntu 15.04, Upstart tidak lagi mendukung Systemd. Dengan Systemd untuk mengelola layanan yang dapat kita lakukan berikut ini:

systemctl start SERVICE - Gunakan ini untuk memulai layanan. Tidak berlanjut setelah reboot

systemctl stop SERVICE - Gunakan ini untuk menghentikan layanan. Tidak berlanjut setelah reboot

systemctl restart SERVICE - Gunakan ini untuk memulai kembali layanan

systemctl reload SERVICE - Jika layanan mendukungnya, ia akan memuat ulang file konfigurasi yang terkait dengannya tanpa mengganggu proses apa pun yang menggunakan layanan.

systemctl status SERVICE - Menunjukkan status layanan. Memberitahu apakah suatu layanan sedang berjalan.

systemctl enable SERVICE - Mengaktifkan layanan, pada reboot berikutnya atau pada acara mulai berikutnya. Ini berlanjut setelah reboot.

systemctl disable SERVICE - Mematikan layanan pada reboot berikutnya atau pada acara pemberhentian selanjutnya. Ini berlanjut setelah reboot.

systemctl is-enabled SERVICE - Periksa apakah layanan saat ini dikonfigurasi untuk memulai atau tidak pada reboot berikutnya.

systemctl is-active SERVICE - Periksa apakah layanan saat ini aktif.

systemctl show SERVICE - Tampilkan semua informasi tentang layanan.

sudo systemctl mask SERVICE - Sepenuhnya menonaktifkan layanan dengan menautkannya ke /dev/null; Anda tidak dapat memulai layanan secara manual atau mengaktifkan layanan.

sudo systemctl unmask SERVICE - Menghapus tautan ke /dev/null dan mengembalikan kemampuan untuk mengaktifkan dan atau secara manual memulai layanan.


UPSTART (Tidak Digunakan Sejak 15.04)

Jika kita ingin menggunakan cara Upstart yang resmi (Perhatikan bahwa, untuk saat ini, tidak semua layanan telah dikonversi ke Upstart), kita bisa menggunakan perintah berikut:

status SERVICE - Ini akan memberi tahu kami jika layanan yang dikonversi berjalan atau tidak. Perhatikan bahwa ini tidak lagi mendukung start, stop, status & restart. Ini juga akan memberi tahu kami jika layanan belum dikonversi ke pemula:

Layanan yang dikonversi biasanya akan menampilkan status saat ini (Mulai, Berjalan, Menghentikan ...) dan ID proses. Layanan yang tidak dikonversi akan memberikan kesalahan tentang suatu pekerjaan tidak dikenal.

Beberapa pintasan hanya dapat berfungsi dengan service perintah di atas tetapi tidak dengan perintah di bawah ini kecuali mereka 100% dikonversi ke layanan pemula:

  • MULAI - sudo start mysql

  • BERHENTI - sudo stop mysql

  • MENGULANG KEMBALI - sudo restart mysql

  • STATUS - sudo status smbd

Mengaktifkan / Menonaktifkan layanan

Untuk beralih layanan dari memulai atau berhenti secara permanen Anda perlu:

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

dimana bait manual akan berhenti Upstart dari secara otomatis memuat layanan pada boot berikutnya. Layanan apa pun dengan .override ending akan lebih diutamakan daripada file layanan asli. Anda hanya akan dapat memulai layanan secara manual setelahnya. Jika Anda tidak menginginkan ini maka cukup hapus .override. Sebagai contoh:

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

Akan menempatkan layanan MySQL manual mode. Jika Anda tidak menginginkan ini, setelah itu Anda bisa melakukannya

sudo rm /etc/init/mysql.override

dan Reboot agar layanan dapat dimulai secara otomatis lagi. Tentu saja untuk mengaktifkan layanan, cara yang paling umum adalah dengan memasangnya. Jika Anda menginstal Apache, Nginx, MySQL atau yang lain, mereka secara otomatis memulai setelah menyelesaikan instalasi dan akan mulai setiap kali komputer boot. Menonaktifkan, seperti yang disebutkan di atas, akan memanfaatkan layanan manual.


757
2017-12-29 21:26



Apakah Anda perlu menambahkan .service untuk setiap perintah? systemctl mongod status bekerja dengan baik. - Dan Dascalescu
@DanDascalescu tidak Anda tidak tetapi biarkan saya mengklarifikasi bahwa ada. - Luis Alvarado♦
Haruskah file .override harus ditempatkan di /etc/init.d/, yaitu, di mana layanan ditempatkan? - Obi Wan - PallavJha
Mengapa Upstart tidak digunakan lagi di 15.04? apa cara yang tepat untuk menjalankan skrip pada start / restart di ubuntu 16.04 atau yang lebih baru? - Kamalakannan J
@KamalakannanJ apakah Anda menggunakan level rc? (mis. /etc/rc0.d) atau /etc/rc.local? - Luis Alvarado♦


Saat ini sebenarnya ada tiga cara berbeda untuk memulai perangkat lunak sebagai layanan di Ubuntu, SysV, Baru mulai dan systemd. Layanan didefinisikan di sini sebagai program yang dijalankan oleh sistem di latar belakang, dibandingkan dengan yang dimulai dan dijalankan langsung oleh pengguna.

SysV

Cara tradisional untuk memulai layanan di Linux adalah dengan menempatkan skrip di dalamnya /etc/init.d, lalu gunakan update-rc.d perintah (atau dalam distro berbasis RedHat, chkconfig) untuk mengaktifkan atau menonaktifkannya.

Perintah ini menggunakan beberapa logika yang agak rumit untuk membuat symlink masuk /etc/rc#.d, yang mengontrol urutan layanan awal. Jika Anda lari ls /etc/rc2.d Anda dapat melihat urutan layanan yang akan dibunuh dengan nama file seperti K##xxxx dan mulai dengan nama file S##xxxx. Itu ## di S##xxxx berarti "urutan awal" untuk layanan xxxx. Sebaliknya, itu ## di K##xxxx berarti perintah membunuh untuk layanan xxxx.

Satu masalah utama dengan SysV adalah ketika mem-boot sistem, semuanya harus dilakukan secara serial, satu demi satu, membuat waktu boot sistem sangat lambat. Upaya dilakukan untuk memparalelkan ini, tetapi mereka serampangan dan sulit untuk memanfaatkan sepenuhnya. Inilah alasan utama itu Baru mulaitelah dibuat.

Baru mulai

Upstart menggunakan file definisi pekerjaan di /etc/init untuk menentukan pada peristiwa apa suatu layanan harus dimulai. Jadi, ketika sistem sedang boot, baru mulai proses berbagai kejadian, dan kemudian dapat memulai beberapa layanan secara paralel. Ini memungkinkan mereka untuk sepenuhnya memanfaatkan sumber daya sistem, misalnya, dengan memulai layanan berbasis-disk ke atas sementara layanan lain yang terikat CPU berjalan, atau ketika jaringan sedang menunggu alamat IP dinamis yang akan ditetapkan.

Anda dapat melihat semua file pekerjaan baru dengan menjalankan ls /etc/init/*.conf

Biarkan saya berhenti di sini dan mengatakan bahwa jika Anda tidak tahu apa itu layanan, atau apa yang dilakukannya, JANGAN nonaktifkan!

Tidak semua layanan telah dikonversi menjadi kaya baru. Saat bekerja di tim server di Canonical selama beberapa bulan terakhir, saya telah bekerja pada sejumlah file pekerjaan yang dikonversi, dan bagian yang paling menyenangkan adalah memungkinkan salah satu untuk menyingkirkan semua skrip "ajaib" dan dimasukkan ke dalam beberapa perintah di sana-sini untuk menentukan dengan tepat cara memulai layanan, dan tidak lebih. Namun untuk saat ini, hanya segelintir layanan jaringan tradisional, seperti cumi-cumi dan samba, telah dipertobatkan.

Apakah layanan berbasis pemula?

Untuk mengetahui apakah layanan berbasis pemula, Anda dapat menjalankan perintah status:

status servicename

Jika itu sebuah pemula pekerjaan, itu akan menunjukkan ini:

$ status statd
statd start/running, process 942

Tetapi jika tidak, Anda akan melihat sesuatu yang lebih seperti ini:

$ status apache2
status: Unknown job: apache2

Pada kasus ini, apache2 belum dikonversi menjadi pemula. Jadi, untuk menonaktifkan apache2 Anda hanya berlari

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

Nonaktifkan layanan (pekerjaan) di pemula

Definisi pekerjaan pemula tidak memiliki update-rc.d perintah. Untuk menonaktifkan pekerjaan, Anda perlu mengedit file pekerjaan secara langsung untuk menonaktifkannya. Ada dua cara untuk melakukan ini.

Jika Anda ingin tetap dapat memulainya secara manual, maka Anda perlu mengomentari start on kondisi. Katakanlah Anda ingin menginstal samba, tetapi tidak memilikinya mulai secara otomatis. Berikut adalah file pekerjaan (dalam 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

Untuk menonaktifkan samba, Anda cukup meletakkannya # di depan "start on local-filesystems". Perhatikan bahwa sementara itu tidak akan memulai kembali saat boot, Anda masih perlu menghentikannya kali ini dengan

sudo service smbd stop

Namun, jika Anda tidak pernah menginginkannya samba untuk memulai, saya sarankan benar-benar menghapus paket. Namun, jika Anda ingin menginstalnya, tetapi tidak dapat dijalankan, Anda juga dapat melakukan:

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

Nonaktifkan layanan menggunakan stanza start / stop (mulai 11.04)

Dimulai dengan versi pemula yang akan berada di 11.04, ada kata kunci baru yang menonaktifkan start on dan stop on bait: manual. Jadi cara lain untuk menonaktifkan layanan pada 11.04 adalah melakukan:

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

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

Anda dapat membuat override file untuk menonaktifkan layanan tanpa mengedit definisi pekerjaan sama sekali, hanya dengan meletakkan manual kata kunci di dalamnya.


335
2018-01-06 18:25



Tampak seperti 11.04 telah menimpa juga. Begitu echo manual >> /etc/init/<service>.override lebih disukai karena meninggalkan file .conf asli utuh. Bagaimanapun, itu masih memalukan bahwa dasar mengaktifkan / menonaktifkan membutuhkan waktu 3 tahun untuk mengembangkan, dan tidak ada GUI untuk itu. - MestreLion
pembaruan-rc.d adalah yang benar-benar penting - Tim
nampaknya lebih berbahaya bagi topik aslinya daripada jawaban yang telah ditandai sebagai jawaban yang bersifat defintif oleh poster pertanyaan asli. Terima kasih! :) - Henning
Dalam kasus saya, file /etc/init/ssh.conf ada tapi status ssh dan status sshd keduanya mengatakan "Pekerjaan tidak dikenal". Jawaban ini sepertinya tidak menjawab kemungkinan seperti itu? - Brian Z
status ssh memberi saya 'Pekerjaan tidak dikenal' juga, tapi service ssh status bekerja untukku - ptim


sysv-rc-conf

Coba gunakan sysv-rc-conf

sudo apt-get install sysv-rc-conf

dan mulai mengelola layanan, jalankan

sudo sysv-rc-conf

Yang akan memunculkan jendela interaktif seperti ini

enter image description here

Anda dapat menavigasi lebih jauh melalui halaman menggunakan Ctrl+n untuk halaman berikutnya dan Ctrl+p untuk halaman sebelumnya. Anda dapat mengaktifkan dan menonaktifkan layanan dengan memilih SPACEpada runlevel yang diinginkan.

Jobs-Admin

Alternatif lain akan menjadi Jobs-Admin dengan menginstal melalui

sudo apt-get install jobs-admin

Yang juga menyediakan GUI seperti ini

jobs-admin preview

Untuk menunjukkan lebih banyak pekerjaan, Anda harus mencentang Tampilkan Pekerjaan yang Dilindungi dari menu.

chkconfig

Dan pilihan ketiga adalah chkconfig,

sudo apt-get install chkconfig

Ini dapat digunakan melalui CLI chkconfig, menunjukkan daftar pekerjaan On / Off. Juga kita dapat melihat layanan sistem menggunakan chkconfig –list

Layanan dapat diaktifkan menggunakan

chkconfig <service> on

Layanan dapat dimatikan menggunakan

chkconfig <service> off

Dan kita bahkan dapat menambahkan layanan kita sendiri, menggunakan skrip init yang tepat dengan judul yang tepat.

chkconfig --add <service>

pembaruan-rc.d

Dan opsi lain bisa dirujuk disini update-rc.d , dijelaskan secara singkat sini.

Perhatikan bahwa untuk Ubuntu Server 12.04, update-rc.d  digunakan sebagai pengganti chkconfig.


121
2018-06-28 18:00



di server ubuntu: Package chkconfig is not available, but is referred to by another package. - pwned
@pwned Anda bebas mengedit dan memposting info terbaru tentang edisi server.Terima kasih. - atenz
Saya melakukan seperti yang Anda sarankan, sekarang terserah untuk peer review. - pwned
pekerjaan-admin tidak memungkinkan untuk mengganti pekerjaan (Ubuntu 14.04), menghasilkan laporan kerusakan sebagai gantinya ;-) - Sadi
sysv-rc-conf tidak cocok untuk digunakan dengan sistem pemula atau sistem, ini hanya berlaku untuk sistem rc Sistem 5 lama, yang belum menjadi default di Ubuntu Linux selama hampir satu dekade. Debian Bug # 791689 mengakui ini dan pertanyaan mengapa belum ditandai sebagai bertentangan dengan systemd. - JdeBP


Bagi kita yang menjalankan Ubuntu melalui ssh, saya pikir pilihan terbaik adalah rcconf - program berbasis teks:

sudo apt-get install rcconf
sudo rcconf

alt text

Navigasi dengan tombol tab dan panah, tekan bilah spasi untuk mengaktifkan / menonaktifkan. Perubahan bersifat permanen di seluruh proses ulang.

Screenshot dipinjam dari blogpost ini, yang juga menunjukkan sysv-rc-conf - alat serupa yang juga memungkinkan Anda mengatur runlevel. (Bagi mereka yang kebetulan cukup peduli tentang runlevels untuk ingin mengubahnya :)

Sayangnya, rcconf tidak berfungsi dengan pemula (layanan yang terdaftar di /etc/init/*), hanya dengan mekanisme tradisional (ls -l /etc/init.d/* - yang bukan merupakan tautan simbolis).

Untungnya, banyak layanan yang relevan ketika masuk ke server (Apache, Tomcat, mdadm, boinc-client ...) belum dipindahkan ke pemula.


48
2018-01-06 18:44



Apakah ini masih bekerja dengan pemula? - oKtosiTe
Sayangnya tidak ada. Tetapi ia telah bekerja untuk semua kasus yang ingin saya ubah - pekerjaan baru tampaknya sebagian besar adalah hal-hal yang tidak ingin saya nonaktifkan - jam perangkat keras, log daemon, jaringan, dll. (Pada server Ubuntu, setidaknya). Tapi itu sesuatu yang harus diperhatikan (saya tidak :), saya telah memperbarui posting. - j-g-faustus
Sayangnya mysql dikonversi menjadi kaya baru. Dan itulah layanan yang hanya saya gunakan ketika saya melakukan beberapa proyek. - MestreLion
Ada bug dengan rcconf pada Ubuntu 12.04 yang mencegah program dimulai. Untuk mengatasi masalah Anda perlu menginstal paket dialog. - devius
Sejak jawaban ini ditulis, update-rc.d telah diubah, dan beberapa fungsi yang tidak lagi digunakan telah dihapus. Debian bug # 727735 mencatat bahwa rcconf tidak diubah untuk dicocokkan. Dan tidak, rcconf tidak bekerja dengan systemd baik, sehingga tidak berlaku untuk salah satu sistem init default untuk Ubuntu Linux selama dekade terakhir. - JdeBP


Saya menemukan bahwa ada alat GUI ini, sesuatu seperti BUM tetapi kompatibel dengan Upstart:

  • Jobs-Admin

    sudo apt-get install jobs-admin
    

18
2018-05-21 10:27



Tapi itu terlalu sederhana, dan tidak memungkinkan untuk mengubah "pekerjaan yang dilindungi" (apa itu jobbs? Apple memiliki Jobs, sistem operasi memiliki daemon!) - kakaz
Saya bahkan tidak mengizinkan untuk mengubah "pekerjaan yang tidak terlindungi" (Ubuntu 14.04), menghasilkan laporan kerusakan sebagai gantinya ;-) - Sadi


Mengedit file konfigurasi upstart yang ada (seperti yang dijelaskan di atas) bukanlah ide yang bagus. Paket yang diperbarui dapat memberikan konfigurasi yang diperbarui, dan Anda harus mengulangi perubahan Anda berulang kali.

Dengan melihat man 5 init satu akan menemukan solusi yang lebih tepat: menggunakan konfigurasi override. Contoh singkat: Katakanlah kita memiliki layanan yang disebut "foobar", jadi akan ada file yang disebut /etc/init/foobar.conf dengan konfigurasi upstartnya. Sekarang Anda tidak ingin menghapus file itu, atau memodifikasinya - tetapi Anda tidak ingin layanan ini dijalankan? Jadi tempatkan sebuah mengesampingkan file di sebelahnya: /etc/init/foobar.override, berisi (opsional header dengan deskripsi dan) sebagai gantinya start on / stop on garis Anda menempatkan garis dengan satu kata: manual. Dengan cara ini Anda mengatakan upstart pada dasarnya menggunakan foobar.conf, tetapi mengganti definisi startup untuk hanya memulai layanan itu ketika ditegakkan secara manual (via service foobar start dalam contoh kita).


12
2018-06-30 20:27





Ada juga yang Manajer Boot-Up.

Untuk memasang: sudo apt-get install bum

Info lebih lanjut: http://www.marzocca.net/linux/bum.html

enter image description here


8
2018-05-20 14:47



Jangan lupa untuk memeriksa tombol "Advanced". - not2qubit