Membuat skrip dijalankan saat boot, bukan saat login

11

Bagaimana saya bisa menjalankan skrip tertentu (lebih disukai bukan sebagai pengguna super) setiap kali mesin boot, tetapi sebelum login. Ini bisa menjadi hal terakhir yang dijalankan saat boot. Saya kebanyakan hanya ingin agar skrip berfungsi meskipun tidak ada pengguna yang login.

Malabarba
sumber
1
@bruce lihat ini -> askubuntu.com/questions/9382/…
hhlp
1
Anda dapat menggunakan pemula atau cron atau mungkin banyak metode lain. Satu hal penting yang perlu diketahui adalah juga seberapa awal hal itu dapat berjalan. Misalnya apakah perlu sistem file tertentu untuk dipasang, apakah perlu X untuk dijalankan, apakah perlu DBus, apakah perlu jaringan — atau lebih secara umum: apakah perlu ada sumber daya yang ada?
JanC
@JanC: Ya sebenarnya, ini membutuhkan hampir semua yang Anda minta (kecuali untuk X), itulah sebabnya saya ingin itu menjadi hal terakhir yang harus dijalankan. Sebenarnya tidak ada alasan untuk menjalankannya lebih awal juga.
Malabarba
@ hhlp: Keren, terima kasih. Tetapi seberapa awal skrip akan berjalan jika saya menggunakan metode itu? Seperti yang saya sebutkan di atas, yang terbaik adalah salah satu hal terakhir (sebelum masuk).
Malabarba
Yah, masuk tidak memerlukan jaringan, kecuali jika Anda ingin masuk ke server terminal dan / atau Anda memiliki $ HOME di jaringan berbagi ... ;-)
JanC

Jawaban:

8

Saya akan merekomendasikan menggunakan cron. Nilai waktu khusus dari @rebootakan menelurkan pekerjaan Anda di setiap reboot sebagai pengguna Anda. Misalnya, jalankan crontab -edan gunakan:

@reboot /home/yourself/bin/some_script_to_run

Untuk detail lebih lanjut tentang format waktu khusus, lihat man 5 crontab

Kees Cook
sumber
Terima kasih, sepertinya cukup mudah. Ini tidak bergantung pada pengguna mana yang menciptakan cronjob bukan? Ini berjalan di akhir boot terlepas dari login?
Malabarba
Ini benar-benar tergantung pada siapa yang menciptakan cronjob - itu akan berjalan sebagai pengguna itu. Tapi itu tidak bergantung pada mereka untuk login.
Kees Cook
Perlu diingat bahwa ini menjalankan skrip ketika daemon cron dijalankan jadi ada kemungkinan bahwa sistem lain yang Anda butuhkan belum siap.
PhoneixS
4

Salah satu kemungkinan adalah menggunakan Pemula. Ini memungkinkan Anda menentukan kapan Anda ingin menjalankan skrip Anda dalam hal dependensi, misalnya "ketika sistem file di-mount dan antarmuka jaringan eth0sudah aktif dan berjalan". Buat file /etc/init/bruce_script.conf(Anda perlu membuat file sebagai root) yang berisi sesuatu seperti ini:

description "Bruce's boot script"
start on filesystem and net-device-up IFACE=eth0
task
exec su -c '/home/bruce/script' bruce

Baca dokumentasi pemula untuk informasi lebih lanjut, khususnya init(5)halaman manual untuk daftar apa yang dapat Anda masukkan ke file konfigurasi itu.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Apakah ada daftar acara pemula yang dapat digunakan?
Berjemur
@ Markus: bukan yang saya tahu. Acara standar memiliki halaman manual di bagian 7 (jadi dpkg -L upstart |grep /man7/), dan Anda dapat melihat acara yang dipancarkan oleh dan digunakan sebagai pemicu dalam skrip yang ada di /etc/init.
Gilles 'SANGAT berhenti menjadi jahat'