bash 脚本运行正常,但如果我没有通过 ssh 登录或最近连接过,则会跳过 cron 中的命令

bash 脚本运行正常,但如果我没有通过 ssh 登录或最近连接过,则会跳过 cron 中的命令

我正在尝试在 CentOS 版本 6.7(最终版)上的 cron 中安排一些备份脚本。

这是完整备份,基本上是挂载一个远程目录,检查是否有足够的空间进行备份(如果磁盘空间为 85% 或更少,则进行备份),最后发送邮件进行报告并卸载目录

该脚本位于/root/myjobs/,其名称为fullbackup.sh 权限目前为 777 (-rwxrwxrwx)

#!/bin/bash
mount -t cifs //192.168.0.202/Volume_1 /mnt/nas -o username=Backup,password=PassBackup
ocupado="$(df /mnt/nas|tail -n 1|awk '{print $4}'|cut -d "%" -f 1)"
if [ $ocupado -gt 85 ]; then
    echo "DISK IS FULL" | mail -s "SERVER" [email protected]
else
    # This is anoying but at least works, I need to create a file with the name of the backup, delete it, and then make the backup with tar
    touch /mnt/nas/Backup/full_backup_`date +"%d%b%y"`.tar.gz
    rm -f /mnt/nas/Backup/full_backup_`date +"%d%b%y"`.tar.gz
    tar -cvzpf /mnt/nas/Backup/full_backup_`date +"%d%b%y"`.tar.gz --exclude=/home/general /home
    echo "FULL BACKUP OK" | mail -s "SERVER" [email protected]
fi
umount /mnt/nas/

如果我手动运行脚本,它可以正常工作,但如果我使用 cron 安排脚本,它只会发送邮件,但不会进行复制,就像它不执行 tar 命令一样。

如果我执行,crontab -e我会看到 nano 编辑器,其顶部有以下路径:

/tmp/crontab.jdwF9c

我认为路径有问题,这就是我/etc/crontab直接编辑文件配置 cron 的原因。

这是我的/etc/crontab文件:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

0 9 1 * * root /root/myjobs/fullbackup.sh

我已尽我所能将这个问题翻译成西班牙语,希望大家能很好地理解这个问题。

感谢您的帮助!

编辑1:我远程与服务器交互。当我连接时,cron 运行脚本并正常工作,但如果我关闭 ssh 连接并等待命令在第二天 9:00 运行,则不会正常工作。在这种情况下,只会发送邮件。

答案1

尝试使用完整路径调用 tar。例如,在我的系统上,它是/bin/tar。您可以使用 来查找which tar

相关内容