2011-03-10 79 views
1

我有兩個簡單的shell腳本來運行我的Solr安裝在屏幕並重新啓動它崩潰(有時內存堆發生異常...)如何強制bash解釋器?

startserver.sh

cd apache-solr/example 
screen -S solrserver ./runner.sh 
cd ../.. 

runner.sh

until java -jar -Xmx1024m start.jar; do 
    echo "server stopped with exit code $? restart..." >&2 
    sleep 10 
done 

他們工作得很好,但問題是,runner.sh必須對當前用戶可執行。

所以這必須明確設置。

我擁有一切顛覆,顛覆不夠聰明來管理訪問權限。

所以我正在尋找一種解決方案,在當前環境中啓動腳本不是作爲可執行腳本,而是將它傳遞給解釋器。

類似:

/bin/bash runner.sh 

另一個別名應該是剛剛. runner.sh(比以及其未必猛擊,但當前用戶的shell) 我這樣做與之前Perl和PHP腳本,但不知何故,它贏得了」 t工作

我有一個直接的Ubuntu的10.04 lts服務器上的亞馬遜實例。以及我安裝了Apache2和一些Apache模塊,顛覆和我最喜歡的命令行編輯器,但沒有重大的系統改編。


它工作得很好/bin/bash我一定得到了別的錯誤。抱歉。

+0

它工作得非常好/ bin/bash我一定得到了別的錯誤。抱歉。 – 2011-03-10 12:14:43

回答

1

設置svn:executable財產

+0

謝謝!多數民衆贊成在 – 2011-03-10 12:22:22

+0

我很喜歡svn:可寫作的,但它看起來不像它 – 2011-03-10 12:24:24

+0

設置您的umask 002甚至000 - 可能會伎倆。 – Erik 2011-03-10 12:26:13

2

有你shebang在腳本的開始?

這樣,當你啓動腳本時,shell會知道該怎麼做,在你的情況下,使用bash啓動腳本。

在您的腳本開頭(第一行)添加#!/bin/bash

+0

這是真的和重要的,但在這種情況下,我的問題就像shell拒絕發射。事實上,我有一個shebang,我想通過翻譯啓動它。利用作爲副作用的社會需求 – 2011-03-10 12:21:49