gpt4 book ai didi

linux - Crontab 以不同的方式运行 bash

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:09 25 4
gpt4 key购买 nike

我正在构建一个在 Ubuntu 上运行的备份脚本。

backup-all.sh 文件:

echo "bootstrap"
/home2/backup/bootstrap/backup.sh
BOOTSTRAP_STATUS=$([ "$?" == 0 ] && echo "OK" || echo "** FAIL **")

echo "sv2"
/home2/backup/sv2/backup.sh
SV2_STATUS=$([ "$?" == 0 ] && echo "OK" || echo "** FAIL **")

if [ "$BOOTSTRAP_STATUS" == "OK" ] && [ "$SV2_STATUS" == "OK" ] ; then
TITULO="Backup OK"
else
TITULO="Backup !FAILED!"
fi

(
echo "Backup status"
echo "-------------"
echo "BOOTSTRAP_STATUS = $BOOTSTRAP_STATUS"
echo "SV2_STATUS = $SV2_STATUS"
echo "-------------"
) | mail -s "${TITULO}" "my@mail.org"

backup.sh 文件结尾为:

exit 0 # for success; OR:
exit 1 # for errors + send mail with log file

* backup.sh 文件包含rsync 和mysql 备份。

当脚本返回 1(错误)时,它还会给我发一封电子邮件,告诉我出了点问题,所有步骤都记录在日志文件中。

** 我有电子邮件电话。一份用于概览,一份用于出现错误的每个“服务器”。

所以,如果我手动运行,

./backup-all.sh

一切都很好。我只收到一封标题为“备份正常”的邮件。

如果我等待 cron 运行该作业,我只会收到一封标题为“备份!失败!”的邮件,尽管我没有收到错误详细信息并且日志文件正常。

crontab -e
0 0 * * * /home2/backup/backup-all.sh

那么,cron 作业如何处理我的脚本的条件/退出值?

最佳答案

调试、记录标准输出和错误到日志文件:

0 0 * * * /home2/backup/backup-all.sh > /tmp/debug.log 2>&1

一些可能性,cron 默认或设计上没有适当的环境:

  1. rsyncmysqldump 不在 cron 环境中
  2. #!/usr/bin/bash 添加到您的 bash 脚本

关于linux - Crontab 以不同的方式运行 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42406606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com