显示未记录的用户进程linux bash脚本

时间:2017-11-23 00:58:50

标签: linux bash shell scripting command

我正在做一个bash脚本,我正在试图显示未记录的用户进程,这通常是守护进程,为此,在练习中,他们建议我:

  

要处理命令行,我们将使用允许的cut命令   通过过滤器选择列表的不同列。

我用过:

ps -A | grep -v w
ps -A | grep -v who 

ps -A | grep -v $USER

但尝试所有这些选项所有用户的所有进程都打印在输出文件中,我只想要未记录的用户的进程。

感谢您的帮助

谢谢。

1 个答案:

答案 0 :(得分:1)

grep -v w将删除与正则表达式w匹配的行(这只是包含字符串w的任何内容)。要运行命令 w,您必须这样说;但正如说明书中暗示的那样,您还需要使用cut对输出进行后期处理。

为了不完全给出答案,这是粗略的伪代码。

w | cut something >tempfile
ps -A | grep -Fvf tempfile

如果您可以在管道中传递w的后处理结果,那会很好,但标准输入已经绑定到ps -A。如果你有一个支持process substitution的shell,你可以使用它。

ps -A | grep -Fvf <(w | cut something)

不幸的是,w的输出不适合机器读取 - 你也会想要切出标题行。 (在我的机器上,有两个标题行。你可能会有所不同。)你可能会在课程中稍后学习一点Awk,但在那之前,可能会像

一样
ps -A | grep -Fvf <(w | tail -n +3 | cut something)

这仍然无法完全处理所有可能的情况。如果某人的帐户名称为grep,该怎么办?