加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – Cron作业无法启动

发布时间:2020-12-15 21:51:03 所属栏目:安全 来源:网络整理
导读:我有一个我想要每5分钟执行一次的cron作业: 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /scr_temp/scheduleSpider.sh 在/ var / spool / cron / crontabs / root中 cron应该执行shell脚本: #!/bin/shif [ ! -f "sync.txt" ]; then touch "sync.txt" chmod
我有一个我想要每5分钟执行一次的cron作业:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /scr_temp/scheduleSpider.sh

在/ var / spool / cron / crontabs / root中

cron应该执行shell脚本:

#!/bin/sh
if [ ! -f "sync.txt" ]; then
    touch "sync.txt"
    chmod 777 /scr_temp
    curl someLink
fi

从命令行可以正常工作,但不能从cron工作.然而,cron本身是startet但脚本没有启动.

我读到了路径问题,但我真的不明白.我设置了一个将一些env数据写入文件的cron.这是输出:

HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
SHELL=/bin/sh

如果我在命令行中执行env命令,我会得到以下PATH输出

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

我必须在shell脚本中设置什么路径?

解决方法

你的$PATH很好;不要管它.在Ubuntu上,您调用的所有命令(touch,chmod,curl)都在/ bin和/或/usr/bin中.

你是怎么设立cron工作的?你是否以root身份运行crontab some-file?

似乎/ etc / crontab是以root身份运行cron命令的常用机制.在我的Ubuntu系统上,sudo crontab -l表示没有用于root的crontab.像root用户一样以root身份运行crontab应该没问题,但您可以考虑使用/ etc / crontab.请注意,它使用与普通crontab不同的语法,如/ etc / crontab顶部的注释中所述:

$head -5 /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,# that none of the other crontabs do.

运行sudo crontab -l.它会显示你的命令吗?

暂时修改脚本,使其始终产生一些可见的输出.例如,在#!/ bin / sh之后添加以下内容:

echo "Running scheduleSpider.sh at `date`" >> /tmp/scheduleSpider.sh.log

几分钟后看看/tmp/scheduleSpider.sh.log中的内容. (您可以将命令设置为每分钟运行一次,这样您就不必等待结果.)如果可行(应该),您可以向脚本添加更多echo命令,以详细查看它正在执行的操作.

看起来您的脚本只能运行一次;它会创建sync.txt文件以防止它再次运行.这可能是你问题的根源(咳咳).你的意图是什么?你的意思是在运行命令后删除sync.txt,只是忘记了吗?

root的Ubuntu主目录是/ root.您的脚本第一次运行时,应该创建/root/sync.txt.该文件存在吗?如果是这样,它多大了?

请注意,curl someLink(假设someLink是一个有效的URL)只会将指定链接中的内容转储到标准输出.那是你的意图(它会显示为root的电子邮件吗?或者你只是没有告诉我们整个命令?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读