Respuestas:
Línea de comando:
ps -o ppid= -p 1111
Función:
ppid () { ps -p ${1:-$$} -o ppid=; }
Alias (una función es preferible ):
alias ppid='ps -o ppid= -p'
Guión:
#!/bin/sh
pid=$1
if [ -z $pid ]
then
read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=
Si no se proporciona ningún PID a la función o al script, por defecto muestran el PPID del proceso actual.
Para usar el alias, se debe proporcionar un PID.
=
signo no es necesario, al menos en OS X 10.8.2.
Esta es una de esas cosas que aprendo, olvido, vuelvo a aprender, repito. Pero es útil. La bandera 's' del comando pstree muestra un árbol con una hoja en N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
El padre pid está en la variable de shell PPID, entonces
echo $PPID
$PPID
solo resolvió el problema que tenía que Google sugirió esta página como respuesta.
Para imprimir los identificadores principales ( PPID
) de todos los procesos, use este comando:
ps j
Para el proceso sola, sólo tiene que pasar el PID, como: ps j 1234
.
Para extraer solo el valor, filtre la salida por awk
, como:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Para enumerar los PID de todos los padres, use pstree
(instálelo si no lo tiene):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
Para obtener el PID primario del proceso actual, use echo $$
.
pstree
es el mejor que he visto aquí.
ps j
es genial porque está disponible en muchas distribuciones y es fácilmente composable
Leer / proc / $ PID / estado. Se puede escribir fácilmente:
#! / bin / sh P = $ 1 si [-z "$ P"]; entonces leer P fi cat / proc / "$ P" / estado | grep PPid: | grep -o "[0-9] *"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
es todo lo que necesitas. (Es muy raro que las herramientas de Unix hagan if [ -z ]; then read
lo mismo)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
.
grep /some/file
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
Un ejemplo un poco más complejo que verifica el comando de un padre que inició el proceso actual Cambie comm = a cmd = para ver el comando completo
Aquí hay una solución rápida que también debería funcionar:
ps $$
Corre top
con las opciones que quieras, como -u username and -p PID
.
Y mientras top
está trabajando f, presione , muestra una lista de opciones que desea mostrar en la top
salida, y los parámetros que se muestran se mostrarán en letras MAYÚSCULAS y los parámetros que se muestran o no se mostrarán en letras pequeñas.
Entonces, al ingresar la letra antes del parámetro, puede habilitarla o deshabilitarla. Para la ID del proceso principal, debe ingresar by luego presionar Enter, se mostrará el PPID en la salida superior.
htop
usted puede configurar la PPID
columna.
grep PPid status |cut -f2
como entime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; preguntarse si hay algo aún más rápido?