Mostrar las ppid = 1

Imagen de Orton
0 puntos

Hola, acabo d empezar con bash, y me he encontrado el siguiente problema:

para mostrar procesos con ppid = 1 lo hago asi:

for i in `ps -Ao cmd,pid,ppid,etime,user | tr -s " " "_"`
do
padre=`echo $i | cut -d"_" -f3`
tiempo=`echo $i | cut -d"_" -f4`
if (($padre == 1)) ; then
echo "$padre $tiempo

 pero si el nombre de un proceso tiene espacios en blanco, el cut no coge bien los datos

¿que podria hacer?

Salu2

Imagen de joseluis
+1
0
-1

Se me ocurre que si cambias el orden de las columnas en el ps (poniendo el cmd, que es el que puede contener blancos, al final) creo que puedes hacerlo sin tener los problemas que comentas (es una chapucilla pero creo que funciona):

ps -Ao pid,ppid,etime,user,cmd | while read line; do
 proceso=`echo $line | cut -d" " -f1`
 padre=`echo $line | cut -d" " -f2`
 tiempo=`echo $line | cut -d" " -f3`
 usuario=`echo $line | cut -d" " -f4`
 comando=`echo $line | cut -d" " -f5-`
done

Fijate que para capturar el comando se pone también un guión (-) a continuación del 5 para que coja el campo 5 (el comando hasta el primer blanco) y todo lo que venga a continuación.


Lectura obligada:
+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de Orton
+1
0
-1

Okis, ahora si hace lo que debe, muxas gracias x todo

+1
0
-1