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

标签 linux bash shell scripting command

我正在做一个 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/

相关文章:

bash - 用 sed 替换更大部分中的一个单词?

linux - command_not_found_handler 不带斜杠

shell - 使用脚本在dockerfile中传递环境变量

linux - 编写shell脚本时如何使命令并发运行?

java - 在 native 代码中处理信号 - 在终端中使用 SIGSEGV 导致 JVM 崩溃

linux - 如何为位于/usr/bin 中的程序添加替代项

android - Appium 找不到 'appPackage' 参数

bash - 如何使用 shell 脚本自动化 dos2unix?

linux - 基于目录中现有文件创建文件的shell脚本

linux - 获取 bash 脚本以打开终端