Obtenga una lista de tareas iniciadas por un usuario en un sistema Linux

1

Necesito ejecutar tareas que son iniciadas por un usuario. Intenté varios comandos como

xlsclients

Este comando hace casi lo que necesito, pero es la falta de información del usuario. Enumera todas las tareas (en realidad Windows) a la vez sin nombre de usuario.

ps aux -u *username*

Esto proporciona procesos por usuario pero también incluye todas las tareas del sistema, como:

/sbin/getty -8 38400 tty4
/usr/sbin/gpm -m /dev/input/mice -t exps2 

etc.

Así que quiero enumerar las tareas ejecutadas por un usuario pero excluyendo las relacionadas con el sistema.

Mustafa Orkun Acar
fuente
¿Cómo define "tareas relacionadas con el sistema"?
un CVn
Las tareas no fueron iniciadas por el usuario. Por ejemplo; si el usuario inicia sesión e inicia un navegador, solo quiero ver google-chrome.
Mustafa Orkun Acar
Todavía no entiendo lo que quieres decir con "tareas relacionadas con el sistema": ¿programas GUI, comandos en segundo plano, comandos huérfanos u otra cosa?
l0b0
Todo lo que mencionaste es lo que quise decir.
Mustafa Orkun Acar

Respuestas:

1

Si desea procesos no huérfanos :

  • pgrep -u "$USER" imprime los PID iniciados por el usuario actual
  • pgrep -u "$USER" -P 1 imprime los PID huérfanos iniciados por el usuario actual

Combinando estos puede obtener los PID no huérfanos iniciados por el usuario actual:

pgrep -u "$USER" | grep -Fvx "$(pgrep -u "$USER" -P 1)"

Se puede pasar la lista resultante en ps, topu otros programas para obtener los detalles de cada proceso.

l0b0
fuente