我正在编写一个 shell 脚本,用于创建它完成的所有任务的日志文件。在脚本的最后,它会创建一个 tar 文件并重新启动服务。
如果 tar 进程失败或服务没有启动备份,我希望脚本发送一封电子邮件。我不确定如何检查 tar 和服务是否通过/失败。
这是一个 shell 脚本示例,不检查 tar 或服务是否完成...
#!/bin/bash
# Shutdown service
service $SERVICE stop
# Task 1
command > some1.log
# Task 2
command > some2.log
# Task 3
command > some3.log
# Compress Tar file
tar -czf logfiles.tar.gz *.log
# Start service
service $SERVICE start
# mail if failed
mail -s "Task failed" | user@domain.com << "the task failed"
更新:脚本不应中止,因为如果任何先前的任务失败,我希望服务尝试重新启动。
最佳答案
您可以检查每个步骤产生的 exit status,并且发送任何退出状态的邮件都会引发一个标志。
# Compress Tar file
tar -czf logfiles.tar.gz *.log
TAR_EXIT_STATUS=$?
# Start service
service $SERVICE start
SERVICE_EXIT_STATUS=$?
# mail if failed
if [ $TAR_EXIT_STATUS -ne 0 ] || [ $SERVICE_EXIT_STATUS -ne 0 ];then
mail -s "Task failed" | user@domain.com << "the task failed"
fi;
关于bash - 如果任务失败,发送电子邮件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32996456/