2010-10-18 9 views
11

C'è un posto preferito per memorizzare un file pid per un demone che viene eseguito come utente?/var/run è il posto standard, ma questo è per un demone utente quindi non ha i privilegi di scrittura lì. Presumibilmente il mio demone verrà avviato da .profile o .bashrc o qualcosa del genere. Lo stai salvando in/tmp una cattiva idea?Memorizzare il file pid per un demone eseguito come utente

+2

Salvataggio in/tmp non va bene dal momento che ogni convenzione di denominazione che ci si inventa (ad esempio '/ tmp// .pid') potrebbe essere già utilizzato da un'altra app e non sarà possibile creare il file. Utilizzando un dirname casuale sotto '/ tmp' rovina l'idea di file di pid - per essere in grado di ottenere il pid rapidamente senza la scansione della lista dei processi. –

risposta

8

Se è in esecuzione per un utente, vediamo, quale tipo di memoria esiste che è specifica dell'utente.

Hmmm.

Questo è tutto! La directory principale. Sapevo che sarebbe venuto da me alla fine :-)


Ci scusiamo per il colpo di luce. Scherzi a parte, vorrei solo riporre il PID in $HOME/.daemon.pid o ~/.daemon.pid (come il nome del file è fino a voi, naturalmente).

Questo ovviamente presuppone che sia in esecuzione un solo daemon per un utente. In caso contrario, dovrai essere un po 'più complicato.


E si spera placare le tue paure che un utente inavvertitamente eliminare file sconosciuti nella loro home directory, è per questo che si rendono "nascosto" iniziando con un carattere ..

La maggior parte degli utenti non esperti non dovrebbe mai nemmeno vedere e gli utenti esperti dovrebbero sapere meglio di non intromettersi con loro.

+0

Bene l'utente vede la directory Hom, e penso che sarebbero più propensi a eliminare il file se lo vedono in ~ non sapendo cosa fosse – Falmarri

+1

@Falmarri: E qual è il pericolo in questo? Se hai davvero bisogno del PID, puoi sempre guardare nella tabella dei processi. Il file PID è solo una comodità. –

+4

Ecco perché si mette un '.' di fronte ad esso. Gli utenti che non sanno quello che stanno facendo probabilmente non sapranno nemmeno che esiste. E se vedono regolarmente i file nascosti, un solo errore che cancella '.bashrc' insegnerà loro l'errore dei loro modi :-) Se sei veramente _ paranoico, metti il ​​PID in ~ ~/.dont_EVER_delete_me_or_you_WILL_be_sorry/.daemon.pid' . – paxdiablo

0

Suggerisco di andare per una sottodirectory all'interno della home directory dell'utente.

~/.programname/.pid 

Se ci sono dei altri dati di configurazione utente, è possibile memorizzare che anche qui, al fine di evitare di ingombrare la directory home.

8

Il XDG Basedir specification definisce dove è necessario memorizzarli.
La variabile $XDG_RUNTIME_DIR definisce la sua posizione, anche se non ha alcun valore predefinito.
Il fallback più comune (se la variabile non è impostata) è /tmp/service-$USER.id.

Questo aiuta a mantenere directory home ordinato, pur mantenendo tutti i dati di runtime in

Problemi correlati