我正在做一个 bash 脚本,我正在尝试显示未登录的用户进程,这些进程通常是守护进程,为此,在练习中,他们推荐我:
To process the command line, we will use the cut command, which allows selecting the different columns of the list through a filter.
我用过:
ps -A | grep -v w
ps -A | grep -v who
ps -A | grep -v $USER
但是尝试了所有这些选项,所有用户的所有进程都打印在输出文件中,我只想要未登录用户的进程。
感谢你的帮助
谢谢。
最佳答案
grep -v w
将删除与正则表达式 w
匹配的行(它只是包含字符串 w
的任何内容)。要运行命令 w
,您必须这么说;但正如说明中所暗示的,您还需要使用 cut
对输出进行后期处理。
为了不完全给出答案,这里是粗略的伪代码。
w | cut something >tempfile
ps -A | grep -Fvf tempfile
如果您可以在管道中传递 w
的后处理结果会很好,但是标准输入已经绑定(bind)到 ps -A
。如果你有一个支持 process substitution 的 shell ,您可以使用它。
ps -A | grep -Fvf <(w | cut something)
不幸的是,w
的输出不是机器可读的——您也应该适本地删除标题行。 (在我的机器上,有两个标题行。你的可能不同。)你可能会在类(class)的后面学习一些 Awk,但在那之前,可能像
ps -A | grep -Fvf <(w | tail -n +3 | cut something)
这仍然不能完全处理所有可能的情况。如果某人的帐户名是 grep
怎么办?
关于linux - 显示未登录的用户进程 linux bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47446058/