Jeg oprettede et script, der tilføjede et cron-job baseret på brugerspecifikationer, men det fungerer ikke, da jeg har brug for at opdatere cron hver gang Jeg tilføjer et job i crontab. Er der en måde at opdatere cron uden at dræbe processen?
Svar
Så længe din script bruger crontab
til at tilføje og slette jobspecifikationer for brugeren, det er ikke nødvendigt at genstarte cron
dæmonen.
AIX 7.1 cron manuel side siger :
Når du foretager ændringer til crontab-filerne ved hjælp af kommandoen
crontab
, der sendes en meddelelse om, at ændringen sendes til cron-dæmonen.
Se også crontab
manual .
Den generelle strøm af handlinger, som dit script ville have tag:
- Få brugerens crontab ind i en tekstfil ved hjælp af
crontab -l >crontab.txt
. - Manipuler tekstfilen ved at tilføje, fjerne eller ændre jobspecifikationer.
- Indlæs brugerens crontab med de nye specifikationer ved hjælp af
crontab crontab.txt
.
Kommandoerne i det første og sidste trin skal udføres som brugeren (det første trin kan også køres som crontab -l username >crontab.txt
som f.eks root).
Dette fungerer på enhver Unix ved hjælp af cron
.
Kommentarer
Svar
AIX 7.1 cron manuel side siger :
cron-dæmon læser konfigurationsfilen, når den er aktiveret, og når den modtager hangupsignalet.
Så bare kill -HUP cron_pid
skal gøre det.
Kommentarer
- Jeg har allerede prøvet dette, men jeg vil gerne opdatere min konfiguration uden at dræbe processen
- @Shan
kill
kommandoen sender signaler til processen. Generelt kan processer dræbes, dvs. de dør faktisk ved at modtage et signal. Men i tilfælde afcron
behandler det signalet, dør ikke og læser dets konfiguration igen. - Den del af mandsiden, du citerede, er der henviser til cron ' s konfigurationsfil ,
/etc/cronlog.conf
, ikke selve crontab-filerne. - Jeg kan ikke gøre dette til et svar på dette spørgsmål; når jeg manuelt redigerer en crontab-fil og HUP cron, udføres det nye cron-job ikke.
- @JeffSchaller er korrekt, du skal enten dræbe -9 cron_pid eller bruge crontab på en crontab-fil som foreslået af Kusalananda i det andet svar for at genindlæse crontab.
crontab -l
.