我有一个脚本,在某个时间使用Raspberry Pi将文件从一个HD备份到另一个HD。
我需要开始执行rsyncs,如果有任何错误,请在电子邮件中发送行号,然后关闭pi。
但是,我不知道在现有脚本中添加这样一个函数的方式和位置。电子邮件已设置为向我的域发送邮件。
#!/bin/bash
begin=$(date --date="19:00" +%s)
end=$(date --date="21:00" +%s)
now=$(date +%s)
if [ "$begin" -le "$now" -a "$now" -le "$end" ]; then
echo "/sbin/shutdown -h 15" | sudo at 20:40
else
begin=$(date --date="3:00" +%s)
end=$(date --date="6:00" +%s)
now=$(date +%s)
if [ "$begin" -le "$now" -a "$now" -le "$end" ]; then
/usr/bin/rsync -avx --delete /media/HDD1/shares/myprofile /media/HDD2/shares/
/usr/bin/rsync -avx --delete /media/HDD1/shares/hanprofile /media/HDD2/shares/
else
echo "don't do rsyncs"
fi
fi
答案 0 :(得分:0)
在脚本的顶部添加:
f () {
errcode=$? # save the exit code as the first thing done in the trap function
v1="Error "
v2=$errcode
v3=" the command executing at the time of the error was "
v4=$BASH_COMMAND
v5=" on line "
v6=${BASH_LINENO[0]}
v7="$v1 $v2 $v3 $v4 $v5 $v6"
echo "$v7" | mail -s "Error" makem@myhome.co.uk
exit $errcode # or use some other value or do return instead
}
trap f ERR