Puede usar el -o
interruptor para especificar su formato de salida:
$ ps -eo args
Desde la página del manual :
Comando con todos sus argumentos como una cadena. Se pueden mostrar modificaciones a los argumentos. [...]
También puede usar el -p
interruptor para seleccionar un PID específico:
$ ps -p [PID] -o args
pidof
también se puede usar para cambiar de nombre de proceso a PID, permitiendo el uso de -p
con un nombre:
$ ps -p $(pidof dhcpcd) -o args
Por supuesto, también puede usar grep
esto (en cuyo caso, debe agregar el -e
interruptor):
$ ps -eo args | grep dhcpcd | head -n -1
GNU ps también le permitirá eliminar los encabezados (por supuesto, esto es innecesario cuando se usa grep
):
$ ps -p $(pidof dhcpcd) -o args --no-headers
En otros sistemas, puede canalizar a AWK o sed:
$ ps -p $(pidof dhcpcd) -o args | awk 'NR > 1'
$ ps -p $(pidof dhcpcd) -o args | sed 1d
Editar: si desea capturar esta línea en una variable, simplemente use $(...)
como de costumbre:
$ CMDLINE=$(ps -p $(pidof dhcpcd) -o args --no-headers)
o con grep
:
$ CMDLINE=$(ps -eo args | grep dhcpcd | head -n -1)
ps
(no recomendado) o está buscando algún comando alternativo paraps
obtener el resultado? ¿Qué hay que hacer cuando seps
obtienen múltiples líneas de salida? imprimir todo / primero / último?arg
comocommand
según la respuesta de @John ?pidof <process name>
ps -o pid, args | grep $ PID | tr -s "" | cut -d "" -f 2 Pero de esta manera no obtengo los args en una variable