Bagaimana saya bisa menjalankan perintah setelah boot?
27
Saya ingin menjalankan perintah shell sederhana echo 1 > /proc/sys/kernel/sysrqdi setiap boot, untuk mengaktifkan kunci sysrq. Kapan saat boot ini harus dilakukan, dan di mana saya harus meletakkan skrip untuk melakukannya?
Saya mohon berbeda, @davidgo. Referensi yang Anda kutip sedikit usang: sementara crontab berfungsi, /etc/rc.local tidak pada systemddistro seperti Arch Linux. Dengan merujuk pada mereka, kita mungkin mengirim Demetri mengejar angsa liar. Beberapa pembaruan, kadang-kadang, perlu dilakukan.
MariusMatutiae
Jawaban:
37
Tergantung pada distro.
Jika Anda menggunakan distro yang berasal dari Debian, setidaknya ada dua tempat yang tepat, /etc/rc.local dan crontab. Anda dapat memanggil crontab sebagai root,
crontab -e
dan kemudian masukkan baris ini
@reboot /home/my_name/bin/my_command
di mana my_commandfile yang dapat dieksekusi ( chmod 755 my_command).
Atau, Anda dapat menempatkan garis seperti ini
/home/my_name/bin/my_command
di /etc/rc.local, dan ini akan dieksekusi terakhir. Bagaimanapun, tolong ingat Anda menggunakan lingkungan root, bukan milik Anda. Juga untuk alasan ini, yang terbaik adalah menggunakan jalur absolut.
Jika Anda menggunakan distro systemd (Arch Linux, Fedora 19, ...) opsi pertama (crontab) masih valid, sedangkan yang kedua (/etc/rc.local) tidak ada lagi. Dalam hal ini, Anda harus belajar cara memulai layanan yang akan dijalankan systemctl, tetapi ini mungkin lebih dari yang Anda tawar-menawar dengan pertanyaan sederhana Anda.
Bisakah Anda mengkonfirmasi ini untuk Fedora? Pencarian saya memberi tahu saya bahwa rc.local masih akan berjalan jika ada dan dapat dieksekusi, tetapi tidak diatur secara default. Saya merasakan konsekuensi yang mengganggu jika rc.local tidak berjalan! (Saya hanya bisa menemukan referensi untuk ini untuk Fedora 18 - forums.fedoraforum.org/showthread.php?t=291889 )
davidgo
Anda benar, di Fedora 19 Anda mungkin masih memilikinya, jika Anda benar-benar menginginkannya. Tapi itu tidak lagi dikemas, docs.fedoraproject.org/en-US/Fedora/16/html/Release_Notes/… bullet 3.2.4. Juga, itu tidak ada di Arch Linux sama sekali, jadi saya pikir aman untuk memasukkan peringatan tentang itu.
Jika sistem Anda menjalankan versi cronyang mendukungnya (khususnya Vixie cron), Anda dapat menggunakannya @rebootdalam pekerjaan cron.
Ini adalah salah satu dari 8 string khusus yang didukungnya.
Mengutip crontab(5)halaman manual (dari sistem Ubuntu 12.04 saya):
Alih-alih lima bidang pertama, satu dari delapan string khusus dapat muncul:
string meaning
------ -------
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".
Harap dicatat bahwa startup, sejauh @rebootyang berkaitan, adalah waktu ketika cron (8) daemon startup. Secara khusus, mungkin sebelum beberapa daemon sistem, atau fasilitas lainnya, adalah startup. Ini karena urutan urutan boot mesin.
Ini jauh dari menjadi satu - satunya cara untuk menjalankan sesuatu pada saat boot, tetapi ini merupakan alternatif.
Hampir semua varian Linux (akan kembali sangat lama) memiliki file /etc/rc.local yang berjalan saat startup - Anda bisa menambahkan perintah ke dalamnya.
Yang mengatakan, Anda bahkan tidak perlu melakukan itu. Cara "benar" adalah dengan memodifikasi / menambahkan baris kernel.sysrq = 1 ke /etc/sysctl.conf
systemd
distro seperti Arch Linux. Dengan merujuk pada mereka, kita mungkin mengirim Demetri mengejar angsa liar. Beberapa pembaruan, kadang-kadang, perlu dilakukan.Jawaban:
Tergantung pada distro.
Jika Anda menggunakan distro yang berasal dari Debian, setidaknya ada dua tempat yang tepat, /etc/rc.local dan crontab. Anda dapat memanggil crontab sebagai root,
dan kemudian masukkan baris ini
di mana
my_command
file yang dapat dieksekusi (chmod 755 my_command
).Atau, Anda dapat menempatkan garis seperti ini
di /etc/rc.local, dan ini akan dieksekusi terakhir. Bagaimanapun, tolong ingat Anda menggunakan lingkungan root, bukan milik Anda. Juga untuk alasan ini, yang terbaik adalah menggunakan jalur absolut.
Jika Anda menggunakan distro systemd (Arch Linux, Fedora 19, ...) opsi pertama (crontab) masih valid, sedangkan yang kedua (/etc/rc.local) tidak ada lagi. Dalam hal ini, Anda harus belajar cara memulai layanan yang akan dijalankan
systemctl
, tetapi ini mungkin lebih dari yang Anda tawar-menawar dengan pertanyaan sederhana Anda.sumber
@boot
tidak ada, hanya@reboot
debianhelp.co.uk/crontab.htmJika sistem Anda menjalankan versi
cron
yang mendukungnya (khususnya Vixie cron), Anda dapat menggunakannya@reboot
dalam pekerjaan cron.Ini adalah salah satu dari 8 string khusus yang didukungnya.
Mengutip
crontab(5)
halaman manual (dari sistem Ubuntu 12.04 saya):Ini jauh dari menjadi satu - satunya cara untuk menjalankan sesuatu pada saat boot, tetapi ini merupakan alternatif.
sumber
Hampir semua varian Linux (akan kembali sangat lama) memiliki file /etc/rc.local yang berjalan saat startup - Anda bisa menambahkan perintah ke dalamnya.
Yang mengatakan, Anda bahkan tidak perlu melakukan itu. Cara "benar" adalah dengan memodifikasi / menambahkan baris kernel.sysrq = 1 ke /etc/sysctl.conf
sumber