Apache环境下Cronjob失败的原因

问题描述 投票:0回答:1

我正在尝试在 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:无法锁定/var/run/crond.pid,otherpid可能是23719:资源暂时不可用

重启cron服务,删除错误中列出的文件都失败。

我尝试过不同的路由,但最常见的失败是 rsync 源和目标将 root 附加到正确的位置,然后 cron 作业失败。

我该如何解决这个问题?

linux cron
1个回答
0
投票

您的

cron -f
由于运行系统
cron
实例而失败。如果你确定的话就停止吧
systemctl stop cron

还要避免在 cron 作业中使用相对路径。例如

if [ -e rsyncjob.lock ]

应该是这样的

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

还修复

cd ..
rsync A B
和其他亲戚。

© www.soinside.com 2019 - 2024. All rights reserved.