【发布时间】:2020-03-07 01:45:59
【问题描述】:
我正在测试一个脚本,该脚本为日志文件的每日轮换执行子脚本:
59 23 * * * /home/[username]/work/Rotate.sh
这个 .sh 文件调用了许多其他的 shell 脚本,每个脚本的工作方式都与此类似:
folderName=$(date +%B)
folderPath="/data/logs/archive/"
currentDate=$(date +%d-%m-%Y)
targetFile="/data/logs/logfile.log"
sudo mkdir $folderPath
sudo mkdir $folderPath$folderName
cp $targetFile $folderPath$folderName/logfile.$currentDate.log
echo "" > $targetFile
从终端直接调用 Rotate.sh 可以按预期工作(使用命令 sudo sh work/Rotate.sh),但是当我将 crons 时间缩短到更短的时间间隔时,我根本没有得到任何结果。我的 shell 脚本的某些方面是否有可能破坏了 cron 作业?我在 crontab -e 中的行声明中遗漏了什么吗?
【问题讨论】:
-
在哪里声明了
$ArchivePath和$ArchivePath$ArchiveName。cron用户是否对调用的每个其他脚本都具有执行权限? -
抱歉,这是我编辑代码 sn-p 以显示人们让我调整它的错误。
-
如果您使用 sudo 获得想要的结果,您不应该在 cron 作业中也使用 sudo 吗?
-
我用过 sudo crontab -e 但这也没有得到我需要的结果。你的意思是把cron任务写成
59 23 * * * sudo /home/[username]/work/Rotate.sh? -
是的,我的意思是在工作本身中使用它。