繁体   English   中英

为什么我的svn备份shell脚本在终端中可以正常工作,但是在crontab中失败?

[英]why my svn backup shell script, works fine in terminal, but fails in crontab?

我在redhat linux中有一个svn备份脚本。 我们称之为svnbackup.sh

当我在终端中运行它时,它工作正常。

但是,当我将其放入crontab中时,即使正确备份了数据,它也不会恢复svnserve。

我怎么了?

killall svnserve
tar -zcf /svndir /backup/
svnserve -d -r /svndir

通常,“环境”是cron作业中的问题,该作业在“终端”上运行时有效,而在cron上运行时则无效。 最有可能的是,您的PATH未设置为包含保留svnserve的目录。

为svnserve使用绝对路径名,或在脚本中适当设置PATH。

您可以通过添加以下行来部分调试:

env > /tmp/cron.job.env

查看脚本,以确切了解运行cron作业时设置的环境有多少。

如果要备份存储库的实时版本,则可能应该使用svnadmin hotcopy 就是说,关于可能出了什么问题,我想到了一些可能性:

  1. 您已将每个语句作为单独的条目放入crontab中(无法从Q中看出)。
  2. svnserve命令使用密码,而cron则不能提供该密码。
  3. svnserve命令无限期地阻塞或挂起,并被cron杀死。
  4. svnserve命令不在cron的PATH中。

假设svnserve不使用密码,这可能会解决问题:

#! /bin/bash
#  backup_and_restart_svnserve.sh
export PATH=/bin:/sbin:/usr/bin:/usr/local/bin # set up your path here
killall svnserve && \
tar -zcf /svndir /backup/ && \
svnserve -d -r /svndir >/dev/null 2>&1 &

现在,使用“ backup_and_restart_svnserve.sh”作为要执行的脚本。 由于它在后台运行,因此即使cron执行下一个任务,它也有望继续运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM