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:
- Introduceți crontab-ul utilizatorului într-un fișier text folosind
crontab -l >crontab.txt
. - Manipulați fișierul text adăugând, eliminând sau modificând specificațiile lucrărilor.
- Î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
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 procesuluicron
, 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.
crontab -l
.