Saya mencoba menggunakan cron untuk mengotomatiskan pembaruan sistem saya. Anda dapat melihat crontab saya, perintah, dan kesalahan yang dihasilkan di bawah ini.
Ketika saya menjalankan upgrades.sh sebagai root, skrip berjalan dengan baik. Ketika cron menjalankannya, apt-get -y update
tidak ada masalah, tetapi aptitude -y safe-upgrade
gagal. Saya menduga kesalahan ini: debconf: (This frontend requires a controlling tty.)
karena ada pembaruan kernel yang pada gilirannya memperbarui grub, yang mengharuskan saya secara eksplisit mengatakan tidak apa-apa untuk menimpa /boot/grub/menu.lst
. Tapi saya tidak mengerti kesalahan jalur. Dan saya ingin pembaruan yang tidak memerlukan pengawasan saya untuk pergi.
Saya telah membaca pertanyaan ini dan ini belum merupakan solusi yang dapat diterimaunattended-upgrades
, dan akhirnya saya dapat menggunakannya, tetapi mengapa saya tidak dapat menggunakan cron? Sepertinya itu harus sangat sederhana, dan lebih linuxy.
Crontab
root@daedalus:~/bin# crontab -l
# m h dom mon dow command
45 06 * * * ~/bin/upgrades.sh
upgrade.sh
root@daedalus:~/bin# cat upgrades.sh
#!/bin/bash
/usr/bin/apt-get -y update
/usr/bin/aptitude -y safe-upgrade
Kesalahan
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin:
Fetched 37.6MB in 4min 23s (143kB/s)
dpkg: warning: 'ldconfig' not found on PATH.
dpkg: warning: 'start-stop-daemon' not found on PATH.
dpkg: warning: 'update-rc.d' not found on PATH.
dpkg: 3 expected program(s) not found on PATH.
NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
A package failed to install. Trying to recover:
dpkg: warning: 'ldconfig' not found on PATH.
dpkg: warning: 'start-stop-daemon' not found on PATH.
dpkg: warning: 'update-rc.d' not found on PATH.
dpkg: 3 expected program(s) not found on PATH.
NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
Reading package lists...
Building dependency tree...
Reading state information...
Reading extended state information...
Initializing package states...
Writing extended state information...
PATH=...
dalam file, mis.~/.env
, Dan mengambilnya dari setiap skrip yang Anda gunakan di. ~/.env
dekat bagian atas skrip. Kemudian jika Anda mengubah,PATH
Anda hanya perlu mengedit satu file. 2) Jika Anda memasukkannyacrontab
, itu berarti Anda tidak perlu mengedit semua skrip cron Anda, tetapi Anda akan memiliki dua tempat untuk mengedit jika Anda ingin mengubahPATH
(misalnya~/.bashrc
dancrontab
). Mana yang lebih baik terserah Anda.cron
kode sumber tidak mengatakan apa itu. Secara teori itu bisa saja memaksa lingkungan yang konsisten sehingga Anda dapat menyalin crontab dari satu pengguna ke pengguna lain, tetapi hanyaPATH
diubah, sehingga tidak bisa menjadi alasannya.Meskipun masalah utama Anda telah dijawab, sepertinya Anda mendapatkan peringatan debconf karena Anda menjalankan apt-get tanpa tty interaktif. Untuk menghilangkan pesan-pesan ini, Anda dapat mengatur variabel lingkungan ini:
sumber
Ada halaman wiki komunitas: Alasan mengapa crontab tidak berfungsi . Dalam hal ini, sepertinya penyebabnya adalah variabel lingkungan terbatas cron. Bisakah Anda menjalankan ini dari skrip shell di /etc/cron.daily?
sumber
Dari CronHowto :
Tetapi pada kenyataannya, semuanya tampak baik-baik saja melakukan hal yang sama seperti Anda .... Dari mana Anda mengambil kesalahan itu?
CRONTAB:
NASKAH:
CATATAN:
sumber