Ubuntu menggunakan Upstart
bukan init
sistem tradisional . Pemula lebih kuat daripada init, tetapi sedikit lebih rumit daripada init
.
Pemula, sebaliknya, berbasis acara. "Peristiwa" dapat berupa sesuatu seperti "booting" ... atau bisa lebih spesifik, seperti "jaringan siap digunakan sekarang". Anda dapat menentukan skrip mana yang bergantung pada acara mana. Apa pun yang tidak menunggu suatu acara dapat berjalan setiap kali ada CPU yang tersedia.
Sistem berbasis peristiwa ini memiliki keuntungan lain: Anda secara teoritis dapat menggunakannya bahkan setelah sistem aktif dan berjalan. Pemula akhirnya dijadwalkan untuk mengambil alih tugas-tugas seperti atau memasukkan perangkat eksternal seperti thumb drive (saat ini ditangani oleh udev dan hal), atau menjalankan program pada waktu tertentu (saat ini ditangani oleh cron).
Seperti yang harus Anda ketahui sekarang, daemon mati (yang tidak berjalan saat startup) mungkin hidup dan dimulai karena suatu peristiwa.
Ubuntu memiliki / etc / init, untuk Upstart, dan /etc/init.d, untuk file SysV lama. Beberapa file di dalamnya adalah skrip SysV Init biasa yang belum dimigrasi. Tetapi beberapa layanan yang telah bermigrasi memelihara tautan dari /etc/init.d ke / lib / init / upstart-job. Jika Anda menjalankan salah satu dari itu, itu berhasil, tetapi mencetak peringatan terlebih dahulu:
Daripada menggunakan skrip init melalui /etc/init.d, gunakan utilitas layanan (8), mis service mysql restart
Karena skrip yang Anda coba panggil telah dikonversi ke pekerjaan pemula, Anda juga dapat menggunakan utilitas restart (8), misalnya restart mysql.
Pada mesin pemula, init berasal dari pemula. Alih-alih menjalankan skrip rc master yang memanggil skrip untuk runlevel tertentu, init Upstart mengambil pekerjaan dari direktori pekerjaannya.
Sekarang kita tahu tidak ada cara sederhana untuk membuat daftar daemon autostart, Anda harus membuat daftar semua daemon dan memeriksanya satu per satu. Daemon dapat dimulai oleh init
atau oleh upstart
atau bahkan oleh acara selanjutnya.
Cara paling sederhana untuk mendapatkan daftar ini adalah menjalankan perintah ini di shell:
initctl show-config
Outputnya terlihat seperti ini:
...
hostname
start on startup
udevtrigger
start on ((startup and started udev) and not-container)
tty2
start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...
Beberapa item seperti yang pertama sangat sederhana, hostname
dimulai saat startup. Tapi barang-barang lain mungkin terlihat lebih rumit. (Tapi untungnya bisa dibaca manusia :-))
chkconfig --list
akan bekerja dengan benar?on
berarti bahwa layanan sedang berjalan di runlevel itu, dan layanan itu akan secara otomatis mulai ketika sistem boot.