指定 grep 的替代模式

指定 grep 的替代模式

我正在寻找由 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.Rrun2.R(或两者)的行。

请注意,tail -f /var/log/syslog只要给定的文件存在,通常就不会退出——对于该特定文件来说应该是这种情况。

相关内容