Frage Wo ist der Benutzer crontab gespeichert?


Seit der Aktualisierung der Crontab meines Benutzers wurde gelöscht. Dies ist nicht das erste Mal, dass dies dieses Jahr passiert ist und es ist ein Schmerz, es jedes Mal wiederherzustellen.

Ich möchte die crontab für meinen Benutzer sichern können, aber dafür muss ich wissen, wo es gespeichert ist.


217
2017-11-13 14:26


Ursprung


es wäre schön, wenn jemand auch einen Grund angeben könnte, warum er ausgelöscht ist - Walter Tross
@WalterTross Ja, es ist ziemlich nervig. Ich denke, es ist ein Nebeneffekt der Aktualisierung der cron Paket, aber ich stimme zu - es ist nicht etwas, was passieren sollte. - Oli♦
Uh, ich werde nicht diese Benutzer Cron werden per Cron-Paket-Upgrade gelöscht! - pl1nk
@ pl1nk Ich habe keine Ahnung, was es auslöschen wird, aber es passiert weiter. Geist in der Maschine, schätze ich. - Oli♦
Benutzertabellen werden in einem temporären Bereich / var / spool / cron / crontabs / $ USER gespeichert, der beim nächsten Start oder Upgrade möglicherweise gelöscht wird. - fcm


Antworten:


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

Jeder Benutzer kann seine eigene Crontab haben, und zwar
  Das sind Dateien in /var/spool/cron/crontabs, Sie sind nicht
  beabsichtigt, direkt bearbeitet zu werden.

Dateien unter /var/spool gelten als temporär / funktionierend, deshalb werden sie wahrscheinlich während eines Upgrades gelöscht, wenn auch ein genauerer Blick auf die cron Die Upgrade-Scripts des Pakets könnten dies etwas beleuchten.

Wie auch immer, es ist immer eine gute Übung, Ihre Cron-Einträge zu sichern oder sie in einer Datei in Ihrem Home-Verzeichnis zu behalten.

Ich nehme an, du benutzt es crontab -e Crontab-Dateien im laufenden Betrieb erstellen. Wenn ja, können Sie eine "Kopie" Ihrer Crontab-Datei erhalten crontab -l. Lege das in eine Datei, um eine "Sicherung" 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 an crontab übergeben:

crontab my-crontab

Dies macht die gleiche Syntaxprüfung wie crontab -e.


279
2017-11-13 15:21



crontab -l ist einfacher als durchzugehen /var/spool/cron/crontabs/$USER vor allem wegen der bizarren Berechtigungen für diese Datei. - Oli♦
Das iptables-save von Cron. Nett... - Parthian Shot
Wenn Sie Ihr root-Konto für crontab verwenden, dann ist es sudo crontab -l> root-crontab für roots crontab! - FreeSoftwareServers
Vielleicht sollten wir eine Crontab setzen, um sich automatisch zu sichern> :)? - PascalVKooten
Stochern durch /var/spool/cron/crontabsist praktisch, wenn Sie crontabs von mehreren Benutzern kuratieren oder untersuchen möchten. - dhasenan


Es ist innen gespeichert /var/spool/cron/crontabs Ordner unter Benutzername.


46
2017-11-13 14:29





Ich habe es endlich herausgefunden Warum Meine Crontabs und Postfix-Installation brach nach dem Start immer wieder ab. Es ist ein wirklich dummer Grund, aber ...

ich hatte /var/spool montiert als a tmpfs RAM-Laufwerk.

Klingt idiotisch und es ist, aber ich hatte eine der alten SSD-Tweaks gefolgt, um das Leben meiner SSD zu verlängern. Dabei habe ich blindlings montiert /tmp, /var/tmp und /var/spool wie tmpfs 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 lag eindeutig falsch.


27
2018-05-30 13:20



Es sollte sicher zu montieren sein /tmp als tmpfs, aber nicht /var/tmp oder /var/spool. /tmp wird für temporäre Speicherung verwendet, die beim Neustart verloren gehen kann. /var/tmp wird für den temporären Speicher verwendet, der nach einem Neustart verbleibt. Und wie du herausgefunden hast, /var/spool dient dazu, Daten zu verarbeiten, die auch nach einem Neustart erhalten bleiben. - thomasrutter
Sehen Pfadname.com/fhs/2.2/fhs-5.15.html - thomasrutter
Beachten Sie auch, dass die Anzahl der Schreibvorgänge bei modernen SSDs kein Problem mehr ist. - thomasrutter


Um alle Cron-Jobs von allen Benutzern in Ihrem System aufzulisten:

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

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

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

10
2018-03-28 12:39



Wenn Sie die Crontab von einem anderen Laufwerk wiederherstellen, wird dies nicht funktionieren, weil crontab -u läuft von Ihrem aktuellen System. - JVE999
Während ich denke, dass dies ein Einzeiler ist, weil es in weniger als 80 Zeichen passt und etwas lesbar ist, setze ich Code in der Regel so ein, dass eine Person sie entweder kopieren oder in ein Skript einfügen kann (und in einem Skript würde dies nicht eine Zeile Code sein). Suggested edit ... - Parthian Shot
Außerdem wollte ich es in eine verwandeln while read user Schleife, um den Fall zu behandeln, in dem der Benutzername Leerzeichen enthält, aber das ist anscheinend kein Problem. Sehr begrenzte Anzahl von Nutzernamen. - Parthian Shot