我应该使用什么命令行来执行以下操作?

我应该使用什么命令行来执行以下操作?

我应该使用什么命令行...

  1. 现在按字母顺序打印运行 bash 的用户列表
  2. 打印当前正在运行 bash 的用户数
  3. 保存当前正在运行 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.

相关内容