如何查找每个本地用户运行的作业

如何查找每个本地用户运行的作业

我感兴趣的是了解每个 Linux 用户执行了哪些应用程序/脚本。

我可以使用以下命令查找特定用户运行的作业数

ps -u <USERNAME> -U <USERNAME>

但是,它显示的是特定用户的工作,而我希望它适用于所有用户或所有本地用户。

例如,以下命令统计每个用户的作业数量

ps -eo user=|sort|uniq -c

我想要一个类似的命令,但我想查看用户运行的所有进程。谢谢。

@update 例如

Uname    PID   CMD    
user1    1010  systemd    
user1    1011  sshd    
user1    1012  bash   
user1    1013  ps    
user2    1020  systemd    
user2    1021  sshd    
user2    1022  bash    
user2    1023  ps    
user2    1024  tux    
user2    1025  python   
user2    1026  python    
.......    
.......    
.......    

答案1

您几乎已经完成了,只需要对用户名进行循环。编写一个 shell 脚本,例如ps_users.sh

 #!/bin/bash
 
 NUSERPROC=$(ps -eo user=|sort|uniq)
 
 for user in ${NUSERPROC} ; do
     echo "========= ${user} ========="
     ps -u ${user} -U ${user}
 done

(当然,不包括行号)然后运行sh ./ps_users.sh。调整循环的内容以满足您的需要。

答案2

列出属于特定用户,运行以下命令:

sudo crontab –u username –l

用实际的用户名替换用户名您正在观看。

相关内容