为Ubuntu编写启动脚本

时间:2013-05-22 15:04:31

标签: linux bash upstart startupscript

注意:我确实考虑过将这个问题放在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。我哪里误入歧途?提前谢谢!

1 个答案:

答案 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部分本身未成功,则此日志文件中将显示错误消息。

编辑:错字,启动更好,还将错误重定向到日志文件