我正在尝试在 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 作业失败。
我该如何解决这个问题?
您的
cron -f
由于运行系统 cron
实例而失败。如果你确定的话就停止吧systemctl stop cron
。
还要避免在 cron 作业中使用相对路径。例如
if [ -e rsyncjob.lock ]
应该是这样的
if [ -e /var/<whatever>/rsyncjob.lock ]
还修复
cd ..
、rsync A B
和其他亲戚。