我正在寻找由 crontab 调度程序触发的尾随 2 个命令字符串,并且应该可以从中看到/var/log/syslog
。这是为了验证计划的作业是否确实执行。
我在 crontab 中的行如下所示:
*/1 6-23 * * 1-7 sleep 50; cd /tmp2 && /usr/bin/Rscript run1.R
*/1 6-23 * * 1-7 sleep 50; cd /tmp2 && /usr/bin/Rscript run2.R
这有效:
tail -f /var/log/syslog | grep run1.R
这不起作用:
tail -f /var/log/syslog | grep run1.R && run2.R
答案1
这
tail -f /var/log/syslog | grep run1.R && run2.R
会跑
tail -f /var/log/syslog | grep run1.R
如果成功退出,它将(尝试)运行
run2.R
因为&&
中间有中间部分。我想你想要其中一个
tail -f /var/log/syslog | grep -F -e run1.R -e run2.R
tail -f /var/log/syslog | grep -E "run[12]\.R"
tail -f /var/log/syslog | grep -E "run1\.R|run2\.R"
过滤包含run1.R
或run2.R
(或两者)的行。
请注意,tail -f /var/log/syslog
只要给定的文件存在,通常就不会退出——对于该特定文件来说应该是这种情况。