Ik probeer het verversen van awstats voor mijn webserver te automatiseren en begrijp dat ik cron moet gebruiken om dat in te stellen. Dus elke gebruiker heeft een crontab bestand?
Ik volgde de instructies hier community/AWStats
En het zegt dat ik naar het bestand moet gaan op: /etc/crontab
Dat bestand heeft al wat informatie erin staan. Is dit het belangrijkste crontab
bestand of zo? Ik heb wat instructies online gezien om het bestand te gebruiken dat tevoorschijn komt met crontab -e
.
Wat is het juiste bestand om te gebruiken en de beste manier om dit te doen?
Als ik een taak plan als mijn niet-root gebruiker, zal het dan vanzelf lopen op het tijdsinterval zoals gespecificeerd, zonder problemen?
Moet ik de server herstarten nadat ik de cron job in het crontab
bestand heb opgeslagen voordat het begint te werken?
Wat is het juiste bestand om te gebruiken en de beste manier om dit te doen?
crontab -e
is de beste manier om het te doen - dit zal u toelaten om eenvoudig per-gebruiker crontabs te bewerken.
Als ik een taak inplan als mijn niet-root gebruiker, zal het dan vanzelf lopen op het tijdsinterval zoals gespecificeerd, zonder problemen?
Ja, en het zal worden uitgevoerd met de rechten van die gebruikersaccount.
In principe is het het beste om geplande taken uit te voeren met de laagste privileges waar je mee weg kunt komen, dus als wat je aan het doen bent geen root vereist, gebruik dan geen root. Als u zelfs geen toegang hoeft te hebben tot uw account's bestanden en mappen, dan kunt u een nieuwe gebruiker aanmaken en die gebruikersaccount alleen voor die taak gebruiken. Aan de andere kant, als uw taak wel root vereist, gebruik dan root's crontab (su
/ sudo su
naar root en gebruik dan crontab -e
).
**Moet ik de server herstarten nadat ik de crontab-taak in het crontab-bestand heb opgeslagen voordat hij begint te werken?
Nee, het'zal meteen beginnen te werken (nou ja, de eerstvolgende mogelijke geplande tijd).
Waarom het bestand niet direct bewerken? Waar bevindt het zich?
De crontab-bestanden van de gebruiker bevinden zich in /var/spool/cron/crontabs
, maar hun permissies zijn zo ingesteld dat ze niet'kunnen worden doorkruist zonder superuser-toestemming (maar eenmaal geopend en het cron-proces laat privileges vallen kan het nog steeds toegang krijgen tot het bestand).
Het systeem is niet ontworpen voor eindgebruikers om deze bestanden rechtstreeks te bewerken, en de bovenkant van het bestand heeft inderdaad een strenge DO NOT EDIT THIS FILE
waarschuwing bovenaan om dit te bewerkstelligen. Het bestand is in plaats daarvan ontworpen om te worden bewerkt via crontab -e
dat een tijdelijke mirror van het bestand in /tmp
opzet om te bewerken - zonder de strenge waarschuwing - waarna het zelf het permanente crontab bestand controleert en installeert. Dit kan allemaal worden gedaan zonder superuser toestemming.
Als je het crontab-bestand wel rechtstreeks zou bewerken weet ik'niet wat het resultaat zou zijn. Het's mogelijk dat het eenvoudigweg geen effect zou hebben tot de volgende herstart en eventuele fouten kunnen moeilijk te debuggen zijn.
Elke gebruiker heeft zijn eigen crontab
.
Om die te zien hoeft u alleen maar te typen
crontab -l
en, ja je hebt het goed gezien, als je een crontab
wilt toevoegen dan doe je gewoon
crontab -e
voor de eerste keer dat je'wordt gevraagd naar de editor die je met crontab
moet gebruiken. Aangezien je een newbie bent zoals je zegt, zou ik je aanraden om nano te gebruiken, het's de eenvoudigste editor om te gebruiken.
De crontab zelf werkt als volgt
MIN = Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW = Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line
Dus om bijvoorbeeld elke 15 minuten een job te starten enkel op maandag, doe je het als volgt
*/15 * * * mon /home/me/yourscript.sh
en JA, het is heel belangrijk dat je je cronjob in de crontab zet van de gebruiker die genoeg rechten heeft om hem uit te voeren.
Dus als je script root of een speciale gebruiker moet zijn, zorg er dan voor dat je su naar die gebruiker en voeg de cronjob daar toe.
Ook heel belangrijk!
cronjob is dom! Ja, ik heb het gezegd. Zorg er altijd voor dat je het volledige PATH opgeeft naar de applicatie/commando/script
die je gebruikt, want crontab zal niet werken met .bashrc
of iets dergelijks. Je moet er altijd voor zorgen dat je cron vertelt waar het de bestanden en directories kan vinden.
Om de rest van je vragen te beantwoorden:
Natuurlijk zal het op zichzelf draaien, dat is waar het voor is. Maar je moet controleren of cronjob het echt doet, of dat het'iets mist. Bijv. log in een logfile om te zien of het echt werkt.
En NEE, een herstart is niet nodig. Een herstart met linux is normaal gesproken alleen nodig, als je een nieuwe kernel installeert. Om die te gebruiken moet je'rebooten. Bijna al het andere kan gedaan worden zonder reboot in Linux. Natuurlijk zijn er uitzonderingen, maar in het algemeen is deze verklaring correct.