2016-12-06 156 views
0

我有這個問題。我寫了非常簡單的腳本,打開3個具有特定位置和大小的終端,我想在啓動後運行它。shell腳本在步驟中執行

腳本:

#!/bin/sh  

wmctrl -s 1 

gnome-terminal --geometry=90x45+960+0 
gnome-terminal --geometry=83x21+0+0 
gnome-terminal --geometry=83x20+0+500 

wmctrl -s 0 

當我運行在終端這個腳本,它完美的作品。

我試圖通過「啓動應用程序」來運行它。 但是,當我重新啓動PC時,工作區被切換並打開第一個終端並停止腳本。當我關閉終端,然後腳本繼續打開第二個終端並再次停止。這是所有3個終端。

當我試圖通過crontab來做同樣的事情。

我做

2>〜/ test.txt的

,但沒有錯誤。

爲什麼這個腳本不是一次運行,而是分步執行?

+0

''2>〜/ test.txt'從crontab中:你確定的'〜'的位置?我會把一個絕對路徑,而不是... –

+0

@ Jean-FrançoisFabre測試文件被創建,但是是空的,因此我認爲'〜'很好 – snyco

回答

0

你試過在背景中運行嗎?

gnome-terminal --geometry=90x45+960+0 & 
gnome-terminal --geometry=83x21+0+0 & 
gnome-terminal --geometry=83x20+0+500 & 
+0

它的工作原理,但是與Kirill的最後一部分'wmctrl -s 0'一樣沒有執行。 – snyco

0

你的腳本進行三項gnome-terminal因此,這就是爲什麼你描述的行爲(這就像mkdir x; ls:後mkdir完成ls運行)。

如果你想運行wmctrl -s 0所有終端完成,使用此:

#!/bin/sh  

wmctrl -s 1 

pids= 
for geom in 90x45+960+0 83x21+0+0 83x20+0+500; do 
    # run gnome-terminal in background and save its process ID 
    gnome-terminal --geometry="$geom" & 
    pids="$pids $!" 
done 
wait $pids 

wmctrl -s 0 
+0

它與termianls一起工作,但是最後一條命令'wmctrl -s 0'沒有執行。 – snyco