/home/我的名字/bin/脚本:
#!/bin/bash
ifconfig > /home/myname/foo
计划任务:
* * * * * /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。
答案1
ifconfig
尝试在脚本中使用可执行文件的完整路径。
which ifconfig
会给你路径。
我不知道ipconfig
在 ubuntu 中有什么用处。:)
答案2
在 cron 任务中,您可能希望将 stdout 和 stderr 重定向到该文件。将脚本更改为以下内容:
#!/bin/bash
ifconfig &> /home/myname/foo
您将在输出文件中看到错误消息。
看关于重定向有关更多信息,请参阅 Bash 编程指南。
答案3
crontab 不使用用户路径变量。
您必须将命令放置在其完整路径下。即/sbin/ifconfig
。然后它才会起作用。
解决此问题的另一种方法是将 PATH 变量添加到脚本并导出,这样您的脚本将能够使用标准命令,而无需每次都添加完整路径。您可以echo $PATH
在终端中输入路径进行检查。
答案4
您是否尝试过手动运行脚本?
进入 /home/myname/bin/
。/脚本
它是否使 foo 的内容符合预期?
该脚本可以执行吗?
我知道这听起来可能很简单,但有时这就是被忽视的,尤其是当我写剧本的时候