如何仅在文件存在时运行 crontab 作业?

mem*_*und 7 bash cron ubuntu

是否可以检查 crontab oneliner 中是否存在文件,并且仅在该文件存在时才执行脚本?

伪代码:

* * * * * <if /tmp/signal.txt exists> run /opt/myscript.sh
Run Code Online (Sandbox Code Playgroud)

Kus*_*nda 27

使用普通测试是否存在,如果测试成功则运行脚本。

* * * * *       if [ -e /tmp/signal.txt ]; then /opt/myscript.sh; fi
Run Code Online (Sandbox Code Playgroud)

或者

* * * * *       if test -e /tmp/signal.txt; then /opt/myscript.sh; fi
Run Code Online (Sandbox Code Playgroud)

或者,使用短路语法。如果文件不存在,这样做会导致作业失败(这可能会触发来自 cron 守护程序的电子邮件):

* * * * *       [ -e /tmp/signal.txt ] && /opt/myscript.sh
Run Code Online (Sandbox Code Playgroud)

或者

* * * * *       test -e /tmp/signal.txt && /opt/myscript.sh
Run Code Online (Sandbox Code Playgroud)

如果您想另外确保它是常规文件而不是目录、命名管道或某种其他类型的文件,则可以使用-ftest 代替 test 。-e/tmp/signal.txt