Linux

在 Linux 啟動結束時啟動命令

  • February 10, 2014

我有一個沒有螢幕/鍵盤/滑鼠的覆盆子,除了在啟動時啟動無線電流之外什麼都不做:

mplayer http://95.81.146.2/fip/all/fiphautdebit.mp3

我已將此命令放在/etc/rc.local. 不幸的是,有 50% 的時間,播放沒有開始(可能是因為 WIFI 還沒有正確連接?),我必須重新啟動才能開始播放聲音。

如何rc.local使用 SSH 連接檢查啟動期間發生的情況? 我嘗試了dmesg,但看不到 的結果mplayer 哪個是最合適的腳本來放置這樣的命令? ( rc.local, /etc/profiles?)

我不會直接從您的啟動執行 mplayer,而是編寫一個腳本並執行它。

你的腳本最終會執行你給出的相同的 mplayer 命令,但在此之前你可以檢查你的 wifi 連接是否正常工作(可能通過 ping 你的路由器),這可以讓你的腳本控制。它可以等到連接建立,然後啟動 mplayer。

如果您將啟動腳本放在 rc.local 之類的文件中,那麼它將在啟動時啟動一次。如果您從您的個人資料啟動它,那麼它將在您登錄時啟動。

這是一個範例腳本,它在啟動 mplayer 之前等待它成功 ping 一個 IP 地址。

#!/bin/bash

RouterIP="128.0.0.1"
TimeOut=2
WaitTime=8


echo "Waiting for network connection"
while ! ping -q -c 1 -w $TimeOut $RouterIP > /dev/null
do
 echo Timeout, waiting $WaitTime seconds
 sleep $WaitTime
 echo "Waiting for network connection"
done

mplayer blah blah

您可以將 ip 地址更改為您的路由器內部埠並更正 mplayer 行。

將其命名為 startRadio 並使其可執行,然後對其進行測試。

`./startRadio

將它添加到您想要的任何啟動腳本,但將 stdout 和 stderr 重定向到 /dev/null 並將其作為後台程序啟動。

例如。

/path/to/your/script/startRadio >/dev/null 2>&1 &

引用自:https://unix.stackexchange.com/questions/114445