it-swarm.com.de

Wo ist der Benutzer crontab gespeichert?

Seit dem Upgrade wurde die Crontab meines Benutzers gelöscht. Dies ist nicht das erste Mal in diesem Jahr und es ist ein Schmerz, der es jedes Mal wieder herstellt.

Ich möchte in der Lage sein, die Crontab für meinen Benutzer zu sichern, aber dafür muss ich wissen, wo sie gespeichert ist.

245
Oli

Eigentlich ist es nicht empfehlenswert, diese Dateien von Hand zu bearbeiten. Pro crontab Manpage:

Jeder Benutzer kann eine eigene Crontab haben, und zwar
Das sind Dateien in /var/spool/cron/crontabs, das sind sie nicht
soll direkt bearbeitet werden.

Dateien unter /var/spool gelten als temporär/funktionsfähig. Aus diesem Grund werden sie wahrscheinlich während eines Upgrades gelöscht. Bei näherer Betrachtung der Upgradeskripte des Pakets cron wird dies möglicherweise etwas näher erläutert.

Wie auch immer, es ist immer ratsam, Ihre Cron-Einträge zu sichern oder in einer Datei in Ihrem Home-Verzeichnis zu speichern.

Ich gehe davon aus, dass Sie crontab -e verwenden, um Crontab-Dateien im laufenden Betrieb zu erstellen. Wenn ja, können Sie eine "Kopie" Ihrer crontab-Datei erhalten, indem Sie crontab -l ausführen. Kopieren Sie das in eine Datei, um ein "Backup" zu erhalten:

crontab -l > my-crontab

Dann können Sie diese my-crontab-Datei bearbeiten, um Einträge hinzuzufügen oder zu ändern, und sie dann "installieren", indem Sie sie crontab geben:

crontab my-crontab

Dies führt die gleiche Syntaxprüfung durch wie crontab -e.

320
roadmr

Es befindet sich im Ordner /var/spool/cron/crontabs unter dem Benutzernamen.

49

Ich habe endlich herausgefunden warum meine Crontabs und Postfix Installation brachen nach dem Booten immer wieder ab. Es ist ein wirklich dummer Grund, aber ...

Ich hatte /var/spool als tmpfs RAM-Laufwerk gemountet.

Klingt idiotisch und ist es auch, aber ich war einem der alten SSD-Tweaks gefolgt, um die Lebensdauer meiner SSD zu verlängern. Dabei habe ich blindlings /tmp, /var/tmp und /var/spool als tmpfs montiert, ohne an die Auswirkungen zu denken. Ich dachte /var/spool war wie /proc/ oder /run/ und dass es nur für die Dauer der Sitzung nützlich war. Ich habe mich eindeutig geirrt.

29
Oli

So listen Sie alle Cron-Jobs aller Benutzer in Ihrem System auf:

for user in $(cut -f1 -d: /etc/passwd)
do
  echo $user
  crontab -u $user -l
done

Eine Alternative zu Ihrem Problem wäre, sie in den Ordner cron.d zu legen und den entsprechenden Benutzer pro cron anzugeben, wie im Beispiel gezeigt:

00 01 * * * user /home/user/user-script.sh
16
pl1nk