Pipe PID de ciertos processs de UNIX en ls -l

Ejecuto códigos SAS a través de bash.

Entonces, cuando hago una ps -u <user-id> … (1) obtengo lo siguiente:

  UID PID TTY TIME CMD 327208 921620 - 0:00 sftp-server 327208 1409136 - 0:00 sshd 327208 1503426 pts/24 0:00 ps 327208 1683576 pts/24 0:00 elssrv 327208 2334914 pts/24 0:00 ksh 327208 2609352 pts/24 0:00 sas 327208 2838702 pts/24 0:04 sas 327208 3490018 pts/24 0:00 elssrv 327208 4436128 - 0:00 sftp-server 327208 4722852 pts/24 369:02 sas 327208 4964572 pts/24 0:00 elssrv 327208 5959866 - 0:01 sshd 327208 5976318 - 0:01 sshd 

Ahora, si hago ps -u <user-id>|grep sas … (2)

Obtengo los processs de sas:

 327208 2609352 pts/24 0:00 sas 327208 2838702 pts/24 0:05 sas 327208 4722852 pts/24 369:51 sas 

Por otro lado, si hago un ls -l /proc/4722852/cwd , … (3) obtengo la location donde ejecuté el process con PID 4722852.

¿Hay alguna forma de conectar el command en (2) y (3)?

El resultado sería la location de todos los códigos SAS que obtengo ejecutando ps -u <user-id>|grep sas ?

Sí, hay una manera muy fácil de hacerlo. En realidad, hay muchas maneras de get lo que desea, dependiendo de la cantidad de información que desea get. La primera forma en que puedo pensar:

 ps -u <userid> | grep sas | awk '{print $2}' | xargs ls -l 

Los primeros dos commands hacen exactamente lo que hacen en su segundo command. El command awk imprime solo el segundo elemento de cada línea (elementos separados por espacios en blanco de forma pnetworkingeterminada), el command xargs dice "pase lo que ve en STDIN al siguiente command como parameters".