crontab 定时任务问题

opps_zhou 2010-12-06 05:55:18
我写了一个 shell 脚本,是用来自动从数据库里查出数据,并将数据通过 sendmail 发送邮件到指定的邮箱里
这个脚本,我在 root 用户下测试过,没有任何问题
但是我在 root 用户建立 crontab 定时任务,发现任务会启动
但是执行不成功,通过查看日志,居然报 sendmail: command not found
为什么会有这样奇怪的问题?

如何解决这个问题

PS:脚本中的路径全部通过环境变量进行配置的,脚本中也包含 source 命令
...全文
264 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
freetstar 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xukunddp 的回复:]

哦,我自己试了一下。在打印出调试语句的同时,也会真的执行脚本内容。
[/Quote]
调试嘛,就是边执行边看..

lz还是再看看path吧,看看起作用没
电灯泡 2010-12-06
  • 打赏
  • 举报
回复
哦,我自己试了一下。在打印出调试语句的同时,也会真的执行脚本内容。
电灯泡 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 steptodream 的回复:]

我在脚本中有设定环境变量 PATH,其中包含了 sendmail 的目录,为何还不可以?
---------
你在要执行sendmail命令的前面 输出一下PATH看看设定有没有成功啊!

写脚本 除了错误 你就要直接添加调试语句
或者sh -x ./script-file.sh的方式调试

有重来写代码不调试的人吗?
[/Quote]
顺便请问一下,sh -x ./script-file.sh ,打印出调试语句的同时,会不会真的执行脚本内容呢?
steptodream 2010-12-06
  • 打赏
  • 举报
回复
我在脚本中有设定环境变量 PATH,其中包含了 sendmail 的目录,为何还不可以?
---------
你在要执行sendmail命令的前面 输出一下PATH看看设定有没有成功啊!

写脚本 除了错误 你就要直接添加调试语句
或者sh -x ./script-file.sh的方式调试

有重来写代码不调试的人吗?
opps_zhou 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lgxwqq111 的回复:]

加路径
/usr/bin/sendmail或者其他的
[/Quote]

我在脚本中有设定环境变量 PATH,其中包含了 sendmail 的目录,为何还不可以?
steptodream 2010-12-06
  • 打赏
  • 举报
回复
但是执行不成功,通过查看日志,居然报 sendmail: command not found
--------------
错误已经很明显是找不到sendmail命令 你为什么不考虑一下用全路径?
要知道直接输入sendmail命令 回去环境变量PATH里找的。
你可以在脚本一开始echo $PATH看看PATH是否包含sendmail所在的路径。
还是那句话 在使用crontab的时候 所有的命令及文件 都推荐写全路径

PS:脚本中的路径全部通过环境变量进行配置的,脚本中也包含 source 命令
-----------------------------------
上面都报命令没有找到 你都没想这确认一下你配置的环境变量是否正确?!
在脚本里配置完 然后输出一下看看结果是不是预想的!
freetstar 2010-12-06
  • 打赏
  • 举报
回复
加路径
/usr/bin/sendmail或者其他的

19,620

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