我有一个脚本foo,如果提供了一个参数“cc>”,除此之外,背景中的一个脚本start,并且退出-ccc>包含一个无限循环。
在稍后的阶段,我想用参数bar调用bar,我希望脚本foo,它仍然在后台运行,停止运行。
实现这一目标的教科书方法是什么?

最佳答案

如果多个bar实例可以同时运行,并且foo stop应该停止/杀死它们,请使用pkill

$ pkill bar

终止所有名为bar的进程。
如果只允许运行一个bar实例,那么使用“pidfile”的解决方案是可行的。
foo中:
pidfile=/var/run/bar.pid

if ((start)); then
    if [ -e "$pidfile" ]; then
        echo "$pidfile exists."
        # clean-up, or simply abort...
        exit 1
    fi
    bar &
    echo $! >"$pidfile"
fi

if ((stop)); then
    if [ ! -e "$pidfile" ]; then
        echo "$pidfile not found."
        exit 1
    fi
    kill "$(<"$pidfile")"
    rm -f "$pidfile"
fi

10-06 10:07