如何在*nix的'top'命令输出中获取完整用户名?
我需要从我监控的一些*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
命令。