问题描述
我在 Freebsd9.2
上。(我必须使用这个操作系统)我想用 at 命令运行多个脚本,但我想忽略同时运行一个脚本。
例如:我有3个脚本文件:1.sh、2.sh、3.sh
今天16:20我有一个作业要执行1.sh,当我用相同的时间和脚本运行at命令时,/var/at/jobs
中的作业数量变成了2个作业.我想忽略这一点,但脚本 2.sh 可以同时运行。你知道我该怎么做吗?
解决方法
我不知道我是否正确理解了问题,但命令 lockf 可能会有所帮助。
例如在一个终端上试试这个:
$ lockf -t 0 /tmp/a.lock sleep 5
在另一个终端运行:
$ lockf -t 0 /tmp/a.lock echo "sleep finished"
在此示例中,直到命令 sleep 5
不退出,如果您尝试运行另一个命令,您将得到如下结果:
lockf: /tmp/a.lock: already locked
cron
示例:
15 4 * * * lockf -t 0 /tmp/poudriere.lock /usr/local/etc/poudriere.d/cron 12amd64 default
如果锁存在,这会阻止运行脚本/应用程序,因此您可能了解如何通过 at