注意:我确实考虑过将这个问题放在AskUbuntu网站上,但我认为这是一个脚本/编程问题的核心问题,因此值得参与其中。< / p>
每次打开Ubuntu桌面时,我都会尝试使用upstart来运行脚本。具体来说,我想每隔30秒ping一次我的路由器(原因超出了这个问题的范围)。
我阅读了upstart tutorial,并阅读了一些来自互联网的示例文章。我打算将脚本编写并保存到名为/etc/init/heartbeat.conf
的文件中,我相信是新手脚本的正确位置和文件扩展名(如果我错了,请纠正我)。
以下是该脚本的内容(我已经从各种教程/示例在线一起攻击):
start on started network-manager
script
ping -i 30 192.168.1.1 | cat >> ~/heartbeat/ping.log
end script
当我启动我的机器时,我没有得到任何与GUI / gnome相关的错误,并且在/var/log/syslog
中没有看到任何内容,但我也看不到任何ping
输出~/heartbeat/ping.log
。我哪里误入歧途?提前谢谢!
答案 0 :(得分:8)
新手脚本/etc/init.d/heartbeat.conf
的位置是正确的,但该脚本还有其他一些问题:
启动脚本的推荐方法是:
start on filesystem and net-device-up IFACE!=lo
这将忽略lo
(环回)接口,并且还将确保在脚本运行之前安装文件系统(因为您正在写入文件)
您已将路径指定为~/heartbeat/ping.log
。但该脚本将以root
用户身份运行,而不是您的用户!因此,检入您的主文件夹将无法正常工作。通常,新手脚本不会像您期望的那样尊重~
。因此,请始终使用完整路径
如果名为heartbeat
的文件夹不存在,则ping命令本身会抛出错误,说~/heartbeat: no such file or directory
。目录必须,以便重定向成功
以下是更新的脚本:
start on filesystem and net-device-up IFACE!=lo
stop on runlevel [016]
script
ping -i 30 192.168.1.1 >> /full/path/to/ping.log 2>&1
end script
可选项目:
您是否真的需要原始ping命令中的| cat
?
检查/var/log/upstart/heartbeat.log
是否有实际的暴发日志。如果script
部分本身未成功,则此日志文件中将显示错误消息。
编辑:错字,启动更好,还将错误重定向到日志文件