J'essaie d'utiliser cron pour automatiser les mises à jour de mon système. Vous pouvez voir mon crontab, mes commandes et les erreurs qui en résultent ci-dessous.
Lorsque j'exécute upgradees.sh en tant que root, le script fonctionne correctement. Lorsque cron l'exécute, apt-get -y update
ne pose aucun problème, mais aptitude -y safe-upgrade
échoue. Je devine cette erreur: debconf: (This frontend requires a controlling tty.)
c'est parce qu'il y a une mise à jour du noyau qui à son tour met à jour grub, ce qui nécessite que je dise explicitement que c'est correct d'écraser /boot/grub/menu.lst
. Mais je ne comprends pas les erreurs de chemin. Et j'aimerais que les mises à jour ne nécessitent pas ma supervision.
J'ai lu cette question et c'est une solution encore non acceptée deunattended-upgrades
, et je peux finir par l'utiliser, mais pourquoi ne puis-je pas utiliser cron? On dirait que ça devrait être vraiment simple, et plus linuxy.
Crontab
root@daedalus:~/bin# crontab -l
# m h dom mon dow command
45 06 * * * ~/bin/upgrades.sh
upgrades.sh
root@daedalus:~/bin# cat upgrades.sh
#!/bin/bash
/usr/bin/apt-get -y update
/usr/bin/aptitude -y safe-upgrade
les erreurs
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=...
un fichier, par exemple~/.env
, et le source à partir de chaque script que vous écrivez en utilisant. ~/.env
vers le haut du script. Ensuite, si vous changez votre,PATH
vous n'avez qu'à modifier un fichier. 2) Si vous le mettez dedanscrontab
, cela signifie que vous n'avez pas à éditer tous vos scripts cron, mais vous aurez deux endroits à éditer si vous voulez changer votrePATH
(par exemple~/.bashrc
etcrontab
). Ce qui est mieux dépend de vous.cron
code source ne disent de quoi il s'agit. En théorie, cela aurait pu être de forcer un environnement cohérent afin que vous puissiez copier une crontab d'un utilisateur à un autre, mais n'estPATH
modifié que si cela ne peut pas être la raison.Bien que votre problème principal ait déjà été résolu, il semble que vous receviez des avertissements debconf car vous exécutez apt-get sans tty interactif. Pour vous débarrasser de ces messages, vous pouvez définir cette variable d'environnement:
la source
Il existe une page wiki communautaire: Raison pour laquelle crontab ne fonctionne pas . Dans ce cas, il semble que la cause soit les variables d'environnement limitées de cron. Pouvez-vous l'exécuter à partir d'un script shell dans /etc/cron.daily?
la source
De CronHowto :
Mais en fait, tout semble bien se passer comme vous ... D'où avez-vous récupéré ces erreurs?
CRONTAB:
SCÉNARIO:
JOURNAL:
la source