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 menggunakan 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 /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 seperti K##xxxx
dan mulai dengan nama file S##xxxx
. The ##
di S##xxxx
berarti "awal order" untuk layanan xxxx
. Sebaliknya, ##
in K##xxxx
berarti perintah penghapusan untuk layanan xxxx
.
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:
status servicename
Jika ini adalah pekerjaan pemula , 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
Dalam hal ini, apache2
belum dikonversi menjadi kaya baru . Jadi, untuk menonaktifkan apache2
Anda jalankan saja
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
kondisinya. Katakanlah Anda ingin menginstal samba , tetapi tidak memulai secara otomatis. Berikut ini adalah file pekerjaan (dalam bentuk 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 meletakkan #
" start on local-filesystems
" di depan . Perhatikan bahwa sementara itu tidak akan mulai kembali saat boot, Anda masih harus menghentikannya kali ini
sudo service smbd stop
Namun, jika Anda tidak ingin samba memulai, saya sarankan untuk menghapus paketnya. 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 start / stop stanza (per 11.04)
Dimulai dengan versi kaya baru yang akan 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 dengan 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 memasukkan manual
kata kunci di dalamnya.