当我从终端运行此邮件命令时,没有任何问题:
mail -s "Test Mail" [email protected] < home/user/example.txt
当我将它添加到主要执行此操作的 bash 脚本中时,没有任何问题:
tmpString=$(ssh user@server `perl -s` < /home/user/perlscript.pl 2> errorfile.txt)
mail -s "Test Mail" [email protected] < home/user/example.txt
但是,当我创建一个 crontab 来运行 bash 脚本时,邮件永远不会被发送:
10 14 * * * /home/user/mybashscript
但是,我确实收到了来自 cronjob 的有关输出的电子邮件。主题为“测试邮件”的电子邮件从未到达。
有人遇到过这个问题吗?
踪迹:
好的,我只需要更改一些与个人相关的命名。邮件应该在最后一次回显之前发送,但它没有显示在跟踪中?
+ . /home/user/.bashrc
++ PS1=`\u@\h \w$`
++ TERM=vt100
++PATH=/usr/sbin:/usr/bin:/bin
++ ssh user@example `perl -s`
+ scriptString=`$VAR` = ``\``Build was OK`\``;`
+echo `$VAR1`= ``\``Build was OK`\``;`
$VAR1 = `Build was OK`;
+ [[ $VAR1 = `Build was OK`; == *\B\u\i\l\d\ \f\a\i\l\e\d* ]]
+ echo
谢谢!
答案1
crontab
没有和你相同的环境,所以在脚本的顶部,在舍邦, 放 :
. ~/.bashrc || . /etc/profile
这将为子进程设置 PATH。
此外,修改shebang
为#!/bin/bash -x
调试开启,并这样crontab
做:
* * * * * /path/to/script >/tmp/trace 2>&1
并再次进行调试跟踪。