У меня есть некоторые сценарии, которые отлично работают, если вы запускаете их с терминала, но как только вы добавляете их в crontab, это похоже на то, что bash не выполняется должным образом и не продолжается с первым оператором IF, и сценарий выглядит stop.
#!/bin/bash
## File: opt_files_backup.sh
## Author: Raul Sanchez
## Last update: 09/12/2015
## Description:
## Includes the configuration file for the FTP connection
## Available variables (FTP): $ftp_user, $ftp_pass, $ftp_server, $ftp_source_directory, $ftp_target_directory
## Available variables (mail): $mail_recipients
## Available variables (Logging): $log_files
source config.sh
## Creates a tar.gz backup with the format opt_files_YYYYmmdd.tar.gz
if tar czfP /opt/backup-scripts/src/files/opt_files-`date +%Y%m%d%H%M`.tar.gz /opt --exclude='/opt/backup-scripts';
then
echo -e "`date` - Files Backup OK" >> $log_files
## Remove files older than 7 days
if find /opt/backup-scripts/src/files/*.tar.gz -mtime +7 -exec rm {} \;
then
##------ Connect to remote server and synchronize ------##
## ftp::ssl-allow is false by default on /root/.lftprc
if lftp -e "mirror --reverse --delete --verbose $ftp_source_directory $ftp_target_directory; exit" -u $ftp_user,$ftp_pass $ftp_server;
then
echo -e "`date` - Files Backup Mirror Transfer OK" >> $log_files
##------ Send email notification to Sys Admin ------##
echo "The task completed successfully at `date`" | mail -e -s "CRONTAB task #2 OPT Files Mirror" $mail_recipients
else
echo -e "`date` - Files Backup Mirror Transfer KO" >> $log_files
exit 1
fi
fi
else
echo -e "`date` - Files Backup Mirror Backup KO" >> $log_files
##------ Send email notification failure to Sys Admin ------##
echo "The task didn't completed at `date`, something went wrong. Please check $log_files for more information." | mail -e -s "CRONTAB task #2 OPT Files Mirror Failed!" $mail_recipients
exit 1
fi
Как я уже сказал, этот скрипт отлично работает, если вы запускаете его с терминала, но не с crontab. Cronjob для этого скрипта:
0 7,10,13,16 * * 1-5 /opt/backup-scripts/scripts/opt_files_backup.sh
Я изменил SHELL в / etc / crontab из SHELL = / bin / sh в / bin / bash и все еще не работает. [!d2 ]
Может ли кто-нибудь помочь мне найти, что не так с моим скриптом и crontab?
С уважением.