linux Apache环境中Cronjob失败的原因

qltillow  于 2023-10-16  发布在  Linux
关注(0)|答案(1)|浏览(165)

我尝试在Apache Linux环境中运行cron作业。具体来说,这是cron工作。

SHELL=/bin/sh
PATH=/usr/local/bin:/usr/local/sbin
* * * * * sh root/rsync.sh

这个rsync应该同步Apache上挂载的几个文件夹,运行一个Python脚本,并将结果复制到一个新文件中。我已经测试过rsync可以广泛地工作,所以我确信唯一的问题是cron作业。它看起来主要是这样的:(为隐私编辑)

if [ -e rsyncjob.lock ]
then
  echo "Rsync job already running...exiting"
  exit
fi

touch rsyncjob.lock

#your code in here
cd ..
rsync -r A B
rsync -r C D
python3 <python-file>
rsync <final file>
cd root
#delete lock file at end of your job
rm rsyncjob.lock

当我用cron -f手动测试cron作业时,我总是得到以下错误:
cron:can't lock /var/run/crond.pid,otherpid may be 23719:资源暂时不可用
重新启动cron服务和删 debugging 误中列出的文件都失败了。
我已经尝试了不同的路由,但最常见的失败是rsync源和目的地得到根附加到正确的位置,然后cron作业失败。
我该如何解决此问题?

juzqafwq

juzqafwq1#

您的cron -f由于运行系统cron示例而失败。systemctl stop cron如果你确定的话。
同时避免在cron作业中使用相对路径。例如

if [ -e rsyncjob.lock ]

应该是这样的

if [ -e /var/<whatever>/rsyncjob.lock ]

也修复cd ..rsync A B和其他亲属.

相关问题