我正在做一个bash脚本,我正在散布显示未记录的用户流程,这些过程通常是守护程序过程,因此,在练习中,他们推荐我:
要处理命令行,我们将使用cut命令,该命令允许 通过过滤器选择列表的不同列。
我使用了:
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
的后处理结果,但是标准输入已经与ps -A
相关,那将是很好的。如果您有支持流程替代的外壳,则可以使用。
ps -A | grep -Fvf <(w | cut something)
不幸的是,w
的输出无法正确地可读 - 您也将正确地剪切标题线。(在我的计算机上,有两个标题线。您的可能会有所不同。)课程以后您可能会学到一些尴尬,但是直到那时,也许是类似
ps -A | grep -Fvf <(w | tail -n +3 | cut something)
这仍然不能完全处理所有可能的情况。如果某人的帐户名是grep
?