如何检测无头系统上的启动顺序何时完成

如何检测无头系统上的启动顺序何时完成

我在 /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

相关内容