2

注意:我确实考虑过将这个问题放在AskUbuntu网站上,但相信它的核心是一个脚本/编程问题,因此值得在 SO 上出现。

每次打开 Ubuntu 桌面时,我都在尝试使用upstart运行脚本。具体来说,我想每 30 秒 ping 一次我的路由器(出于此问题范围之外的原因)。

我阅读了新贵教程,还阅读了互联网上的一些示例文章。我计划编写脚本并将其保存到一个名为 的文件/etc/init/heartbeat.conf中,我认为这是新贵脚本的正确位置和文件扩展名(如果我错了,请纠正我)。

这是该脚本的内容(我从各种在线教程/示例中一起破解):

start on started network-manager
script
    ping -i 30 192.168.1.1 | cat >> ~/heartbeat/ping.log
end script

/var/log/syslog当我启动我的机器时,我没有收到任何与 GUI/gnome 相关的错误,并且ping~/heartbeat/ping.log. 我会误入歧途吗?提前致谢!

4

1 回答 1

8

upstart 脚本的位置/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

可选项目:

  • 您真的需要| cat原始 ping 命令中的 a 吗?

  • 检查/var/log/upstart/heartbeat.log实际的暴发户日志。如果该script部分本身没有成功,则错误消息将出现在此日志文件中。

编辑:错字,开始更好,将错误也重定向到日志文件

于 2013-05-24T22:11:28.747 回答