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:
- Få användarens crontab till en textfil med
crontab -l >crontab.txt
. - Manipulera textfilen genom att lägga till, ta bort eller ändra jobbspecifikationer.
- 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
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 medcron
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.
crontab -l
.