Non sono sicuro che questi siano gli unici motivi, ma ecco il mio trapano:
A seconda del modo in cui scrivi uno shellscript per uccidere il processo desiderato potresti finire per uccidere il kill PID prima che uccida il tuo obiettivo, prendiamo mydaemon ad esempio:
kill -9 `ps ax | grep mydaemon | awk '{ print $1 }'`
A) SIGPIPE-ing killIn un PID Linux a 32 bit di solito è un numero intero a 15 bit, gli overflow si verificano spesso, c'è una probabilità abbastanza grande che i PID grep o awk appaiano prima di quello di mydaemon . In numeri PID a 64 bit sono generalmente a 22 bit, è più di 100 volte meno probabile che accada, ma comunque abbastanza fattibile.
Uccidendo una delle tue pipe riceverai un SIGPIPE e di solito anche questo significa morte, quindi uccidi verrebbe ucciso prima di uccidere mydaemon rendendo il tentativo di uccisione un fallimento.
B) Uccidere altri PID Inoltre, supponi di avere vi /etc/mydaemon/mydaemon.conf in esecuzione del tutto, quel PID potrebbe anche essere ucciso, per non parlare dei processi di altri utenti poiché molto probabilmente avresti emesso tale comando come root.
C) È un semplice blocco simile a unix -> Nessun codice/daemon aggiuntivo richiesto.PidFiles crea un modo abbastanza semplice per creare blocchi gestibili dall'utente per impedirti di generare un demone due volte inavvertitamente.
I file pid contengono l'id del processo (un numero) di un determinato programma. Ad esempio, Apache HTTPD può scrivere il suo numero di processo principale in un file pid - che è un normale file di testo, nient'altro - e successivamente utilizzare le informazioni ivi contenute per arrestarsi. Puoi anche usare queste informazioni per terminare tu stesso il processo, usando cat filename.pid | xargs kill