豁然高

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

使用shell做过时处理以及发送邮件的事例

 

实现功能

1.过时处理

在shell脚本中调用执行php,如果php在300秒内不能结束,则结束执行

 

2。邮件发送

在报错等情况时发送邮件,并且邮件内容包含执行php时输出的错误日志内容

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash
TIMEOUT=300
FROM_ADDR="ph0-sys@group.co.jp"
TO_ADDRS=(
    "ph0-sys@group.co.jp"
)
CC_ADDRS=(
 
)
MAIL_CONTENT_FILE="/var/www/project/fuel/app/tasks/mailcontent.php"
 
function sync(){
    php_command="php /var/www/project/oil refine sync diff"
    res=$($php_command)
    if (( $?!=0 ))
    then
        sendmail ""
        return 0
    fi
    if [[ -n $res ]]
    then
        sendmail ""
        return 0
    fi
}
 
function sendmail(){
    if [ $BORG_FUEL_BATCH_ENV = development ]
    then
        subject='[borg ph0][DEV]同期ファイル作成失敗'
    elif [ $BORG_FUEL_BATCH_ENV = staging ]
    then
        subject='[borg ph0][STG]同期ファイル作成失敗'
    else
        subject='[borg ph0][PRD]同期ファイル作成失敗'
    fi
 
    from=$FROM_ADDR
    to="${TO_ADDRS[@]}"
    cc=""
    for cc_mail in ${CC_ADDRS[@]}
    do
        cc="$cc -c $cc_mail "
    done
     
    log_file="/var/www/borg/fuel/app/tasks/logs/$(date "+%Y")/$(date "+%m")/$(date "+%d").log"
    title="同期ファイル作成処理はエラーになりました。"
    grep_msg="ERROR - $(date "+%Y-%m-%d %H:%M")"
    echo $title > $MAIL_CONTENT_FILE
    cat $log_file | grep "$grep_msg" >> $MAIL_CONTENT_FILE
    echo $1 >> $MAIL_CONTENT_FILE
     
    cat  "$MAIL_CONTENT_FILE" | mail -s "$subject" -r $from $cc $to
    if(( $?!=0 ))
    then
        echo "通知メールは送信失敗。"
    fi
}
 
function timeout_custom()
{
        waitfor=$TIMEOUT
        command=$*
        $command &
        commandpid=$!
 
        ( sleep $waitfor ;sendmail "同期ファイル作成処理は${waitfor}秒以上実行しました。" ; kill -9 $commandpid  >/dev/null 2>&1 )&
        sleeppid=$!
        wait $commandpid >/dev/null 2>&1
        kill $sleeppid >/dev/null 2>&1
}
 
timeout_custom sync

  

posted on   豁然高  阅读(309)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示