Frage Warum schlägt apt-get fehl, wenn es mit Cron automatisiert wird?


Ich versuche, Cron zu verwenden, um meine Systemupdates zu automatisieren. Sie können meine Crontab, Befehle und resultierende Fehler unten sehen.

Wenn ich upgrades.sh als root ausführe, läuft das Skript einwandfrei. Wenn Cron es läuft, apt-get -y update läuft kein Problem, aber aptitude -y safe-upgrade schlägt fehl. Ich vermute diesen Fehler: debconf: (This frontend requires a controlling tty.) ist, weil es ein Kernel-Update gibt, das wiederum grub aktualisiert, was erfordert, dass ich explizit sage, dass es okay ist, zu überschreiben /boot/grub/menu.lst. Aber ich verstehe die Pfadfehler nicht. Und ich möchte, dass die Updates, die meine Aufsicht nicht erfordert, durchgehen.

Ich habe es gelesen diese Frage und es ist noch nicht akzeptierte Lösung von unattended-upgradesund ich kann es am Ende benutzen, aber warum kann ich Cron nicht benutzen? Scheint so, als sollte es wirklich einfach sein und mehr 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

Fehler

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...

14
2018-01-29 00:38


Ursprung




Antworten:


Die Nachrichten sagen dir, dass dein PATH Umgebungsvariable ist falsch.

Versuche es hinzuzufügen

PATH=/usr/bin:/bin:/usr/sbin:/sbin

an die Spitze deines crontab.

Oder Sie könnten dasselbe setzen PATH Zeile als zweite Zeile von ~/bin/upgrades.sh. Auf diese Weise wird dein Test von der Kommandozeile und dein Test von crontab sollte die gleichen Ergebnisse liefern.


10
2018-01-29 00:50



Aha. Ich habe den Befehl versehentlich in ein Skript geschrieben und dachte, dass die #! / Bin / bash-Zeile den normalen Pfad von root laden würde. Offensichtlich lag ich falsch. Was bestimmt den Standardpfad eines Benutzers und wie wird er angewendet? - djeikyb
Warum nimmt cron den Weg des Benutzers nicht an? Ist es besser, einen Pfad zu crontab oder meinem Skript hinzuzufügen? Gibt es Nachteile? - djeikyb
Es soll aus Sicherheitsgründen sein, aber ich stimme zu, es ist nervig. 1) Wenn Sie es in Ihr Skript einfügen, könnten Sie setzen PATH=... in einer Datei, z.B. ~/.env, und es von jedem Skript, das Sie schreiben, zu beziehen . ~/.env nahe dem oberen Rand des Skripts. Dann, wenn Sie Ihre ändern PATH Sie müssen nur eine Datei bearbeiten. 2) Wenn du es einlegst crontabEs bedeutet, dass Sie nicht alle Ihre Cron - Skripte bearbeiten müssen, aber Sie müssen zwei Stellen bearbeiten, wenn Sie Ihre ändern möchten PATH (z.B. ~/.bashrc und crontab). Was besser ist, liegt an dir. - Mikel
Cool. Ich denke, meine Frage ist, warum ist es unsicher? Ich google gerade, aber habe noch nichts gefunden. Wie auch immer, ich habe die Änderungen vorgenommen, und ich werde als beantwortet morgen früh markieren, wenn es läuft, nur für den Fall, dass etwas anderes schief geht. - djeikyb
Ich wünschte, ich wüsste es auch. Wenn es einen Grund gibt, weder die Dokumentation noch die cron Quellcode sagen, was es ist. Theoretisch könnte es sein, eine konsistente Umgebung zu erzwingen, so dass Sie eine Crontab von einem Benutzer zu einem anderen kopieren können, aber nur PATH wird geändert, so dass das nicht der Grund sein kann. - Mikel


Obwohl Ihr Hauptproblem bereits beantwortet wurde, sieht es so aus, als würden Sie Debconf-Warnungen erhalten, da Sie apt-get ohne ein interaktives Tool ausführen. Um diese Nachrichten loszuwerden, können Sie diese Umgebungsvariable festlegen:

DEBIAN_FRONTEND=noninteractive

14
2017-11-05 00:00





Es gibt eine Community-Wiki-Seite: Grund, warum Crontab nicht funktioniert. In diesem Fall scheint es, dass die Ursache die begrenzten Umgebungsvariablen von cron sind. Kannst du das aus einem Shell-Skript in /etc/cron.daily ausführen?


1
2018-01-29 00:53



Missverstanden deine Antwort, also nichts zu kommentieren. - luri


Von CronHowto:

Abhängig von den ausgeführten Befehlen,   Möglicherweise müssen Sie die Stammbenutzer erweitern   PATH-Variable, indem Sie Folgendes eingeben   Zeile an der Spitze ihrer Crontab-Datei:

PATH = / usr / sbin: / usr / bin: / sbin: / bin

