Saya memiliki skrip yang secara otomatis mengaktifkan wifi saya tanpa menggunakan networkmanager, tetapi saya tidak tahu cara menjalankan skrip sebagai root ketika sistem sedang booting. Bagaimana cara membuat skrip berjalan secara otomatis saat boot?
59
autostart
manifes atau dalam*.service
file di beberapa lokasi, serta diinit.d
ataucrontab
. Lihat ini: unix.stackexchange.com/a/525845/43233Jawaban:
Tempatkan skrip yang ingin Anda jalankan di direktori /etc/init.d dan buat skrip tersebut dapat dieksekusi.
Setelah selesai, buat tautan simbolis di direktori run level yang ingin Anda gunakan, misalnya jika Anda ingin menjalankan program di grafis runlevel 2, runlevel default untuk Ubuntu, Anda akan meletakkannya di
/etc/rc2.d
direktori. Anda tidak bisa menempatkannya di direktori, Anda harus menandakan kapan itu akan berjalan dengan menunjukkan startup dengan "S" dan urutan eksekusi penting. Tempatkan setelah semua yang ada di direktori dengan memberikannya angka yang lebih tinggi.Jika skrip terakhir yang dijalankan adalah
rc.local
dan diberi namaS99rc.local
maka Anda perlu menambahkan skrip Anda sebagaiS99myscript
.Setiap
/etc/rc*.d
direktori yang kompatibel mundur memiliki tautan simbolis ke/etc/init.d/
direktori.sumber
/etc/rc2.d
, bukanrc3.d
seperti yang ditunjukkan dalam contoh. Tampaknyarc2.d
bukan hanya level run grafis.cd /etc/rc`cat /etc/init/rc-sysinit.conf | grep "env DEFAULT_RUNLEVEL" | grep -oP "\d"`.d
akan membawa Anda ke/etc/rc?.d
direktori mana yang sesuai dengan runlevel default Anda.rc.local
dan diberi namaS99rc.local
maka Anda perlu menambahkan skrip Anda sebagaiS99myscript
.". Apakah maksud Anda: "Jika skrip terakhir yang dijalankan adalahmyscript
dan diberi namaS99myscript
maka Anda perlu menambahkan skrip Anda sebagaiS99myscript
." ???Sertakan perintah dalam
/etc/rc.local
. Ini akan dijalankan setiap kali runlevel pengguna berubah.Catatan: Anda harus meletakkan perintah sebelum baris terakhir di /etc/rc.local yang berisi: "exit 0".
sumber
/etc/rc.local
yang berisi:exit 0
/etc/rc.local
di ubuntu 15.10 berkomentar bahwa "Script ini dijalankan di akhir setiap runlevel multiuser." Jadi skrip bisa dijalankan beberapa kali saat boot, kan?Gunakan
crontab
opsi untuk membuat skrip Anda berjalan setelah reboot,Anda dapat melakukannya dengan menambahkan
@reboot
kode di cronBuka crontab oleh pengguna root:
Tambahkan catatan berikutnya di bagian bawah:
Itu akan melakukan apa yang Anda inginkan.
sumber
crontab -e
, yang tidak memerlukan hak pengguna super? Saya bertanya-tanya, apakah bisa menjalankan skrip yang perlu dijalankan sebagai root.sudo crontab -e
untuk membuatnya menjalankan skrip sebagai root selama startup./var/run/crond.reboot
, jika tidak, tidak akan menjalankan tugasIni bekerja untuk saya di Ubuntu 17.04:
buat file skrip tur seperti
disable_cdrom
di lokasi Anda. Dalam kasus sayahome/yterle/disable_cdrom
. Dalam hal ini:membuatnya bisa dieksekusi
chmod 775 disable_cdrom
/etc/systemd/system
dan buat di sanaservice
file. Sebagai contohsudo gedit /etc/systemd/system/disable_cdrom.service
disable_cdrom.service
Penampilan saya seperti ini:Di mana
ExecStart
poin untuk menjalankan skrip Anda/bin/sh
Kemudian jalankan
systemctl enable disable_cdrom.service
untuk mengaktifkan layanan systemdsumber
systemctl enable disable_cdrom.service
Sertakan file Script Anda
/etc/init.d/
dengan izin Executable kemudian tetapkan level run yang berbedaIni akan menempatkan skrip Anda pada boot startup.
sumber
update-rc.d script-name enable
?Buat file teks seperti ini di
/etc/cron.d/
:(Anda harus mengganti
yourScriptPath
dengan path ke skrip yang ingin Anda jalankan.)sumber
Hati-hati dengan menambahkan skrip ke
rc.local
- Saya terjebak di layar splash karena itu. Menekan Alt+ F1mengungkapkan apa yang terjadi di balik layar splash (skrip inrc.local
sedang berjalan).Saya tidak bisa keluar dari situ.
tidak ada yang berhasil.
Saya harus mem-boot dari image Ubuntu USB, menemukan
rc.local
, memberi diri saya izin untuk file dan menghapusnya. Saya kira Anda tidak boleh melakukan hal-hal jika Anda tidak tahu apa yang Anda lakukan.sumber