Ho creato uno script che aggiungerà un cron job basato sulle specifiche dellutente ma non funzionerà poiché devo aggiornare cron ogni volta Aggiungo un lavoro in crontab. Cè un modo per aggiornare cron senza interrompere il processo?
Answer
Finché il tuo lo script utilizza crontab
per aggiungere ed eliminare le specifiche del lavoro per lutente, non sarebbe necessario riavviare il demone cron
.
La pagina di manuale di AIX 7.1 cron riporta :
Quando apporti modifiche ai file crontab utilizzando il comando
crontab
, viene inviato un messaggio che indica la modifica al demone cron.
Consulta anche il il crontab
manuale .
Il flusso generale di azioni che il tuo script eseguirà prendere:
- Ottieni il crontab dellutente in un file di testo usando
crontab -l >crontab.txt
. - Manipola il file di testo aggiungendo, rimuovendo o modificando le specifiche del lavoro.
- Carica il crontab dellutente con le nuove specifiche usando
crontab crontab.txt
.
I comandi nel primo e nellultimo passaggio devono essere eseguiti come utente (il primo passaggio potrebbe anche essere eseguito come crontab -l username >crontab.txt
come ad es root).
Funzionerebbe su qualsiasi Unix utilizzando cron
.
Commenti
Risposta
AIX 7.1 pagina di manuale di cron :
Il Il demone cron legge il file di configurazione quando è attivato e quando riceve il segnale di blocco.
Quindi kill -HUP cron_pid
dovrebbe farlo.
Commenti
- Lho già provato ma vorrei aggiornare la mia configurazione senza interrompere il processo
- @Shan Il comando
kill
invia segnali al processo. In generale, i processi possono essere uccisi, cioè muoiono effettivamente, ricevendo un segnale. Ma in caso di processocron
gestisce il segnale, non muore e rilegge la sua configurazione. - La parte della pagina man che hai citato è riferendosi a cron ' s file di configurazione ,
/etc/cronlog.conf
, non ai file crontab stessi. - Non posso trasformare questo in una risposta per questa domanda; quando modifico manualmente un file crontab e cron HUP, il nuovo cron job non viene eseguito.
- @JeffSchaller è corretto, devi uccidere -9 cron_pid o usare crontab su un file crontab come suggerito da Kusalananda nellaltra risposta per ricaricare il crontab.
crontab -l
.