Lavori in background da cron


1

Sto eseguendo un cron ogni due minuti. Dal cron sto eseguendo altri script di shell in background con "&". Dopo che cron esce dal processo di shell shell generato, questo è il comportamento desiderato.

Ma conduce a qualsiasi processo di zombi quando esce lo script figlio. Devo prendere in considerazione casi speciali?

Risposte:


2

probabilmente (dovrei verificare per essere sicuro) ma in ogni caso è possibile memorizzare i PID dei processi biforcati e ucciderli all'uscita:

my_forked_process & my_forked_pid=$!

dato che hai detto "altre shell", suppongo che ce ne siano alcune, quindi dovremmo usare un array:

my_forked_pids=()
my_forked_process1 & my_forked_pids+=($!)
my_forked_process2 & my_forked_pids+=($!)

poi li uccidi in questo modo all'uscita:

for pid in "${my_forked_pids[@]}"; do
    kill "$pid"
done

[bonus] se avvolgi la precedente su una funzione puoi impostare a trapper eseguirla quando lo script esce indipendentemente dal momento (sicurezza per quando viene ucciso prematuramente):

trap cleanup_function 0

0 è un segnale speciale che significa "all'uscita"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.