Vraag Cronjob één keer per dag in Ubuntu 12.04 [dupliceren]


Deze vraag heeft hier al een antwoord:

Ik heb een VPS opgezet met Ubuntu 12.04 en nu wil ik eenmaal per dag een cronjob uitvoeren.

De opdrachtregel is als volgt:

    mono /root/Folder/Aplication.exe

Ik heb gekeken en gekeken op internet, maar ik begrijp niet hoe ik het moet doen. Ik wil bijvoorbeeld dit bevel elke 24 uur om middernacht uitvoeren.

Alvast bedankt voor het lezen van mijn vraag en natuurlijk voor alle antwoorden.


1
2018-01-08 17:52


oorsprong




antwoorden:


Omdat er enkele complementaire verschillen zijn tussen @ Guss's en mijn antwoord, verlaat ik het.

Hier ben je een illustratie over cronjobs opstelling (bron):

* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
  • Als u elke dag om 0:15 uur een taak van $ USER wilt uitvoeren, moet u gebruikers bewerken crontab bestand (bevindt zich in /var/spool/cron/crontabs/<user_name>). U kunt dat doen door het commando crontab -e. (Misschien wordt er een dialoogvenster weergegeven, waarin u de standaardteksteditor moet kiezen.) Aan het einde van de crontab bestand voeg volgende regel toe:

    15 0 * * * /usr/bin/mono /root/Folder/Aplication.exe > /var/log/mono.daily.log 2>&1
    
    • /usr/bin/mono het wordt aanbevolen om het volledige pad naar de opdracht in Cron te gebruiken. Om het te vinden, kunt u gebruiken sudo updatedb && sudo whereis mono.
    • > /var/log/mono.daily.log dit deel leidt de uitvoer om naar een logbestand, voor het geval u wilt achterhalen wat er met uw gebeurt cronjob. Als u loggegevens van de voorgaande dagen wilt bewaren, kunt u gebruiken >> in plaats van >.
    • 2>&1 dit deel plaatst de foutmeldingen in het logbestand.
  • Als u een taak wilt uitvoeren wortel, je moet de zijn bewerken crontab het dossier: sudocrontab -e en voeg de hierboven weergegeven regel toe.

  • Ook voor dagelijks cronjobs, kunt u een uitvoerbaar bestand in de map toevoegen /etc/cron.daily. Om een ​​voorbeeld te vinden, controleert u enkele van de bestaande bestanden in deze map.


1
2018-01-08 19:02



Normaal gesproken specificeer ik niet waar de cron-tabellen van gebruikers worden opgeslagen, omdat sommige mensen geneigd zijn ze rechtstreeks te bewerken in plaats van te gebruiken crontab -e - en dat kan allerlei problemen veroorzaken, niet in de laatste plaats dat de cron-daemon deze bestanden niet automatisch zal verversen, net als de systeem cron-tabellen. - Guss
Het is goed om te weten waar deze bestanden worden opgeslagen, als u een back-up wilt maken van aangepaste bestanden van uw systeem. - pa4080


U voert geplande taken in Ubuntu (en andere Linux-systemen) uit met behulp van cron. Een ding dat belangrijk is om te onthouden over cron, is dat er "gebruiker cron-tabellen" en "systeem-cron-tabellen" zijn.

Als u wilt dat uw toepassing wordt uitgevoerd in de context van een gebruiker, dan is het relatief eenvoudig: meld u aan als die gebruiker en voer het uit crontab -e. U komt in een editor waar u de cron-tabel handmatig bewerkt.

Onder een gebruiker cron-tabel, heb je 6 velden:

<minute> <hour> <day-of-month> <month> <day-of-week> <command ...>

Het veld is spaties gescheiden behalve "command"die zich uitstrekt tot het einde van de regel (met enkele kanttekeningen) man 5 crontab voor de bloederige details.

Als u elke dag iets wilt uitvoeren, wilt u mogelijk een tijdstip kiezen en dat in de eerste twee velden programmeren, waarbij alle andere velden als asterisk worden weergegeven (dat wil zeggen "alles mag"). Dus de uitdrukking

1 2 * * * mono /root/Folder/Aplication.exe

Zou uw mono-applicatie elke dag (elke dag van elke maand, ongeacht de dag van de week - dit zijn de 3 sterretjes) om 2:01 AM (de eerste twee velden) uitvoeren.

Nu omdat ik zie dat je je applicatie hebt geïnstalleerd onder /root Ik ga ervan uit dat je deze app misschien als een systeemtoepassing wilt gebruiken - wat ook logischer is als je een server in een VPS instelt. Een systeemcrontab lijkt sterk op een gebruikerscrontab, behalve dat deze is opgeslagen in een bestand onder de /etcdirectory en het heeft een extra veld dat aangeeft onder welke gebruiker je het wilt uitvoeren - wat waarschijnlijk zal zijn root. Dus de uitdrukking kan er als volgt uitzien:

1 2 * * * root mono /root/Folder/Aplication.exe

en je wilt dit waarschijnlijk in een nieuw bestand plaatsen dat je zou maken /etc/cron.d/ - kan zijn /etc/cron.d/myapp (merk op dat er geen extensie is - dit is expres). Onder /etc/ er zijn verschillende andere crontab-bestanden en directory's, die erg handig kunnen zijn voor zaken als dagelijkse runs, zoals /etc/cron.daily - lees ze door in de crontab-bestanden man-pagina waarnaar ik hierboven heb verwezen.

Notes

  1. Voer Ubuntu 12.04 niet uit - het is super verouderd. Beter proberen 16.04
  2. Uitchecken Crontab.Guru voor al uw crontab expressiebehoeften.

1
2018-01-08 18:11



In plaats van de veroudering van 12.04 aan te halen, wil ik er in plaats daarvan op wijzen dat 12.04 ondersteuning binnen enkele maanden eindigt - Thomas Ward♦