Bash 通用 "ps aux"按严格名称处理

标签 bash generics awk ps

我试图让 ps aux 命令只列出真正的 ssh-agent 进程。我注意到在某些发行版上,我出现了不需要的进程,例如命令颜色等。我需要这样做,因为我需要确保真正的 ssh-agent 进程在脚本中运行(不用麻烦,我已经有一个循环...)。

所以我发现我需要在我的测试例程中使用类似的东西:

#!/bin/bash
ps aux | grep ssh-agent | grep -v grep | awk '{print $12}'

我的问题是:awk $12 是否可以在使用任何 bash 版本的 bash 的任何 unix/linux 环境上运行?

此外,如果我删除“grep -v grep”并执行此操作:

ps aux | grep ssh-agent | awk '{print $12}'

输出是:

ssh-agent
ssh-agent

现在:

ps aux | grep ssh-agent

输出是:

foo 18153478  0.0  0.0  536  844      - A      Apr 25  0:00 ssh-agent
foo 31260886  0.0  0.0  252  264  pts/0 A    22:38:41  0:00 grep ssh-agent

这意味着,“grep ssh-agent”之间的空格被 awk 命令解释为分隔符。有什么可以克服的吗?我已经尝试过使用制表符分隔符,但事实并非如此。命令的分隔符似乎是简单的“空格”字符。是否可以为“ps”命令输出强制使用制表符分隔符?

有什么想法吗?

最佳答案

好吧,我想我找到了,非常简单直接:

ps -e -o pid,comm | grep ssh-agent

工作得很好。

在这里找到答案:https://unix.stackexchange.com/questions/22892/how-do-use-awk-along-with-a-command-to-show-the-process-id-with-the-ps-command/22895#22895

并用 | 改编grep ssh 代理

也由 Martin 建议。感谢大家分享您的经验!

关于Bash 通用 "ps aux"按严格名称处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16472509/

相关文章:

arrays - 在 shell 脚本中连接数组以创建备份文件路径

java - 如何为java进程创建PID文件

java - 重用扩展特定类的泛型类型 T

c# - 如何从 List<Tuple<int, int, string>> 获取字符串数组?

linux shell进程文本

bash - 带有 I/O 重定向的代码块 `{...}` 是如何工作的?

linux - 使用 awk 命令行组合列

c# - 泛型类,如何在运行时设置类型?

awk - 来自awk中多个输入的输出匹配列

awk 匹配同一行中两个文件中的两个字段