Aber eigentlich scheint alles in Ordnung zu sein, genauso wie du .... Wo hast du diese Fehler her?

CRONTAB:

root@PORTATIL:/var/log$ crontab -l
* * */2 * * /usr/share/myupdate.sh > /var/log/myupdate.log

SKRIPT:

root@PORTATIL:/etc# cat /usr/share/myupdate.sh 
#!/bin/bash
#Testing updates
apt-get update -y
apt-get upgrade -y

LOG:

root@PORTATIL:/etc# cat /var/log/myupdate.log 

Hit http://security.ubuntu.com lucid-security Release.gpg
Hit http://archive.canonical.com lucid Release.gpg
Hit http://archive.canonical.com lucid Release.gpg
Hit http://packages.medibuntu.org lucid Release.gpg
Get:1 http://dl.google.com stable Release.gpg [197B]
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://security.ubuntu.com lucid-security Release
Hit http://badgerports.org lucid Release.gpg
Hit http://archive.canonical.com lucid Release
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://ppa.launchpad.net maverick Release.gpg
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://ppa.launchpad.net lucid Release.gpg
Hit http://ppa.launchpad.net lucid Release.gpg
Get:2 http://dl.google.com stable Release [1347B]
Hit http://security.ubuntu.com lucid-security/main Packages
Hit http://ppa.launchpad.net lucid Release
Hit http://ppa.launchpad.net lucid Release
Hit http://packages.medibuntu.org lucid Release
Hit http://download.virtualbox.org lucid Release.gpg
Hit http://archive.canonical.com lucid Release
Hit http://linux.dropbox.com lucid Release.gpg
Get:3 http://dl.google.com stable/main Packages [1110B]
Hit http://security.ubuntu.com lucid-security/restricted Packages
Hit http://security.ubuntu.com lucid-security/main Sources
Hit http://security.ubuntu.com lucid-security/restricted Sources
Hit http://security.ubuntu.com lucid-security/universe Packages
Hit http://security.ubuntu.com lucid-security/universe Sources
Hit http://ppa.launchpad.net lucid Release
Hit http://ppa.launchpad.net lucid Release
Hit http://ppa.launchpad.net maverick Release
Hit http://ppa.launchpad.net lucid Release
Hit http://ppa.launchpad.net lucid Release
Hit http://badgerports.org lucid Release
Hit http://archive.canonical.com lucid/partner Packages
Hit http://security.ubuntu.com lucid-security/multiverse Packages
Hit http://security.ubuntu.com lucid-security/multiverse Sources
Hit http://ppa.launchpad.net lucid Release
Hit http://packages.medibuntu.org lucid/free Packages
Hit http://download.virtualbox.org lucid Release
Hit http://es.archive.ubuntu.com lucid Release.gpg
Hit http://linux.dropbox.com lucid Release
Hit http://archive.canonical.com lucid/partner Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://es.archive.ubuntu.com lucid-updates Release.gpg
Hit http://badgerports.org lucid/main Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://ppa.launchpad.net maverick/main Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://packages.medibuntu.org lucid/non-free Packages
Hit http://linux.dropbox.com lucid/main Packages
Hit http://es.archive.ubuntu.com lucid Release
Hit http://download.virtualbox.org lucid/contrib Packages
Hit http://ppa.launchpad.net lucid/main Packages
Hit http://es.archive.ubuntu.com lucid-updates Release
Hit http://es.archive.ubuntu.com lucid/main Packages
Hit http://es.archive.ubuntu.com lucid/restricted Packages
Hit http://es.archive.ubuntu.com lucid/main Sources
Hit http://es.archive.ubuntu.com lucid/restricted Sources
Hit http://es.archive.ubuntu.com lucid/universe Packages
Hit http://es.archive.ubuntu.com lucid/universe Sources
Hit http://es.archive.ubuntu.com lucid/multiverse Packages
Hit http://es.archive.ubuntu.com lucid/multiverse Sources
Hit http://es.archive.ubuntu.com lucid-updates/main Packages
Hit http://es.archive.ubuntu.com lucid-updates/restricted Packages
Hit http://es.archive.ubuntu.com lucid-updates/main Sources
Hit http://es.archive.ubuntu.com lucid-updates/restricted Sources
Hit http://es.archive.ubuntu.com lucid-updates/universe Packages
Hit http://es.archive.ubuntu.com lucid-updates/universe Sources
Hit http://es.archive.ubuntu.com lucid-updates/multiverse Packages
Hit http://es.archive.ubuntu.com lucid-updates/multiverse Sources
Fetched 2654B in 1s (1628B/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

0
2018-01-29 01:23



Meine Fehler kommen aus dem Cron-Job-Log, der mir geschickt wurde. Ich laufe 10.04, genau wie du. Seltsam.. - djeikyb
Das muss eine Cron-Konfigurationsdatei sein, die einen restriktiven PATH setzt ... Ich habe gerade keine Probleme. - luri