如何在 *nix 中'top'命令的输出中获取完整的用户名?



我需要从我监视的几个*nix系统的top命令中提取进程细节。需要的详细信息包括用户名、执行的命令、PID、PPID、用户名和常驻内存消耗。

如果内存使用率大于阈值或命令非法,我需要在username@company.com

向用户发送警告。

我正在写一个脚本在python中做到这一点,并通过执行'top -bc -n 1'和grepping命令关键字来获得所需的数据。但是,我还需要为发送邮件警告的非法进程提取用户名。

但是,top会自动截断大于8个字符的用户名。如何检索完整的用户名?

考虑使用ps而不是top,因为我不知道top为什么更适合这项任务。

配置ps输出比配置top输出灵活得多。

使用用户id,然后解析它以获得用户名:

getent passwd | grep <UID> | awk -F: '{ print $1; }'

那,就像@wRAR说的,用ps代替top