Vraag Hoe stel ik een Cron-job in?


Ik wil een taak plannen die regelmatig wordt uitgevoerd en heb gehoord dat Cron de manier is om dit te doen.

Hoe voeg ik Cron-taken toe in Ubuntu?


486
2017-08-16 08:25


oorsprong




antwoorden:


Zet een shell-script in een van deze mappen: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly of /etc/cron.weekly.

Als dit niet genoeg voor u is, kunt u meer specifieke taken toevoegen, bijvoorbeeld tweemaal per maand of elke 5 minuten. Ga naar de terminal en typ:

crontab -e

Hiermee wordt uw persoonlijke crontab (cron-configuratiebestand) geopend. De eerste regel in dat bestand legt het allemaal uit! In elke regel kun je één opdracht definiëren om uit te voeren en zijn schema, en het formaat is vrij eenvoudig als je het onder de knie hebt. De structuur is:

minute hour day-of-month month day-of-week command

Voor alle nummers kunt u lijsten gebruiken, bijvoorbeeld 5,34,55 in het veld minuten wordt runnen om 5 voorbij, 34 voorbij en 55 voorbij elk uur gedefinieerd.

U kunt ook intervallen gebruiken. Ze zijn als volgt gedefinieerd: */20. Dit voorbeeld betekent elke 20e, dus in de kolom 'minuten' is dit equivalent 0,20,40.

Dus om elke maandag om half vijf 's middags een opdracht uit te voeren:

30 17 * * 1 /path/to/command

of elke 15 minuten

*/15 * * * * /path/to/command

Merk op dat de dag van de week van 0-6 gaat, waarbij 0 zondag is.

U kunt meer lezen hier.


600
2017-08-16 08:58



Deze zijn systeembreed en worden uitgevoerd met hoge rechten. Ik zou er niets neerzetten tenzij er dringend behoefte is aan toegang of toestemming. Als vuistregel, probeer dingen zonder mogelijkheden te doen. Daarom vind ik dit antwoord beter: ubuntu.stackexchange.com/questions/2368/how-do-i-setup-cron-job/... - H Marcelo Morales
@Marcelo Morales, die ook de gegeven opdrachten als root zal uitvoeren! als u daarentegen geen gebruik maakt van sudo, maakt u een gebruikerscrontab aan en deze wordt uitgevoerd als de gebruiker die deze heeft aangemaakt! - LassePoulsen
* / 15 * * * * / pad / naar / commando was erg handig voor mij! bedankt! - Andrew Odendaal
Het is vermeldenswaard dat deze wijzigingen automatisch worden toegepast, u hoeft niets opnieuw te starten of opnieuw te laden. - Molomby
Een andere handige tip is dat in plaats van */15 * * * * /path/to/command, je kunt doen @reboot /path/to/command om iets uit te voeren bij het opstarten. - Kenneth Worden


Als de taak die u wilt uitvoeren, kan worden uitgevoerd met dezelfde rechten als uw gebruiker, raad ik aan een gebruikerscrontab te gebruiken die u kunt bewerken door EDITOR="gedit" crontab -e(die zal worden gebruikt gedit om het crontab-bestand te bewerken) of gewoon crontab -e(die de standaardeditor zal gebruiken) in een terminal.

Als u bijvoorbeeld elke 10 minuten iets wilt uitvoeren, voegt u een regel als deze toe

*/10 * * * * /usr/bin/somedirectory/somecommand

en sla het bestand op.

U kunt de inhoud van de gebruikerscrontab zien crontab -l.

De meest flexibele manier is om de systeemcrontab te gebruiken die u kunt bewerken door te draaien sudo crontab -e in een terminal. Hiermee kunt u uw opdrachten als root uitvoeren (voor het geval u dat niveau van bevoegdheden nodig heeft) of een andere gebruiker op het systeem.

Als u dan elke 10 minuten iets wilt uitvoeren als wortelu voegt bijvoorbeeld een regel als deze toe

*/10 * * * * root /usr/bin/somedirectory/somecommand

en sla het bestand op.(let op de toevoeging van de gebruiker aan de regel)

U kunt de inhoud van het crontab-bestand van het systeem bekijken sudo crontab -l.

Meer informatie op: https://help.ubuntu.com/community/CronHowto


93
2017-08-16 09:21



Hier is een zoete interactieve cron-manipulator die je de Engels tot de cron-tijd zal geven crontab.guru - CTS_AE


Als u liever een GUI gebruikt, kunt u naar het Software Center gaan en de software installeren Geplande taken (of rennen sudo apt-get install gnome-schedule). Het biedt een krachtige GUI om cron-taken toe te voegen.

Merk op dat als u deze methode gebruikt, taken standaard worden uitgevoerd als uw eigen gebruiker, niet als root. Dit is meestal een goede zaak.


51
2018-01-31 23:59



niet beschikbaar voor 16.04 blijkbaar bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060 - TankorSmash
@TankorSmash Je kunt het krijgen hier - M. Becerra
Pakketvereisten kunnen niet worden gehaald op 16.04 - Odysseus Ithaca


ik raad aan KDE's Taakplanner (kde-config-cron)  Install kde-config-cron. Toegang tot het Systeem instellingen in de Taakplanner module daar.

Het beheert zowel persoonlijke als systeemcrontabs, en het gemak van het creëren van de tijdsgrenzen heeft me enorm verrast (zie de onderstaande schermafbeelding). Ik denk dat dit deel echt ondergewaardeerd is.

enter image description here


24
2018-02-11 14:35





KDE Task Scheduler werkt niet in normale Ubuntu. Het werkt alleen in KDE-systemen zoals KUbuntu. Voor niet-KDE-systemen geeft u er de voorkeur aan om het gnome-schema te gebruiken

$ sudo apt-get install gnome-schedule

De app is Geplande taken in de Dash.


11
2017-09-27 20:25



Het wordt niet gevonden voor Ubuntu 16.04 - SaidbakR
Kijk eens naar I can't install gnome schedule on Ubuntu 16.04 @ askubuntu.com/questions/785657/.... Er is een pakket om te downloaden @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/.... Gewoon spelen $ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb - Antonio


Ik wilde een Cron-taak instellen om een ​​bash-script uit te voeren, dus het uitvoeren van het script zou een cron-taak toevoegen.

Ik besefte dat wanneer je gebruik maakt van:

crontab -e 

Vervolgens wordt het bestand gemaakt:

/var/spool/cron/crontabs/root 

Waarbij root de naam is van de gebruiker die het crontab-commando uitvoert. Dus op basis hiervan en in 14.04 kunnen we tenminste de volgende bash-commando's uitvoeren om een ​​nieuwe Cron-job te maken:

echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root

We moeten ook het juiste eigendom voor het bestand instellen:

chown root:root /var/spool/cron/crontabs/root

En stel de juiste rechten in:

chmod 600 /var/spool/cron/crontabs/root

Als je rent crontab -e er zijn al Cron-taken in de lijst, dan kunt u aan de lijst toevoegen met behulp van de volgende opdracht:

echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root

8