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

0 投票
2 回答
3036 浏览
提问于 2025-04-17 17:18

我需要从我监控的一些*nix系统中提取进程的详细信息。需要的信息包括用户名、执行的命令、进程ID(PID)、父进程ID(PPID)、用户名和常驻内存使用情况。

如果内存使用超过某个阈值或者命令不合法,我需要给username@company.com的用户发送警告。

我正在用Python写一个脚本,通过执行'top -bc -n 1'来获取所需的数据,并用grep命令筛选出相关的命令关键词。不过,我还需要提取不合法进程的用户名,以便发送邮件警告。

但是,top命令会自动截断超过8个字符的用户名。我该如何获取完整的用户名呢?

2 个回答

2

考虑用 ps 来代替 top,因为我不知道有什么理由让 top 在这个任务上表现得更好。你可以比 top 更灵活地配置 ps 的输出结果。

0

使用用户的ID,然后解析这个ID来获取用户名:

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

还有,正如@wRAR所说,使用ps命令,而不是top命令。

撰写回答