# "/var/run/mysqld/mysqld.pid" is still present

## fbcyborg

Salve a tutti, 

torno ad avere problemi con lo start di mysqld all'avvio del mio portatile.

La cosa stranissima è che ciò non accade sempre, quindi ciò può risultare un problema anche peggiore.

Tipicamente all'avvio ottengo questo messaggio di errore:

```
 * Starting mysql ...

 * Starting mysql (/etc/mysql/my.cnf)

 * MySQL NOT started (0)
```

Il problema è del tutto "compatibile" con quello trattato quì.

La cosa che non va bene è che l'iter che serve a completare lo start di tutti i servizi si interrompe sulla seconda delle tre righe precedenti e causa il non avvio immediato di quelli seguenti. Infatti, per far sì che l'iter continui (una volta che KDM mi si è presentato e ho fatto login) devo fare CTRL+ALT+F1 e subito riprendono tutti gli start degli init script. Ovviamente poi sono costretto a tornare su F7, per il normale utilizzo.

Inizialmente avevo circoscritto il problema modificando la funzione depend() dell'init script di mysql, facendo in modo che contenesse il nome dell'ultimo script che in genere viene avviato (nel mio caso apache), ma ora il problema si sta facendo veramente pesante.

Avviato il mio windows manager, con mysql non ancora in esecuzione, apro una shell e faccio quanto segue:

```
# /etc/init.d/mysql start

 * Caching service dependencies ...                                                                                                       [ ok ]

 * Starting mysql ...

 * "/var/run/mysqld/mysqld.pid" is still present and the process is running.

 * Please stop it "kill 7092" maybe ?
```

Poi, nuovamente, senza aver fatto nient'altro, subito dopo rifaccio la stessa cosa, et voilà:

```
# /etc/init.d/mysql start

 * Starting mysql ...

 * Starting mysql (/etc/mysql/my.cnf)                                                                                                     [ ok ]
```

Come per magia è partito senza alcun problema.

Analizzando il file /etc/init.d/mysql ho inquadrato le rige di codice 194-205 (che riporto), ed in particolare la riga 198.

```
if [[ -f "${pidfile}" ]] ; then

      kill -15 $(< ${pidfile}) 2>/dev/null

      if [[ $? -eq 0 ]] ; then

         # the process exist, we have a problem

         eerror "\"${pidfile}\" is still present and the process is running."

         eerror "Please stop it \"kill $(< ${pidfile})\" maybe ?"

         wdebug 4 "<<< checkconfig() KO"

         return 1

      else

         rm -f "${pidfile}"

      fi

   fi
```

Ora vorrei capire perché quel kill -15 [...] a volte funziona e a volte no.

Magari il problema non sta in mysql ma in qualche altra parte.

Qualcuno può aiutarmi?

----------

## nikko96

Hai provato ad abilitare il debug in /etc/conf.d/mysql ?

E vedere se ti dà qualche informazione in più, ciao.

----------

## djinnZ

sigterm termina solo i processi regolarmente attivi ma agli zombie non fa nulla ed implica un certo lasso di tempo visto che non lo "uccide" ma gli ordina di fermarsi ovvero almeno gli lascia il tempo di rilasciare tutti i file (per quel che ricordo).

Forse l'initscript dovrebbe aspettare un minimo di tempo per vedere se il processo è ancora attivo e nel caso procedere alla sua chiusura con sigkill od alla rimozione del pidfile.

per l'errore al riavvio prova ad eliminare manualmente il pidfile prima di lanciare mysql start.

----------

## fbcyborg

Ho già provato a metterlo in debug al livello 4 ma non ho trovato nulla di particolarmente significativo.

Inoltre, al fine di assicurarmi che il mysql.pid file fosse eliminato, avevo messo un comando in /etc/conf.d/local.stop (così al riavvio successivo non ci sarebbe stato), ma la cosa non mi ha dato buoni risultati, anzi, tutt'altro.

----------

