Per un servizio sebbene esista un file pid, ma quando si tenta di avviare il servizio, non riesce a dire:
$ sudo service cassandra start
* could not access pidfile for Cassandra
Ho verificato le autorizzazioni della cartella in /var/run
(il cui proprietario è root) e la sottocartella cassandra è di proprietà dell'utente cassandra, ma il servizio non può ancora accedere al file pid anche se ho verificato che esiste il file pid. (Anche pid è allocato). Allora perché dice che non può accedere a pidfile?
Ed eseguendo cassandra
come processo autonomo funziona, ma non solo usando service cassandra start
$ sudo ls -l /var/run/cassandra
total 4
-rw-r--r-- 1 cassandra cassandra 4 Mar 18 07:33 cassandra.pid
$ sudo su
# ls -ld /var/run/cassandra
dr--r----- 2 cassandra cassandra 60 Mar 18 07:38 /var/run/cassandra
Come faccio a farlo funzionare usando sudo service cassandra start
?
Risposta accettata:
Devi rimuovere /var/run/cassandra
cartella quindi ha permessi errati:
sudo rm -rf /var/run/cassandra
Oppure puoi correggere le autorizzazioni manualmente:
sudo chmod 750 /var/run/cassandra
Quindi avvia Cassandra come servizio:
sudo service cassandra start
Alcune spiegazioni
Le istruzioni sui permessi dei file le trovi qui.
-
È sicuro eliminare quella cartella perché viene ricreata con le autorizzazioni e il contenuto corretti. Ma non eliminarlo una volta che funziona correttamente. Potrebbe causare la perdita di dati o un comportamento non corretto.
-
chmod 750
decodifica come rwxr-x— autorizzazioni. Consente la lettura-scrittura-esecuzione all'utente, la lettura-esecuzione al gruppo e niente agli altri. Per Cassandra basta impostare i permessi così.