Vraag Waar wordt de gebruikerscrontab opgeslagen?


Sinds het upgraden van de crontab van mijn gebruiker is weggevaagd. Dit is niet de eerste keer dat dit dit jaar is gebeurd en het is een pijn om het elke keer te herstellen.

Ik wil graag een back-up van de crontab maken voor mijn gebruiker, maar daarvoor moet ik weten waar deze is opgeslagen.


217
2017-11-13 14:26


oorsprong


het zou leuk zijn als iemand ook een reden kan geven WAAROM het is weggevaagd - Walter Tross
@WalterTross Ja, het is best vervelend. Ik vermoed dat het een neveneffect is van het updaten van de cron pakket, maar ik ben het ermee eens - het is niet iets dat zou moeten gebeuren. - Oli♦
Eh, ik doe niet dat gebruiker cron's weggevaagd worden per cron pakketupgrade! - pl1nk
@ pl1nk Ik heb geen idee wat het uitwist, maar het blijft gebeuren. Geest in de machine, denk ik. - Oli♦
Gebruikerstabellen worden opgeslagen in een tijdelijk gebied / var / spool / cron / crontabs / $ USER, zodat deze bij uw volgende opstart of upgrade mogelijk worden verwijderd. - fcm


antwoorden:


Het is eigenlijk niet aan te raden om die bestanden handmatig te bewerken. Per crontab man pagina:

Elke gebruiker kan zijn eigen crontab hebben en dat wel
  dit zijn bestanden in /var/spool/cron/crontabs, zij zijn niet
  bedoeld om rechtstreeks te worden bewerkt.

Bestanden onder /var/spool worden beschouwd als tijdelijk / werkend, daarom worden ze waarschijnlijk verwijderd tijdens een upgrade, hoewel een nadere blik op de cron de upgradescripts van het pakket kunnen hier enig licht op werpen.

Hoe dan ook, het is altijd een goed gebruik om een ​​back-up te maken van je cron-items of deze in een bestand in je thuismap te bewaren.

Ik neem aan dat je gebruikt crontab -e om crontab-bestanden te maken tijdens de vlucht. Als dat zo is, kunt u een "kopie" van uw crontab-bestand maken door te doen crontab -l. Leid dat naar een bestand om een ​​"backup" te krijgen:

crontab -l > my-crontab

Vervolgens kunt u dat my-crontab-bestand bewerken om items toe te voegen of te wijzigen en het vervolgens "installeren" door het aan crontab te geven:

crontab my-crontab

Dit doet dezelfde syntaxiscontrole als crontab -e.


279
2017-11-13 15:21



crontab -l is gemakkelijker dan er doorheen te gaan /var/spool/cron/crontabs/$USER voornamelijk vanwege de bizarre rechten op dat bestand. - Oli♦
De iptables-save van cron. Leuk... - Parthian Shot
als je je root-account gebruikt voor crontab, dan is de sudo crontab -l> root-crontab voor wortels crontab! - FreeSoftwareServers
Misschien moeten we een crontab plaatsen om zichzelf automatisch te back-uppen> :)? - PascalVKooten
Doorsteken /var/spool/cron/crontabsis handig wanneer u crontabs van meerdere gebruikers wilt beheren of onderzoeken. - dhasenan


Het is binnenin opgeslagen /var/spool/cron/crontabs map onder gebruikersnaam.


46
2017-11-13 14:29





Ik ben er eindelijk achter gekomen waarom mijn crontabs en Postfix installatie bleven na het opstarten doorbreken. Het is echt een domme reden, maar ...

ik had /var/spool gemonteerd als een tmpfs RAM-drive.

Klinkt idioot en dat is het, maar ik had een van de oude SSD-tweaks gevolgd om de levensduur van mijn SSD te verlengen. Daarbij ben ik blindelings gemonteerd /tmp, /var/tmp en /var/spool als tmpfs zonder na te denken over de repercussies. ik dacht /var/spool was als /proc/ of /run/ en dat het alleen nuttig was voor de duur van de sessie. Ik had het duidelijk mis.


27
2018-05-30 13:20



Het moet veilig zijn om te monteren /tmp als tmpfs, maar niet /var/tmp of /var/spool. /tmp wordt gebruikt voor tijdelijke opslag die verloren kan gaan na opnieuw opstarten. /var/tmp wordt gebruikt voor tijdelijke opslag die zal blijven na een herstart. En zoals je hebt ontdekt, /var/spool is voor het verwerken van gegevens, die ook zal blijven na een herstart. - thomasrutter
Zien pathname.com/fhs/2.2/fhs-5.15.html - thomasrutter
Merk ook op dat schrijftelling niet langer een probleem is met moderne SSD's. - thomasrutter


Om alle cron-taken van alle gebruikers in uw systeem op te sommen:

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

Een alternatief voor uw probleem zou zijn om ze in cron.d map te plaatsen en de juiste gebruiker per cron op te geven zoals in het voorbeeld:

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

10
2018-03-28 12:39



als je de crontab herstelt van een andere schijf, zal dit niet werken omdat crontab -u wordt uitgevoerd vanuit uw huidige systeem. - JVE999
Hoewel ik veronderstel dat dit een one-liner is in die zin dat het in minder dan 80 tekens past en enigszins leesbaar is, vind ik het in het algemeen leuk om code in een formaat te plaatsen zodat een persoon het kan kopiëren of plakken of in een script kan plaatsen (en, in een script zou dit niet één regel code zijn). Voorstellen voor bewerken ... - Parthian Shot
Ook stond ik op het punt om er een te maken while read user loop, om het geval te behandelen waarin de gebruikersnaam spaties bevat, maar blijkbaar is dat geen probleem. Zeer beperkte set gebruikersnaamtekens. - Parthian Shot