Am creat un script care va adăuga o lucrare cron pe baza specificațiilor utilizatorului, dar nu va funcționa, deoarece trebuie să reîmprospătez cron de fiecare dată Anexez o slujbă în crontab. Există o modalitate de a reîmprospăta cron fără a ucide procesul?

Răspuns

Atâta timp cât scriptul folosește crontab pentru a adăuga și șterge specificațiile lucrărilor pentru utilizator, nu ar fi nevoie să reporniți daemonul cron.

Pagina manualului cron AIX 7.1 cron spune :

Când efectuați modificări la fișierele crontab utilizând comanda crontab, un mesaj care indică modificarea este trimis demonului cron.

Consultați, de asemenea, manualul crontab .

Fluxul general de acțiuni pe care l-ar face scriptul dvs. take:

  1. Introduceți crontab-ul utilizatorului într-un fișier text folosind crontab -l >crontab.txt.
  2. Manipulați fișierul text adăugând, eliminând sau modificând specificațiile lucrărilor.
  3. Încărcați crontab-ul utilizatorului cu noile specificații folosind crontab crontab.txt.

Comenzile din primul și ultimul pas trebuie executate ca utilizator (primul pas ar putea fi executat și ca crontab -l username >crontab.txt ca de ex root).

Acest lucru ar funcționa pe orice Unix folosind cron.

Comentarii

  • Ce se întâmplă dacă există locuri de muncă existente? Trebuie să-l pun mai întâi în același fișier text, apoi să adaug noua lucrare înainte de a o încărca în crontab?
  • @Shan După cum am menționat, veți obține crontabul curent pentru utilizator, apoi îl modificați înainte de al încărca din nou. Deci da, ați adăuga noi lucrări la fișierul produs de crontab -l.

Răspuns

AIX 7.1 pagina manualului cron spune :

Demonul cron citește fișierul de configurare când este activat și când primește semnalul de blocare.

Deci, doar kill -HUP cron_pid ar trebui să o faci.

Comentarii

  • Am încercat deja acest lucru, dar aș dori să îmi reîmprospătez configurația fără să omoare procesul. > @Shan Comanda kill trimite semnale către proces. În general, procesele pot fi ucise, adică mor de fapt, prin primirea unui semnal. Dar, în cazul procesului cron, acesta gestionează semnalul, nu moare și recitește configurația acestuia.
  • Porțiunea din pagina de manual pe care ați citat-o este referindu-se la cron ' s fișier de configurare , /etc/cronlog.conf, nu la fișierele crontab în sine.
  • Nu pot transforma acest lucru într-un răspuns pentru această întrebare; când editez manual un fișier crontab și cron HUP, noua lucrare cron nu este executată.
  • @JeffSchaller este corect, fie trebuie să ucideți -9 cron_pid, fie să utilizați crontab pe un fișier crontab, așa cum sugerează Kusalananda în celălalt răspuns pentru a reîncărca crontabul.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *