GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare il file .pid per un determinato processo

Soluzione 1:

Di solito troverai i file PID per i processi demonizzati in /var/run/ su sistemi in stile Redhat/CentOS.

A parte questo, puoi sempre guardare nello script init del processo. Ad esempio, il demone SSH viene avviato con lo script in /etc/init.d/sshd . A volte il PID verrà definito lì (cerca pid, PID, PIDFILE, PID_FILE, ecc.).

Tuttavia, la maggior parte degli altri demoni sui sistemi in stile RHEL generano /etc/init.d/functions script per alcune funzionalità comuni.

# Set $pid to pids from /var/run* for {program}.  $pid should be declared
# local in the caller.
# Returns LSB exit code for the 'status' action.
__pids_var_run() {
        local base=${1##*/}
        local pid_file=${2:-/var/run/$base.pid}

Per tutto ciò che genera /etc/init.d/functions , il PID risiederà in /var/run/*.pid .

Per le applicazioni personalizzate, il PID verrà definito in uno script wrapper (si spera). Tuttavia, la maggior parte degli sviluppatori che conosco seguono la stessa convenzione dei demoni di cui sopra.

Se lo fai incontri qualcosa senza un file PID, ricorda che Monit può monitorare anche su un patern di stringhe di processo.

Soluzione 2:

Un altro approccio che ho adottato:

Ho un server di database in esecuzione in modalità incorporata ei dati si trovano all'interno della directory dell'applicazione che li contiene.

Il database ha qualcosa di simile a un file .pid, ma lo chiama file di blocco. Per individuare questo file di blocco, ho elencato tutti i file tenuti aperti dall'app:

$ ls -l /proc/18264/fd | cut -d'>' -f2

Questo mi ha fornito un lungo elenco che include socket, pipe, file del server, ecc. Pochi filtri e sono arrivato a ciò di cui avevo bisogno:

$ ls -l /proc/18264/fd | cut -d'>' -f2 | grep /home/ | cut -b40- | sort | uniq | grep titan

/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/00000000.jdb
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.info.0
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.info.0.lck
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.lck

Linux
  1. Come verificare la presenza di file di grandi dimensioni nella console

  2. Come trovare il modulo del kernel per un determinato dispositivo?

  3. Come trovare l'applicazione per un tipo Mime su Linux?

  4. Come trovare il processo con il numero massimo di descrittori di file?

  5. Come trovo l'ID del processo in Ubuntu?

Come trovare un nome di processo utilizzando il numero PID in Linux

Come trovare il nome del processo dal suo PID

Come trovare il PID e il PPID di un processo in Linux

Come trovo la posizione MySQL my.cnf

Come posso specificare il file chiave per sshfs?

Come trovare il file manager predefinito?