我有一个看起来像这样的 crontab:
0 8 * * * command >> mylog.log 2>&1
这会将错误和标准输出附加到 mylog.log 中。
除了上述内容之外,我希望能够仅捕获最新的输出command
并通过以下方式将它们发送到我的电子邮件:
mail -s 'test' [email protected]
换句话说,将所有输出写入日志,并仅将新输出发送到电子邮件。
我读了 T 恤,有些东西告诉我这可能是一个答案,但我对此不是 100% 确定。
答案1
与同事核实后,解决方案最终变得非常简单。只需将脚本分成多个部分即可。将这些部分放入 shell 脚本中。
#!/bin/sh
# write truncated log to temp.log
command > temp.log 2>&1
# mail contents of truncated log
mail -s 'test' [email protected] < temp.log
# append contents of truncated log to your primary log
cat temp.log >> mylog.log
然后获取 bash 脚本并在 crontab 中运行它
0 8 * * * bash mysh.sh