bash - 通过电子邮件发送 shell 脚本的输出
问题描述
我有一个 shell 脚本(script.sh),我在其中运行了一个简单的 python 网络爬虫
python3 script.py
当我在 cron 作业中运行这个 shell 脚本时,如果出现问题,我希望通过电子邮件收到通知。我在 stackoverflow 上找到了这段代码,我把它放在了 .sh 脚本的底部:
./script.sh 2>&1 | tee output.txt | mail -s "Script log" email@address.com
问题是脚本现在似乎在循环;它应该只需要几秒钟,现在需要几分钟才能运行,我的邮箱中收到了 10-20 封电子邮件。这些电子邮件的内容不同,大多数时候电子邮件是空的,但有时它们包含以下消息:
./script.sh: 4: ./script.sh: Cannot fork
或者:
mail: Null message body; hope that's ok
我不确定这里出了什么问题。我能做些什么来解决这个问题?
解决方案
脚本运行,运行 python,然后再次调用自身,直到它耗尽资源并且无法 fork。
.sh 应包含:
python3 script.py 2>&1 | tee output.txt | mail -s "Script log" email@address.com
假设您实际上想在 pwd 所在的任何文件夹中创建 output.txt ......否则您可以完全忽略它。
或者,您可以在 crontab 中配置您的 MAILTO(请参阅https://www.cyberciti.biz/faq/linux-unix-crontab-change-mailto-settings/)
推荐阅读
- spyder - Outline Explorer Spyder 5 不显示模块、单元格等
- verilog - 何时在 SystemVerilog 中使用 `include
- vba - 如何使用 VBA 在 Powerpoint 中设置音频的启动选项
- reactjs - 如何模拟使用 Axios 进行的 API 调用?
- python - 如何使用 Tkinter 进行实时数据库更新
- python - 如果出现重复符号,如何选择要拆分的符号
- python - 根据试验数据绘制概率曲线
- html - 赛普拉斯:如何测试 HTML5 内置的验证弹出窗口?
- asp.net - 弹出窗口打开时禁用父页面
- sql - Querydsl-jpa 中的对象聚合