1
我目前正在開發一個程序,它需要在程序尚未打開時自動引導程序。它需要超級用戶權限才能啓動。 目前,我有一個工作bash腳本,尋找如下:Bash腳本多個命令問題
#!/bin/bash
while true; do #Continue indefinitely
if [ $(ps aux | grep '/odroid_detection' | grep -v '<defunct>' -c) -le 4 ]; then #if less than 3 odroid_servers are active (booter opens 3 processes)
xterm -iconic -e su -c "xterm -iconic -hold /home/odroid/Documents/SUNRISE-Odroid/_odroid_detection/_odroid_detection/bin/Debug/_odroid_detection"
fi
sleep 60 #check every minute
done
執行,但是,不完全工作按計劃進行,因爲它是從根地圖,而不是圖它是在執行的程序。因此,我想要cd到可執行文件所在的映射(〜/ Documents/SUNRISE-Odroid/_odroid_detection/_odroid_detection/bin/Debug),但具有與上述相同的功能。這是我想出了:
#!/bin/bash
while true; do #Continue indefinitely
if [ $(ps aux | grep '/odroid_detection' | grep -v '<defunct>' -c) -le 4 ]; then #if less than 3 odroid_servers are active (booter opens 3 processes)
xterm -iconic -e "cd ../_odroid_detection/_odroid_detection/bin/Debug/ && su -c "xterm -iconic -hold -e _odroid_detection""
fi
sleep 60 #check every minute
done
然而,這並不工作,我已經嘗試了許多辦法,但我似乎無法得到它的工作。它提供了在終端以下錯誤:
xterm: Can't execvp cd ../_odroid_detection/_odroid_detection/bin/Debug && su -c xterm: No such file or directory
給出這個錯誤的xterm在地圖〜/ Documents/SUNRISE-Odroid/Bash中打開,執行上面提到的cd在單獨執行時會起作用,所以我不明白它爲什麼找不到文件或目錄。
有什麼建議嗎?
與bash問題無關。你有沒有考慮過使用['supervisor'](http://supervisord.org/)?這是主管確切的類型;保持X個進程存活(通過'numprocs'配置設置)。 – Dencker
如'man xterm'所述,'-e'將程序及其參數作爲參數,而不是命令列表。不過,你可以運行'bash'作爲程序。 – choroba
好吧,StackOverflow的着色讓我明白了我犯的一個錯誤:'su -c'後面的起始引用被解釋爲xterm execute行的結束引用。 我現在有一個工作程序,將稍後發佈解決方案。 – Timmeh