Startup

網路啟動後在啟動時執行 GUI 應用程序

  • November 21, 2018

我需要在啟動時自動啟動 GUI 應用程序,但是在網路啟動後,正確的方法是什麼?我的作業系統是帶有 LXDE 的 Lubuntu。我嘗試了不同的方法,例如 crontab、rc.local 和 autostart,但都沒有成功。

如果您知道如何為 LXDE 放置啟動腳本(請參閱文件),您始終可以建構自定義腳本:

until ip link show $interface | grep -F -q "state UP"; do
   sleep 10 # wait every ten second
done
# interface is up, now start program
exec bla

解釋:

  • ip link show $interface列印帶有介面狀態的一行(在本例中enp0s25):

3: enp0s25: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000

  • grep -F -q "state UP"檢查輸出是否包含 line state UP。如果是,則返回成功(退出程式碼 0),否則返回失敗(退出程式碼 1)。
  • until … do; sleep 10; done執行sleep 10直到命令成功,即直到ip顯示state UP。只要介面不up,等待10秒再檢查。
  • 當介面啟動時,循環結束並執行以下腳本。

這當然是“忙於等待”,並不是一個理想的解決方案,但總會奏效。(或者,如果您想確保真正的網際網路連接,請使用ping -W 2 -c 1 google.com >& /dev/null而不是。)ip … | grep

如果您使用某些網路管理器,請檢查其文件是否可以添加在建立網路連接時執行的腳本。但是,這可能僅適用於 root 訪問,這會使您在 X 會話中啟動程序變得複雜。

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