Jag skapade ett skript som lägger till ett cron-jobb baserat på användarspecifikationer men det fungerar inte eftersom jag behöver uppdatera cron varje gång Jag lägger till ett jobb i crontab. Finns det ett sätt att uppdatera cron utan att döda processen?

Svar

Så länge du skript använder crontab för att lägga till och ta bort jobbspecifikationer för användaren, det finns inget behov av att starta om cron -demon.

AIX 7.1 crons manuella sida säger :

När du gör ändringar till crontab-filerna med kommandot crontab skickas ett meddelande om att ändringen skickas till cron-demonen.

Se även crontab manualen .

Det allmänna flödet av åtgärder som ditt skript skulle ta:

  1. Få användarens crontab till en textfil med crontab -l >crontab.txt.
  2. Manipulera textfilen genom att lägga till, ta bort eller ändra jobbspecifikationer.
  3. Ladda användarens crontab med de nya specifikationerna med crontab crontab.txt.

Kommandona i det första och sista steget måste köras som användare (det första steget kan också köras som crontab -l username >crontab.txt som t.ex. root).

Detta fungerar på alla Unix som använder cron.

Kommentarer

  • Vad händer om det finns befintliga jobb? Måste jag först lägga in den i samma textfil och sedan lägga till det nya jobbet innan det laddas i crontab?
  • @Shan Som jag nämnde skulle du få den aktuella crontab för användaren och sedan ändra det innan du laddar den igen. Så ja, du skulle lägga till nya jobb till filen som produceras av crontab -l.

Svar

AIX 7.1 crons manuella sida säger :

cron-demon läser konfigurationsfilen när den är aktiverad och när den tar emot signalen.

Så bara kill -HUP cron_pid ska göra det.

Kommentarer

  • Jag har redan försökt detta men jag vill uppdatera min konfiguration utan att döda processen
  • @Shan kill -kommandot skickar signaler till processen. I allmänhet kan processer dödas, dvs de dör faktiskt genom att ta emot en signal. Men i fallet med cron hanterar den signalen, dör inte och läser igenom dess konfiguration.
  • Den del av mansidan som du citerade är med hänvisning till cron ' s konfigurationsfil , /etc/cronlog.conf, inte själva crontab-filerna.
  • Jag kan inte göra detta till ett svar på denna fråga; när jag manuellt redigerar en crontab-fil och HUP cron körs det nya cron-jobbet inte.
  • @JeffSchaller är korrekt, du måste antingen döda -9 cron_pid eller använda crontab på en crontab-fil som föreslås av Kusalananda i det andra svaret för att ladda om crontab.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *