Saya memiliki satu perintah dalam /etc/rc.local
skrip saya yang seharusnya memulai pembaruan daemon untuk Tiny Tiny RSS selama startup, tetapi skrip tidak dieksekusi saat startup. Mengapa?
Seluruh file /etc/rc.local:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/sbin/start-stop-daemon -b -c www-data:www-data -S -x /usr/bin/php /var/www/ttrss/update_daemon2.php -- -quiet
exit 0
/etc/rc.local
dapat dieksekusi:
# ls -l /etc/rc.local
-rwxr-xr-x 1 root root 342 May 25 16:14 /etc/rc.local
/etc/init.d/rc.local
ada dan dapat dieksekusi:
# ls -l /etc/init.d/rc.local
-rwxr-xr-x 1 root root 801 Jul 27 2012 /etc/init.d/rc.local
/etc/init.d/rc.local
seharusnya dijalankan saat startup untuk runlevel ini:
# runlevel
N 2
# ls -l /etc/rc2.d/S99rc.local
lrwxrwxrwx 1 root root 18 Sep 22 2012 /etc/rc2.d/S99rc.local -> ../init.d/rc.local
Jika saya secara manual memanggil /etc/rc.local dari baris perintah, update_daemon dimuat ...
# /etc/rc.local
# ps ax | grep update_daemon2.php
2233 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
2234 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
... yang harus saya ingat untuk lakukan setiap kali server saya restart sampai masalah ini diperbaiki.
Pertanyaan serupa sudah ada, tetapi sejauh ini saya belum dapat menerapkan informasi tersebut ke dalam masalah spesifik saya.
Mengapa perintah di rc.local tidak dieksekusi saat startup?
requiretty
pengaturan. Saat Anda masuk, Anda menjalankan skrip di TTY tetapi selama boot sistem, skrip itu tidak ada di TTY. Tautan ini dapat membantu Anda shell-tips.com/2014/09/08/... Terima kasih.Jawaban:
rc.local
skrip keluar jika ada kesalahan terjadi saat menjalankan salah satu perintahnya (sebutkan-e
flag in#!/bin/sh -e
).Ada kemungkinan bahwa beberapa prasyarat tidak terpenuhi ketika Anda mencoba menjalankan perintah ketika
rc.local
eksekusi berlangsung, sehingga eksekusi perintah Anda gagal.Saya mengalami hal yang sama saat mengatur gubernur cpu secara manual dan gagal melakukannya
rc.local
. Inilah solusi khusus saya, yang digunakanupdate-rc.d
untuk membuat perintah Anda berjalan saat startup:myscript.sh
dalam direktori/etc/init.d
dengan tajuk:#!/bin/sh
sudo chmod +x /etc/init.d/myscript.sh
sudo update-rc.d myscript.sh defaults
Anda juga dapat memeriksa
/etc/network/if-up.d
skrip dan melihat apakah Anda dapat memicu perintah Anda saat jaringan dimulai.sumber
update-rc.d
Saya punya beberapa masalah serupa di rc.local tidak dieksekusi pada saat startup
sshades memberi saya jawaban berikut:
walaupun saya belum menguji solusinya saya pikir itu terdengar logis dan akan berhasil. Namun:
Saya juga menemukan solusi yang menambahkan skrip ke ./.config/autostart-scripts/ akan melakukan trik
sumber
rc.local
dimatikan, apa alternatifnya?coba
sudo sysv-rc-conf
dan periksa apakahrc.local
diaktifkansumber
sudo apt install sysv-rc-conf
rc.local
bahkan tidak ada dalam daftar layanan saya!Pastikan skrip rc.local dapat dieksekusi:
Kemudian, aktifkan:
Nyalakan ulang sistem atau mulai skrip secara manual dengan menjalankan:
Status layanan dapat ditampilkan dengan menjalankan:
sumber
rc-local
layanan.Kami memiliki masalah ini pada beberapa server yang di-host memuat aturan FW.
Pada kotak-kotak ini mereka reboot SANGAT cepat dan kami menemukan hanya meletakkan "sleep 1" di rc.local sebelum pernyataan beban tampaknya untuk memperbaiki masalah. Saya kira itu memberi sedikit waktu untuk antarmuka untuk menyelesaikan sebelum memuat aturan FW.
sumber
sleep 1
memecahkan masalah saya. Menarik Saya punya banyak server tetapi hanya satu yang memiliki masalah ini.Saya pernah mengedit
rc.local
dengan Notepad di Windows dan mulai memiliki masalah ini.Dalam hal ini, menggunakan editor teks yang mendukung Konversi EOL, seperti Notepad ++, untuk mengubah gaya EOL ke 'Unix', dapat menyelesaikannya.
Anda juga dapat melakukannya
:set ff=unix
di Vim.sumber
Saya menemukan dalam wadah Ubuntu lxc bahwa jika rc.local memiliki contoh shebang yang benar benar
gagal, tetapi jika Anda menghapus shebang itu berfungsi.
Tidak sampai ke dasar mengapa atau apa shell yang digunakannya saya pikir itu bom pada non-nol pertama juga. (Di Ubuntu lain menginstal shebang yang tepat tidak menjadi masalah)
sumber
Anda harus memastikan bahwa
/etc/rc.local
dieksekusi selama startup server dengan perintah:sudo systemctl enable rc-local.service
sumber