使用 crontab -l 命令搜索 cronjob

24

我正在尝试查找一个cronjob,以确保脚本不会重复相同的cronjob。

我一直在尝试使用类似以下内容的东西,但运气不是很好:

if ! crontab -l | xargs grep -l '/var/www/arix/update.php'; then
  echo "Cronjob already exists"
else
  echo "Cronjob doesn't exist"
fi

执行这些代码后会发生什么? - Bin Wang
2
你不需要使用xargs。而且为什么你想要grep -l?也许只需要if ! crontab -l | grep -q '....' ; then就可以了。最后,为了调试这个情况,先执行内部元素,然后附加下一部分,即crontab -l(它是否产生了你期望的输出?),然后是crontab -l | ...。祝好运。 - shellter
请参见 https://dev59.com/CF4d5IYBdhLWcg3wDvC0。 - rogerdpack
1个回答

46

/var/spool/cron/crontabs 是 crontab 文件的通常父目录。那里有一些以用户名称命名的文件 - 比如说 root 是 root 用户的 crontab 文件。每个系统用户都有可能使用 crontab -e 命令创建自己的 crontab。

作为 root 用户,您可以:

cd /var/spool/cron/crontabs
grep  'search string' *

以下命令(以root身份)可以告诉您哪个用户的crontab中包含该字符串。如果存在的话。

如果您不确定crontabs中有哪些内容,则会执行此操作。`crontab -l`只会提供您的crontab中的信息,即当前登录用户的信息。如果您确定这是最好的检查位置:

crontab -l | grep -q 'search string'  && echo 'entry exists' || echo 'entry does not exist'

2
成功了!谢谢。我将例程更改为以下内容,它按照需要工作。如果!crontab -l | grep -q '/var/www/arix/update1.php'; then echo "Cronjob不存在" - user0000001
谢谢@user0000001,这是一种有用的格式化方式。 - Noumenon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接