我读过this interesting question,基本上说我应该总是避免达到非子进程的进程的PID。它解释得很好并且非常有意义。
但是,虽然OP试图做一些cron不应该做的事情,但我处于一个非常不同的情况:
在这种情况下,获取“非子进程”的PID是否可以?如果是这样,我该怎么做?
我尝试过if pgrep "myscript"; then ...
或类似的东西,但是进程找到了自己的PID。我需要检测它是否找到多个。
(最初在被重定向之前我读了this question,但是给出的解决方案不起作用:它可以使用它给出进程的pid)
编辑:我之前应该提到它,但如果脚本已经在使用中,我仍然需要在日志文件中写一些东西,至少:date>>script.log; echo "Script already in use">>script.log"
,我可能是错了,但我认为flock不允许这样做。
答案 0 :(得分:1)
使用lckdo
或flock
以避免重复播放。
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.
当然,您可以自己实现这种原始锁定文件功能。
if [ ! -f /tmp/my.lock ];then
touch /tmp/my.lock
run prog
rm -f /tmp/my.lock
fi