我在 /etc/init 中有一个 CONF 文件,用于配置和启动无头机器上的软件。当连接显示器进行开发和测试时,我发现我的软件在启动序列结束时启动,当时正在搜索(不存在的)网络连接。启动暂停片刻,然后打印一条消息,表示最多还要等待 60 秒。60 秒后,启动序列继续,我的软件失败,Ubuntu 要求登录。
我的测试解决方法是在启动的 bash 脚本中添加 sleep 150,但我更希望脚本检测启动何时确实完成,然后使用神奇数字。
有没有办法在脚本中做到这一点?(顺便说一句,我不精通 LINUX。)
编辑我的电脑确实有两个网卡。LAN1 直接连接到研究级红外摄像机并使用 UDP 进行通信。LAN0 连接到路由器,允许用户加载网页以通过 WiFi 从计算机控制摄像机。除了开发、测试或调试时,路由器不会连接到任何外部网络。
/etc/init/fireimager.conf
description "Copies fireimager executables to the ram disk and executes them."
author "Robert Lockwood"
#start on filesystem or runLevel [2345]
start on net-device-added INTERFACE=eth0
stop on shutdown
script
exec /home/programmer/bin/init/inittest
echo "[`date`] Fireimager Suite Started" >> /var/log/fireimager.log
end script
/home/programmer/bin/init/inittest
#!/bin/bash
# programs to run as user programmer
su -c "/home/programmer/bin/provisionServer" programmer password -
sleep 130
su -c "/home/programmer/bin/startAPI &" programmer password -
su -c "/home/programmer/bin/startServer &" programmer password -
su -c "/home/programmer/bin/startController &" programmer password -
答案1
这将使网络管理器停止寻找任何网络。但之前找到的任何连接仍将有效。
sudo su
echo manual >> /etc/init/network-manager.override
或者在你的配置中将你的开始改为
start on net-device-added INTERFACE!=lo
或者
start on net-device-added INTERFACE=eth0 (eth0 or what ever connection you have)
答案2
以 root 身份(或使用 sudo)运行此命令:
systemctl is-system-running
在启动过程中,输出将是starting
。
启动完成后,输出将是running
。