GNU/Linux >> Linux Esercitazione >  >> Linux

ps:modo pulito per ottenere solo processi genitori?

/usr/bin/pgrep -o <process_name>

dove '-o' è il più vecchio (avviato meno di recente) dei processi corrispondenti


Un'altra soluzione (da qui):

ps -ocommand= -p $PPID | awk -F/ '{print $NF}' | awk '{print $1}'

Dopo aver discusso con @netcoder sui commenti della sua risposta, ha usato un bel trucco:D
Utilizzando f il ps otterrà sempre il genitore in cima, il che è fantastico.

Dovrebbe funzionare:

$ ps hf -opid -C <process> | awk '{ print $1; exit }'

come menziono nei commenti, questo restituirà il pid di un solo processo.

Andrei con:

ps rf -opid,cmd -C <process-name> | awk '$2 !~ /^[|\\]/ { print $1 }'

ovvero:

  • elenca i processi in esecuzione r (o e se vuoi tutto)
  • insieme al grafico genitore/figlio f
  • visualizza solo il pid e il nome del comando -opid,cmd
  • solo per il processo specificato -C <process>

e poi

  • se il secondo campo - che è il comando (-opid,cmd ) - non inizia con \ o | allora è un processo genitore, quindi stampa il primo campo - che è il pid.

semplice test:

$ ps f -opid,cmd -Cchromium
  PID CMD
 2800 /usr/lib/chromium/chromium --type=zygote --enable-seccomp-sandbox
 2803  \_ /usr/lib/chromium/chromium --type=zygote --enable-seccomp-sandbox
 2899      \_ /usr/lib/chromium/chromium --type=renderer --enable-seccomp-sandbox --lang=en-US --force-fieldtrials=ConnCountImpact/conn_count_6/ConnnectB
 2906      |   \_ /usr/lib/chromium/chromium --type=renderer --enable-seccomp-sandbox --lang=en-US --force-fieldtrials=ConnCountImpact/conn_count_6/Connn
 [  ... snip ... ]
 2861      \_ /usr/lib/chromium/chromium --type=renderer --enable-seccomp-sandbox --lang=en-US --force-fieldtrials=ConnCountImpact/conn_count_6/ConnnectB
 2863          \_ /usr/lib/chromium/chromium --type=renderer --enable-seccomp-sandbox --lang=en-US --force-fieldtrials=ConnCountImpact/conn_count_6/Connn
 2794 /usr/lib/chromium/chromium --enable-seccomp-sandbox --memory-model=low --purge-memory-button --disk-cache-dir=/tmp/chromium
 2796  \_ /usr/lib/chromium/chromium --enable-seccomp-sandbox --memory-model=low --purge-memory-button --disk-cache-dir=/tmp/chromium
 3918  \_ /usr/lib/chromium/chromium --type=gpu-process --channel=2794.45.1891443837 --gpu-vendor-id=0x10de --gpu-device-id=0x0611 --gpu-driver-version -
25308  \_ [chromium] <defunct>
31932  \_ /usr/lib/chromium/chromium --type=plugin --plugin-path=/usr/lib/mozilla/plugins/libflashplayer.so --lang=en-US --channel=2794.1330.1990362572


$ ps f -opid,cmd -Cchromium | awk '$2 !~ /^[|\\]/ { print $1 }'
PID
2800
2794

$ # also supressing the header of ps (top line 'PID') -- add 'h' to ps
$ ps hf -opid,cmd -Cchromium | awk '$2 !~ /^[|\\]/ { print $1 }'
2800
2794

Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Bash =~ Regex e HTTPS://regex101.com/?

  3. La differenza tra /opt e /usr/local?

  4. Linux – Unire /usr/bin e /usr/sbin in /bin (gnu/linux)?

  5. Installa i binari in /bin, /sbin, /usr/bin e /usr/sbin, interazioni con --prefix e DESTDIR

gcc - /usr/bin/ld errore:impossibile trovare <library> in /usr/local/lib anche se ldconfig lo elenca e il percorso è stato aggiunto a ld.so.conf

Qual è il significato di /usr/sbin, /usr/local/sbin e /usr/local/bin?

Perché mettere cose diverse da /home in una partizione separata?

Differenza tra /bin e /usr/bin

Perché le directory /home, /usr, /var, ecc. hanno tutte lo stesso numero di inode (2)?

CentOS /usr/local/lib a livello di sistema $LD_LIBRARY_PATH?