【发布时间】:2019-11-25 17:53:08
【问题描述】:
我有一个 bash 脚本,它从 /tmp 中提取文件并将它们通过电子邮件发送给我。我以 root 身份运行此脚本,它运行良好,但我正在尝试使用 crontab 自动执行此操作。
将作业添加到 crontab,再次以 root 身份运行,现在我得到“无法锁定 /sent”。
我设法通过在 Muttrc 中更改文件的名称来确认它正在使用 /root 中的文件,并尝试了 600 和 777 的权限。
(也得到一个错误的分段错误,希望如果我修复上述问题会消失。)
任何人都知道为什么 Mutt 与具有相同用户和相同文件的 cron 作业不同。
我将脚本简化如下,并且完全相同,在 root shell 中工作,但不在 crontab 中。 错误:-
Couldn't lock /sent
/data/mediators/email_file: line 5: 1666 Segmentation fault mutt $email -s "test" -i /tmp/test.txt < /dev/null
email_file 脚本:-
#!/bin/bash
email=——@——.com
mutt $email -s "test" -i /tmp/test.txt < /dev/null
crontab:-
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=——@—-.com
HOME=/
54 02 * * * root /data/mediators/email_file
我还在作业中添加了 printenv,并与运行正常的服务器进行了比较。不同之处在于工作系统有 USER=root,而非工作系统没有显示此变量已设置。
【问题讨论】:
-
没有脚本我们无能为力