[英]Show not logged users processes linux bash script
我正在执行一个bash脚本,并且在写这篇文章以显示未记录的用户进程,这些进程通常是守护进程,为此,在练习中,他们建议我:
要处理命令行,我们将使用cut命令,该命令允许通过过滤器选择列表的不同列。
我用了:
ps -A | grep -v w
ps -A | grep -v who
ps -A | grep -v $USER
但是尝试所有这些选项时,所有用户的所有进程都将打印在输出文件中,而我只希望未登录的用户的进程。
我感谢您的帮助
谢谢。
grep -vw
将删除与正则表达式w
(简单地是包含字符串w
任何东西)匹配的行。 要运行命令 w
您必须这样说: 但按照说明中的提示,您还需要使用cut
对输出进行后处理。
为了避免完全给出答案,这里提供了粗糙的伪代码。
w | cut something >tempfile
ps -A | grep -Fvf tempfile
如果可以在管道中传递w
的后处理结果,那就很好了,但是标准输入已经绑定到ps -A
。 如果您具有支持流程替换的外壳,则可以使用它。
ps -A | grep -Fvf <(w | cut something)
不幸的是, w
的输出不能被机器正确地读取-您也将适当地切掉标题行。 (在我的机器上,有两个标题行。您可能会有所不同。)您稍后可能会在课程中学到一些Awk,但是直到那时,
ps -A | grep -Fvf <(w | tail -n +3 | cut something)
这仍然不能完全解决所有可能的情况。 如果某人的帐户名是grep
怎么办?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.