我正在编写一个 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/

10-17 02:30