当我ps aux | grep mongod
时,我得到了
mongod 53830 0.1 0.3 247276 27168 ? Sl Apr04 128:21 /var/lib/mongodb-mms-automation/mongodb-mms-monitoring-agent-5.4.4.366-1.rhel7_x86_64/mongodb-mms-monitoring-agent
mongod 104378 0.6 0.8 469384 71920 ? Ssl Mar22 571:03 /opt/mongodb-mms-automation/bin/mongodb-mms-automation-agent -f /etc/mongodb-mms/automation-agent.config -pidfilepath /var/run/mongodb-mms-automation/mongodb-mms-automation-agent.pid >> /var/log/mongodb-mms-automation/automation-agent-fatal.log 2>&1
mongod 104471 0.6 5.4 1993296 433624 ? Sl Mar22 578:03 /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-3.4.13/bin/mongod -f /data/mdiag/data/automation-mongod.conf
但是,我只对输出第三个条目的user
感兴趣,该条目运行实际的mongod
进程。我希望输出只是
mongod
我如何调整ps
,grep
和awk
来执行此操作?
答案 0 :(得分:1)
将其传输到awk并搜索:
ps aux | grep mongod | awk '/bin\/mongod /{print $8}'
有了这个你可以放弃grep并让awk进行搜索:
ps aux | awk '/bin\/mongod /{print $8}'
这是在搜索字符串" bin / mongod"记录中的任何地方,然后返回该记录的第8个位置。
答案 1 :(得分:1)
尝试使用shell命令来获取该用户很可能会破坏。你能使用PID选项启动mongod
吗?
/var/lib/mongodb-mms-automation/mongodb-linux-x86_64-3.4.13/bin/mongod -f /data/mdiag/data/automation-mongod.conf --pidfilepath /run/mongodb-pid.txt
然后,您只需运行ps $(cat /run/mongodb-pid.txt)
即可获得所需的特定流程。
答案 2 :(得分:1)
最好指定模式以匹配我们感兴趣的COMMAND字段的第一部分的结尾。另外,使用括号表达式代替\/
至少使我的眼睛看起来更快乐用于匹配文件路径的模式。
ps aux | awk -v command=11 -v user=1 '$command ~ /[/]bin[/]mongod$/ { print $user }'
答案 3 :(得分:0)
或许过滤出代理商?
$ ps aux | awk '/mongod/ && !/agent/{print $1}'
答案 4 :(得分:0)
关注awk
可能会有所帮助。
ps aux | awk '/mongod/ && /automation-mongod.conf/{print $8}'
OR
ps aux | awk '/mongod/ && /\/data\/mdiag\/data\/automation-mongod.conf/{print $8}'