我应该使用什么命令行...
- 现在按字母顺序打印运行 bash 的用户列表
- 打印当前正在运行 bash 的用户数
- 保存当前正在运行 bash 的用户列表并打印计数
答案1
我假设您还不太熟悉 Unix,或者您不会问这个问题,所以我将包括您得出这样的命令的思考过程。然后你就可以自己找到下一个了。
首先,您需要获取正在运行的进程的列表。要列出正在运行的进程,您可以使用ps
.您可能已经知道了,但这是一个很好的起点。您见过类似的命令ps ax
,这意味着列出所有 ( a
),甚至那些没有关联 tty ( x
) 的命令。
所以现在需要告诉它选择所有进程(a
),并显示可执行文件的文件名(c
)。您可以包含x
或不包含:任何交互bash
肯定都会有关联的 tty,但 shell 脚本可能没有,因此是否包含它取决于您的需要。为了更容易解析其输出,将其输出限制为我们感兴趣的值也很方便,即用户和命令 ( o user,command
)。
这给出了以下内容:
$ ps aco user,command
root login
root bash
user bash
root bash
user lynx
...
现在您需要对其进行过滤以查找bash
每个用户的实例。为此,您可以awk
使用 script将其通过管道传输到$2=="bash" { print $1 }
,这意味着“如果第二列是“bash”,则打印第一列”。
$ ps aco user,command | awk '$2=="bash" {print $1}'
root
user
root
sort
最后,您想要使用和对输出进行排序并删除重复项uniq
。
$ ps aco user,command | awk '$2=="bash" {print $1}' | sort | uniq
root
user
如果你想要数量运行“bash”的用户数,您可以只计算其输出中的行数:
$ ps aco user,command | awk '$2=="bash" {print $1}' | sort | uniq | wc -l
2
然后,您可以使用输出重定向将这些输出写入文件,即command > file
.