我有一个问题,在qnap nas上通过crontab执行我的脚本。 这是非常令人困惑的,因为其他测试脚本工作并且手动执行此脚本也是有效的。
这是脚本:
#!/bin/sh
[[ ! -d /mnt/backup-cr/daily.0 ]] && mount -t nfs -o nolock 192.168.178.2:/volume1/backup-cr /mnt/backup-cr
#1
[[ -d /mnt/backup-cr/daily.7 ]] && rm -rf /mnt/backup-cr/daily.7
#2
[[ -d /mnt/backup-cr/daily.6 ]] && mv /mnt/backup-cr/daily.6 /mnt/backup-cr/daily.7
[[ -d /mnt/backup-cr/daily.5 ]] && mv /mnt/backup-cr/daily.5 /mnt/backup-cr/daily.6
[[ -d /mnt/backup-cr/daily.4 ]] && mv /mnt/backup-cr/daily.4 /mnt/backup-cr/daily.5
[[ -d /mnt/backup-cr/daily.3 ]] && mv /mnt/backup-cr/daily.3 /mnt/backup-cr/daily.4
[[ -d /mnt/backup-cr/daily.2 ]] && mv /mnt/backup-cr/daily.2 /mnt/backup-cr/daily.3
[[ -d /mnt/backup-cr/daily.1 ]] && mv /mnt/backup-cr/daily.1 /mnt/backup-cr/daily.2
#3
[[ -d /mnt/backup-cr/daily.0 ]] && cp -al /mnt/backup-cr/daily.0 /mnt/backup-cr/daily.1
#4
bakdate=$(date +%Y%m%d%H%M)
/usr/bin/rsync -av \
--stats \
--delete \
--human-readable \
--log-file=/mnt/backup-cr/logs/rsync-cr.$bakdate.log \
/share/cr/ \
/mnt/backup-cr/daily.0 \
MAILFILE=rsync-cr.$bakdate.log.tmp
echo "Subject: rsync-log for cr from srv" > $MAILFILE
echo "To: x@x.com" >> $MAILFILE
echo "From: y@y.com" >> $MAILFILE
echo "" >> $MAILFILE
/usr/bin/tail -13 /mnt/backup-cr/logs/rsync-cr.$bakdate.log >> $MAILFILE
echo "" >> $MAILFILE
echo "" >> $MAILFILE
cat $MAILFILE | ssmtp x@x.com
rm $MAILFILE
这是我的crontab条目:
15 0 * * * /share/CACHEDEV1_DATA/.scripts/backup.sh
该脚本具有executable-flag,正如我所说,同一文件夹中的其他脚本可以正常工作。
有人有想法吗?因为如果这在QNAP上手动工作并且在另一个UBUNTU服务器上的crontab中工作,那么我认为我变得愚蠢和偏执: - )
答案 0 :(得分:2)
使用echo将命令存储在命令行的crontab文件中
home.html
此命令将在凌晨1点开始运行backup.sh。
要在重新启动期间使crontab持久化,您必须执行此命令
<header class="bar bar-nav">
..header section..
</header>
<div class="content"> <!--removed `ng-controller='HomeCtrl'` from here-->
..markup here..
</div>
请注意,您无法将脚本保存在/ etc /,或/ bin /或HDD目录之外的其他目录中。换句话说,始终将脚本保存在/ share / CACHEDEV1_DATA / your-backup-folder中。如果不这样,脚本将在重新启动时删除。
重新启动crontab
$ echo "1 4 * * * /bin/sh /share/CACHEDEV1_DATA/your-backup-folder/backup.sh" >> /etc/config/crontab
设置正确的权限
$ crontab /etc/config/crontab
等待cron运行,看看它是否有效
有关完整指南,请访问:https://www.en0ch.se/qnap-and-cron/
答案 1 :(得分:1)
我通过使用sh
命令调用脚本解决了类似的问题,如下所示:
15 0 * * * /bin/sh /share/CACHEDEV1_DATA/.scripts/backup.sh
编辑:必须使用完整路径(即/ bin / sh)调用sh命令,否则它将无法工作。