Jeg opprettet et skript som vil legge til en cron-jobb basert på brukerspesifikasjoner, men den vil ikke fungere siden jeg trenger å oppdatere cron hver gang Jeg legger til en jobb i crontab. Er det en måte å oppdatere cron uten å drepe prosessen?

Svar

Så lenge din skript bruker crontab for å legge til og slette jobbspesifikasjoner for brukeren, det vil ikke være behov for å starte cron -demonen.

AIX 7.1 cron manuell side sier :

Når du gjør endringer til crontab-filene ved hjelp av crontab -kommandoen, blir en melding som indikerer endringen sendt til cron-demonen.

Se også crontab manualen .

Den generelle handlingsstrømmen som skriptet ditt ville ha ta:

  1. Få brukerens crontab til en tekstfil ved hjelp av crontab -l >crontab.txt.
  2. Manipuler tekstfilen ved å legge til, fjerne eller endre jobbspesifikasjoner.
  3. Last brukerens crontab med de nye spesifikasjonene ved hjelp av crontab crontab.txt.

Kommandoene i første og siste trinn må utføres som bruker (det første trinnet kan også kjøres som crontab -l username >crontab.txt som f.eks root).

Dette fungerer på enhver Unix som bruker cron.

Kommentarer

  • Hva om det er eksisterende jobber? Må jeg først legge den i samme tekstfil og deretter legge til den nye jobben før du laster den inn i crontab?
  • @Shan Som jeg nevnte, vil du få den nåværende crontab for brukeren, og deretter endre den før du laster den inn igjen. Så ja, du vil legge til nye jobber i filen produsert av crontab -l.

Svar

AIX 7.1 cron manuell side sier :

The cron-demon leser konfigurasjonsfilen når den er aktivert og når den mottar hangup-signalet.

Så bare kill -HUP cron_pid burde gjøre det.

Kommentarer

  • Jeg har allerede prøvd dette, men jeg vil oppdatere konfigurasjonen min uten å drepe prosessen
  • @Shan kill -kommandoen sender signaler til prosessen. Generelt kan prosesser drepes, dvs. de dør faktisk ved å motta et signal. Men i tilfelle cron behandler den signalet, dør ikke og leser konfigurasjonen på nytt.
  • Delen av mannssiden du siterte er refererer til cron ' s konfigurasjonsfil , /etc/cronlog.conf, ikke selve crontab-filene.
  • Jeg kan ikke gjøre dette til et svar på dette spørsmålet; når jeg manuelt redigerer en crontab-fil og HUP cron, blir den nye cron-jobben ikke utført.
  • @JeffSchaller er riktig, du må enten drepe -9 cron_pid eller bruke crontab på en crontab-fil som foreslått av Kusalananda i det andre svaret for å laste ned crontab.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *