crontab ifconfig什么都不输出

/家庭/ MYNAME /斌/脚本:

#!/bin/bash ifconfig > /home/myname/foo 

crontab的:

 * * * * * /home/myname/bin/script 

…等待1分钟…

 @@ 11:35:51 [myname@comp - ~]$ ls foo -rw-r--r-- 1 myname myname 0 Jul 7 11:35 foo @@ 11:35:55 [myname@comp - ~]$ 

我不明白为什么foo会变成空的。 在命令行上运行ifconfig命令的工作方式与您所期望的完全一样,将其输出转储到文件中,就像正常一样。 作为参考,我正在运行的Ubuntu 8.04。

尝试在脚本中使用ifconfig可执行文件的完整path。

哪里ifconfig会给你的path。

我不知道Ubuntu的ipconfig是什么。 🙂

在cron作业中,您可能需要将stdout和stderrredirect到该文件。 将您的脚本更改为:

 #!/bin/bash ifconfig &> /home/myname/foo 

你会在输出文件中看到错误信息。

在Bash编程中查看所有关于redirect如何获取更多信息。

  1. 你可能需要在脚本中使用ipconfig完整path ,或者你的意思是ifconfig ? 无论哪种方式,你应该使用完整的path。
  2. 捕获 / home / myname / foo中的标准输出,但不是标准错误,这可能是你在这里失踪的线索。 检查您的电子邮件的cronjob的输出。

你有没有尝试手动运行你的脚本?

cd进入/ home / myname / bin /

。/脚本

它是否与预期的内容使foo?

脚本是可执行的吗?

我知道这可能听起来像简单的事情,但有时这是被忽视的,特别是当我做脚本时

crontab不使用用户pathvariables。

你必须把命令完整的path。 即/sbin/ifconfig 。 那么这将工作。

解决这个问题的其他方法是将PATHvariables添加到脚本中,然后将其导出,然后您的脚本将能够使用标准命令,而无需每次添加完整path。 您可以在terminal中检查pathinputecho $PATH