pgrep命令不';不显示bash脚本

pgrep命令不';不显示bash脚本,bash,Bash,当我运行一个简单的bash脚本时,比如说myscript.sh #!/bin/bash sleep 30 从终端,然后执行pgrep myscript.sh我没有得到任何结果。为什么?您可能正在这样做: pgrep myscript.sh 这不会显示您正在运行的进程,因为正在运行脚本的是/bin/bash 你应该做: pgrep -fl myscript.sh 列出您的流程 根据man pgrep: -f在进程的完整参数字符串中的任何位置匹配模式,而不仅仅是可执行文件名 您正在运行bash

当我运行一个简单的bash脚本时,比如说
myscript.sh

#!/bin/bash
sleep 30

从终端,然后执行
pgrep myscript.sh
我没有得到任何结果。为什么?

您可能正在这样做:

pgrep myscript.sh
这不会显示您正在运行的进程,因为正在运行脚本的是
/bin/bash

你应该做:

pgrep -fl myscript.sh
列出您的流程

根据
man pgrep

-f
在进程的完整参数字符串中的任何位置匹配模式,而不仅仅是可执行文件名


您正在运行bash脚本,需要使用-f标志,请检查 检查您的计算机中是否安装了pgrep。如果没有找到安装该实用程序的命令,只需执行
manpgrep

pgrep查看当前运行的进程,并列出与标准输出匹配的进程ID。所有标准都必须匹配

用法示例:

pgrep name | xargs kill
如果使用pgrep name | kill,则pgrep name的输出将馈送到kill的stdin。因为kill不从stdin读取参数,所以这不起作用

使用xargs,它将从stdin为kill构建参数。例如:

$ pgrep bash | xargs echo
5514 22298 23079