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
menambahkan layanan baru ke startup, yang bertujuan pada /etc/init.d
folder dan isinya.
Yang lain yang saya temukan adalah mengedit .conf
file di /etc/init
folder.
Apa cara yang disarankan untuk mengaktifkan / menonaktifkan / menambah layanan dan mengapa?
Bisakah Anda memberikan contoh singkat antipeluru singkat tentang cara menambahkan layanan di Ubuntu dan mengaktifkan dan menonaktifkannya?
chkconfig
adalah apa yang Anda cari.autostart
manifes atau*.service
file di beberapa lokasi, serta diinit.d
ataucrontab
. Lihat: unix.stackexchange.com/a/525845/43233Jawaban:
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 sementara (Tidak mengaktifkan / menonaktifkannya untuk booting di masa mendatang), 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, jika diaktifkan / dijalankan dinonaktifkan / TIDAK berjalan.).sudo service apache2 restart
(Akan MEMULAI layanan. Ini paling umum 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 mengeksekusi untuk layanan, itu akan menunjukkan kepada Anda semua opsi yang tersedia untuk layanan tertentu.) Aspek ini bervariasi tergantung pada layanan, misalnya, dengan MySQL hanya akan menyebutkan bahwa itu tidak memiliki parameter. Untuk layanan lain seperti layanan jaringan, akan disebutkan daftar kecil dari semua opsi yang tersedia.SYSTEMD
Dimulai dengan Ubuntu 15,04, Pemula akan ditinggalkan karena Systemd. Dengan Systemd untuk mengelola layanan, kami dapat melakukan hal berikut:
systemctl start SERVICE
- Gunakan untuk memulai layanan. Tidak bertahan setelah rebootsystemctl stop SERVICE
- Gunakan untuk menghentikan layanan. Tidak bertahan setelah rebootsystemctl restart SERVICE
- Gunakan untuk memulai kembali layanansystemctl reload SERVICE
- Jika layanan mendukungnya, itu akan memuat ulang file konfigurasi yang terkait dengannya tanpa mengganggu proses apa pun yang menggunakan layanan ini.systemctl status SERVICE
- Menunjukkan status layanan. Memberitahu apakah suatu layanan sedang berjalan.systemctl enable SERVICE
- Menyalakan layanan, pada reboot berikutnya atau pada acara mulai berikutnya. Ini berlanjut setelah reboot.systemctl disable SERVICE
- Menonaktifkan layanan pada boot ulang berikutnya atau pada perhentian berikutnya. Ini berlanjut setelah reboot.systemctl is-enabled SERVICE
- Periksa apakah suatu layanan saat ini dikonfigurasi untuk memulai atau tidak pada reboot berikutnya.systemctl is-active SERVICE
- Periksa apakah suatu layanan saat ini aktif.systemctl show SERVICE
- Tampilkan semua informasi tentang layanan ini.sudo systemctl mask SERVICE
- Menonaktifkan sepenuhnya 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 memulai layanan secara manual.UPSTART (Tidak Digunakan Sejak 15.04)
Jika kami ingin menggunakan cara Pemula resmi (Perhatikan bahwa, untuk saat ini, tidak semua layanan telah dikonversi ke Pemula), kami dapat menggunakan perintah berikut:
status SERVICE
- Ini akan memberi tahu kami jika layanan yang dikonversi sedang berjalan atau tidak. Perhatikan bahwa ini usang dalam mendukungstart
,stop
,status
&restart
. Ini juga akan memberi tahu kami jika layanan belum dikonversi ke pemula:Layanan yang dikonversi biasanya akan mengeluarkan status saat ini (Memulai, Menjalankan, Menghentikan ...) dan memproses ID. Layanan yang tidak dikonversi akan memberikan kesalahan tentang pekerjaan yang tidak dikenal .
Beberapa pintasan hanya dapat bekerja dengan
service
perintah di atas tetapi tidak dengan perintah di bawah kecuali jika 100% dikonversi ke layanan pemula:MULAI -
sudo start mysql
BERHENTI -
sudo stop mysql
Restart -
sudo restart mysql
STATUS -
sudo status smbd
Mengaktifkan / Menonaktifkan layanan
Untuk mengganti layanan dari memulai atau berhenti secara permanen, Anda perlu:
di mana bait
manual
akan menghentikan Pemula dari memuat layanan secara otomatis pada boot berikutnya. Setiap layanan dengan.override
akhiran akan diutamakan daripada file layanan asli. Anda hanya akan dapat memulai layanan secara manual setelahnya. Jika Anda tidak ingin ini maka cukup hapus.override
. Sebagai contoh:Akan menempatkan layanan MySQL ke
manual
mode. Jika Anda tidak menginginkan ini, maka Anda bisa melakukannyadan Reboot untuk memulai layanan lagi secara otomatis. Tentu saja untuk mengaktifkan layanan, cara yang paling umum adalah dengan menginstalnya. Jika Anda menginstal Apache, Nginx, MySQL atau yang lain, mereka secara otomatis mulai setelah menyelesaikan instalasi dan akan mulai setiap kali komputer melakukan boot. Penonaktifan, seperti yang disebutkan di atas, akan menggunakan layanan ini
manual
.sumber
.service
ke setiap perintah?systemctl mongod status
bekerja dengan baik.systemd
seperangkat perintah bekerja memperlakukan pada Ubuntu 18.04.Saat ini sebenarnya ada tiga cara berbeda untuk perangkat lunak untuk memulai sebagai layanan di Ubuntu, SysV , Upstart dan systemd . Layanan didefinisikan di sini sebagai program yang dijalankan oleh sistem di latar belakang, sebagai lawan dari yang dimulai dan dijalankan langsung oleh pengguna.
SysV
Cara tradisional untuk memulai layanan di Linux adalah dengan menempatkan skrip
/etc/init.d
, dan kemudian menggunakanupdate-rc.d
perintah (atau dalam distro berbasis RedHatchkconfig
) untuk mengaktifkan atau menonaktifkannya.Perintah ini menggunakan beberapa logika yang agak rumit untuk membuat symlink
/etc/rc#.d
, yang mengontrol urutan layanan awal. Jika dijalankan,ls /etc/rc2.d
Anda dapat melihat urutan layanan yang akan dimatikan dengan nama file sepertiK##xxxx
dan mulai dengan nama fileS##xxxx
. The##
diS##xxxx
berarti "awal order" untuk layananxxxx
. Sebaliknya,##
inK##xxxx
berarti perintah penghapusan untuk layananxxxx
.Satu masalah utama dengan SysV adalah ketika 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 dimanfaatkan sepenuhnya. Ini adalah alasan utama mengapa Upstart dibuat.
Pemula
Pemula menggunakan file definisi pekerjaan
/etc/init
untuk menentukan acara apa yang harus dimulai layanan. Jadi, ketika sistem boot, pemula memulai berbagai peristiwa, dan kemudian dapat memulai beberapa layanan secara paralel. Ini memungkinkan mereka untuk sepenuhnya memanfaatkan sumber daya sistem, misalnya, dengan memulai layanan terikat disk sementara layanan terikat CPU lainnya berjalan, atau saat jaringan sedang menunggu untuk ditugaskan alamat IP dinamis.Anda dapat melihat semua file pekerjaan pemula dengan menjalankan
ls /etc/init/*.conf
Biarkan saya berhenti di sini dan katakan bahwa jika Anda tidak tahu apa itu layanan, atau apa fungsinya, JANGAN nonaktifkan!
Tidak semua layanan telah dikonversi menjadi pemula. Saat bekerja di tim server di Canonical selama beberapa bulan terakhir, saya telah bekerja pada sejumlah file pekerjaan yang dikonversi, dan bagian terbaiknya adalah ia memungkinkan seseorang untuk menyingkirkan semua skrip "sihir" dan hanya memasukkan beberapa perintah di sana-sini untuk menentukan dengan tepat bagaimana memulai layanan, dan tidak lebih. Tetapi untuk saat ini, hanya sedikit layanan jaringan tradisional, seperti squid dan samba , yang telah dikonversi.
Apakah layanan berbasis pemula?
Untuk mengetahui apakah suatu layanan berbasis pemula, Anda dapat menjalankan perintah status:
Jika ini adalah pekerjaan pemula , itu akan menunjukkan ini:
Tetapi jika tidak, Anda akan melihat sesuatu yang lebih seperti ini:
Dalam hal ini,
apache2
belum dikonversi menjadi kaya baru . Jadi, untuk menonaktifkanapache2
Anda jalankan sajaNonaktifkan 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
kondisinya. Katakanlah Anda ingin menginstal samba , tetapi tidak memulai secara otomatis. Berikut ini adalah file pekerjaan (dalam bentuk natty):Untuk menonaktifkan samba , Anda cukup meletakkan
#
"start on local-filesystems
" di depan . Perhatikan bahwa sementara itu tidak akan mulai kembali saat boot, Anda masih harus menghentikannya kali iniNamun, jika Anda tidak ingin samba memulai, saya sarankan untuk menghapus paketnya. Namun, jika Anda ingin menginstalnya, tetapi tidak dapat dijalankan, Anda juga dapat melakukan:
Nonaktifkan layanan menggunakan start / stop stanza (per 11.04)
Dimulai dengan versi kaya baru yang akan di 11.04, ada kata kunci baru yang menonaktifkan
start on
danstop on
bait:manual
. Jadi cara lain untuk menonaktifkan layanan pada 11,04 adalah dengan melakukan:Anda dapat membuat
override
file untuk menonaktifkan layanan tanpa mengedit definisi pekerjaan sama sekali, hanya dengan memasukkanmanual
kata kunci di dalamnya.sumber
echo manual >> /etc/init/<service>.override
lebih disukai karena meninggalkan filke .conf asli utuh. Bagaimanapun, ini masih memalukan bahwa dasar mengaktifkan / menonaktifkan membutuhkan waktu 3 tahun untuk dikembangkan, dan tidak ada GUI untuk itu./etc/init/ssh.conf
ada tetapistatus ssh
danstatus sshd
keduanya mengatakan "Pekerjaan tidak dikenal". Jawaban ini sepertinya tidak membahas kemungkinan seperti itu?status ssh
memberi saya 'Pekerjaan tidak dikenal', juga, tetapiservice ssh status
bekerja untuk sayasysv-rc-conf
Coba gunakan sysv-rc-conf
dan untuk mulai mengelola layanan, jalankan
Yang akan memunculkan jendela interaktif seperti ini
Anda selanjutnya dapat menavigasi halaman menggunakan
Ctrl+n
untuk halaman berikutnya danCtrl+p
untuk halaman sebelumnya. Anda dapat mengaktifkan dan menonaktifkan layanan dengan memilihSPACE
runlevel yang diinginkan.Pekerjaan-Admin
Alternatif lain adalah Jobs-Admin dengan menginstal melalui
Yang juga menyediakan GUI seperti ini
Untuk menampilkan lebih banyak pekerjaan, Anda harus mencentang Tampilkan Pekerjaan yang Dilindungi dari menu-nya.
chkconfig
Dan opsi ketiga adalah chkconfig ,
Ini dapat digunakan melalui CLI
chkconfig
, menampilkan daftar pekerjaan On / Off. Kami juga dapat melihat layanan sistem menggunakanchkconfig –list
Layanan dapat dihidupkan menggunakan
Layanan dapat dimatikan menggunakan
Dan kita bahkan dapat menambahkan layanan kita sendiri, menggunakan skrip init yang tepat dengan judul yang tepat.
perbarui-rc.d
Dan opsi lain dapat disebut di sini pembaruan-rc.d , dijelaskan secara singkat di sini .
Perhatikan bahwa untuk Ubuntu Server 12.04,
update-rc.d
digunakan sebagai ganti chkconfig.sumber
Package chkconfig is not available, but is referred to by another package.
Bagi kita yang menjalankan Ubuntu lebih dari ssh, saya pikir opsi terbaik adalah
rcconf
- program berbasis teks:Navigasi dengan tombol tab dan panah, tekan bilah spasi untuk mengaktifkan / menonaktifkan. Perubahan bertahan di seluruh restart.
Cuplikan layar dipinjam dari blogpost ini , yang juga menunjukkan
sysv-rc-conf
- alat serupa yang juga memungkinkan Anda mengatur runlevel. (Bagi mereka yang cukup peduli dengan runlevel ingin mengubahnya) :)Sayangnya, rcconf tidak berfungsi dengan pemula (layanan yang terdaftar di
/etc/init/*
), hanya dengan mekanisme tradisional (ls -l /etc/init.d/*
- yang tidak memiliki tautan simbolis).Untungnya, banyak layanan yang relevan ketika melakukan ssh ke server (Apache, Tomcat, mdadm, boinc-client ...) belum dipindahkan ke pemula.
sumber
update-rc.d
diubah, dan beberapa fungsinya yang sudah usang dihapus . Bug Debian # 727735 mencatat bahwa rcconf tidak diubah agar cocok. Dan tidak, rcconf juga tidak bekerja dengan systemd, jadi tidak berlaku untuk salah satu dari sistem init default untuk Ubuntu Linux selama dekade terakhir.Saya menemukan bahwa ada alat GUI ini, sesuatu seperti BUM tetapi kompatibel dengan pemula:
Pekerjaan-Admin
sumber
Mengedit file konfigurasi pemula yang ada (seperti dijelaskan di atas) bukan 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", sehingga akan ada file yang dipanggil/etc/init/foobar.conf
dengan konfigurasi pemula. Sekarang Anda tidak ingin menghapus file itu, atau memodifikasinya - tetapi Anda juga tidak ingin layanan ini dijalankan? Jadi menempatkan menimpa file selanjutnya untuk itu:/etc/init/foobar.override
, mengandung (opsional header dengan deskripsi dan) sebaliknyastart on
/stop on
baris Anda menempatkan garis dengan satu kata:manual
. Dengan cara ini Anda memberi tahu pemula untuk menggunakan dasarnyafoobar.conf
, tetapi mengabaikan definisi startup untuk hanya memulai layanan itu ketika diberlakukan secara manual (melaluiservice foobar start
dalam contoh kami).sumber
Ada juga Boot-Up Manager .
Untuk memasang:
sudo apt-get install bum
Info lebih lanjut: http://www.marzocca.net/linux/bum.html
sumber
Saya menggunakan Stacer. Ini menunjukkan layanan dan proses juga. Kotak alat sistem GUI lengkap. https://github.com/oguzhaninan/Stacer
sumber