可以使用Check PID以获取极少数例外吗?



我读了这个有趣的问题,基本上说我应该始终避免达到不是子过程的过程。这是很好的解释,并且完全有道理。

但是,当OP试图做Cron并不是要做的事情时,我处于截然不同的情况:

  1. 我想每5分钟说一次,但是一百次运行需要超过5分钟(我不能一次运行两个实例)。
  2. 我不想杀死或操纵其他过程,如果该过程的另一个实例正在运行,我只想结束我的过程。

在这种情况下,获取"非孩子过程"的PID可以吗?如果是这样,我该怎么办?

我已经尝试做if pgrep "myscript"; then ...或类似的事情,但是该过程找到了自己的pid。我需要检测到它是否找到一个以上


(最初是在重定向之前,我读了此问题,但是给出的解决方案无效:它可以使用它给出该过程的PID)

编辑:我以前应该提到它,但是如果脚本已经在使用,我仍然需要在日志文件中写入某些内容,至少: date>>script.log; echo "Script already in use">>script.log",我可能错了,但我认为羊群不允许这样做。

使用 lckdoflock避免重复运行。

DESCRIPTION
       lckdo runs a program with a lock held, in order to prevent multiple
       processes from running in parallel. Use just like nice or nohup.
       Now that util-linux contains a similar command named flock, lckdo is
       deprecated, and will be removed from some future version of moreutils.

当然,您可以自己实现此原始的Lockfile功能。

if [ ! -f /tmp/my.lock ];then
     touch /tmp/my.lock
     run prog
     rm -f /tmp/my.lock
fi

最新更新