我想构建一个小脚本(称为check_process.sh
)来检查某个进程$PROC_NAME
是否正在运行。如果是,则返回其 PID,否则返回 -1。
我的想法是pgrep -f <STRING>
在命令替换中使用。
如果我直接在命令行中运行此代码:
export ARG1=foo_name
export RES=$(pgrep -f ${ARG1})
if [[ $RES == "" ]]; then echo "-1" ; else echo "$RES"; fi
一切正常:PID
或-1,具体取决于进程状态。
我的脚本check_process.sh
包含相同的行加上一个额外的变量来传递进程的名称:
#!/bin/bash
export ARG1=$1
export RES=$(pgrep -f ${ARG1})
if [[ $RES == "" ]]; then echo "-1" ; else echo "$RES"; fi
但是这段代码不起作用!如果进程当前正在运行,我会得到两个 PID
(进程的 PID 和其他东西......),而当我检查一个没有运行的进程时,我会得到其他东西!
我很困惑。任何想法?提前致谢!