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:

  1. Få brugerens crontab ind i en tekstfil ved hjælp af crontab -l >crontab.txt.
  2. Manipuler tekstfilen ved at tilføje, fjerne eller ændre jobspecifikationer.
  3. 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

  • Hvad hvis der er eksisterende job? Skal jeg først sætte det i den samme tekstfil og derefter tilføje det nye job, inden det lægges i crontab?
  • @Shan Som jeg nævnte, ville du få det aktuelle crontab til brugeren og derefter ændre det inden du lægger den i igen. Så ja, du tilføjer nye job til filen produceret af crontab -l.

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 af cron 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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *