2015-02-24 73 views
0

嗨,大家好,我需要你的幫助。我有一臺運行Lubuntu 14.10而無需顯示器的PC。用戶自動登錄。我創建了一個Sysvinit腳本並將其安裝到/etc/init.d。我的腳本除其他外,還啓動了一個jar文件,該文件打開一個在串口上偵聽的GUI應用程序。Autostart GUI Java jar Lubuntu

的問題是,我不能讓罐子應用程序在啓動時自動啓動。 Java抱怨它無法連接到X11顯示服務器。然而這是奇怪的事情。如果我使用sudo服務登錄機器並自己運行腳本,它會正常啓動。另外,如果我在啓動時連接了顯示器,它本身也能正確啓動。

我需要在沒有連接監視器的情況下啓動腳本。好像當監視器沒有連接時,Xorg服務器沒有啓動。有沒有人有什麼建議?

感謝

回答

0

經過很多故障排除後,我終於實現了我想要的。畢竟問題是X服務器沒有足夠的時間來加載。 Xserver是從lightdm開始的,這是一個新興的服務,我的腳本從init.d開始。

看來,如果顯示器連接X服務器啓動較早和我的init.d腳本沒有崩潰。

一個簡單的睡眠10命令來搪塞腳本的執行,直到X服務器啓動的伎倆。但是,這是X服務器啓動時的猜測。所以更優雅的解決方案是檢查桌面何時啓動,然後啓動我的應用程序。爲了實現這一點,我在啓動腳本之前插入了以下幾行代碼。

while [ -z $(pidof lxsession) ]; do 
    echo "LXSession not started yet, waiting for 2 secs" 
    sleep 2 
done 

-z $(pidof lxsession)我檢查的pidof返回的字符串爲空。 (因此沒有找到進程lxsession的PID)。只要lxsession開始,循環被取消,腳本移動到執行我的Java應用程序,該應用程序現在可以找到X服務器並正常運行。

謝謝大家的幫助。我希望其他人得到這個線索的幫助,而不是像我一樣折磨!

1

你可能需要一個Xorg的模擬器像xvfb

我沒有測試過上Lubuntu以下,但它應該工作:

sudo apt-get install xvfb 
sudo Xvfb :10 -ac 
export DISPLAY=:10 

這應該讓你的應用程序通過XVFB運行,而無需任何類型的監視器或顯示器。