gpt4 book ai didi

linux - 为 Ubuntu 编写启动脚本

转载 作者:太空狗 更新时间:2023-10-29 11:27:31 25 4
gpt4 key购买 nike

注意:我确实考虑过把这个问题放在 AskUbuntu 上站点,但相信它的核心是一个脚本/编程问题,因此应该放在 SO 上。

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

我读了upstart tutorial并且还阅读了来自互联网的一些示例文章。我计划编写脚本并将其保存到名为 /etc/init/heartbeat.conf 的文件中,我相信是 upstart 脚本的正确位置和文件扩展名(如果我错了,请纠正我)。

这是该脚本的内容(我从各种在线教程/示例中拼凑而成):

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

当我启动我的机器时,我没有收到任何与 GUI/gnome 相关的错误,也没有在 /var/log/syslog 中看到任何内容,但我也没有看到~/heartbeat/ping.log 中的任何 ping 输出。我哪里误入歧途了?提前致谢!

最佳答案

upstart 脚本 /etc/init.d/heartbeat.conf 的位置是正确的,但该脚本几乎没有其他问题:

  • 启动脚本的推荐方式是:

    在文件系统和 net-device-up IFACE 上启动!=lo

    这将忽略 lo(环​​回)接口(interface),并且还将确保在脚本运行之前安装文件系统(因为您正在写入文件)

  • 您给定的路径为 ~/heartbeat/ping.log。但是该脚本将作为 root 用户运行,而不是您的用户!因此, checkin 您的主文件夹将不起作用。通常, Upstart 脚本不会像您期望的那样遵守 ~ 。所以总是使用完整路径

  • 如果名为 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 命令中?

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

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

关于linux - 为 Ubuntu 编写启动脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16695308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com