我有一個啓動時啓動的/etc/init.d/腳本,需要聯網才能使用。我將rc start設置爲99,所以這是加載的最後一件事情,但網絡不會立即加載,我目前不得不依賴30秒的睡眠命令來等待網絡加載。如何檢測/etc/init.d腳本中的網絡初始化時間?
操作系統是針對嵌入式系統(Yocto Project)的Ubuntu修改版。文件系統是一樣的,但服務非常有限,所以它使用Sysvinit。
有沒有辦法檢查所有的網絡連接是否完成加載?
這裏是腳本,如果它是的幫助:
#!/bin/sh
#
# Daemon Name: blerd
#
# chkconfig: - 3 99 1
# description: M3 Bluetooth Low Energy Relay Daemon
# Source function library.
. /etc/init.d/functions
PROGRAM=bler
LOCKFILE=/var/lock/subsys/$PROGRAM
start() {
[ -x $EXE ] || exit 5
echo -n "Starting $PROGRAM: ";
if [ -e $LOCKFILE ]; then
echo "Instance of $PROGRAM exists."
return 0;
fi
sleep 30
$PROGRAM
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "Success"
else
echo "Failed"
fi
[ $RETVAL -eq 0 ] && touch $LOCKFILE
return $RETVAL
}
stop() {
echo -n "Stopping $PROGRAM: "
if [ ! -e $LOCKFILE ]; then
echo "No instance of $PROGRAM exists."
return 0;
fi
killproc $PROGRAM
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "Success"
else
echo "Failed"
fi
[ $RETVAL -eq 0 ] && rm -f $LOCKFILE
return $RETVAL
}
status() {
echo -n "Status $PROGRAM: "
if [ -e $LOCKFILE ]; then
echo "Running"
else
echo "Stopped"
fi
return 0;
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 2
;;
esac
這個帖子被標記'ubuntu'但看起來像RHEL一個SysVinit的腳本。 – jordanm
這是一個嵌入式系統,它有一個Ubuntu(Yocto項目)的修改版本。爲了簡單起見,我將描述文字格式化爲RH,但實際上並不適用於RH。 – BayssMekanique