2015-04-23 121 views
0

我正在爲我的兒子運行一個minecraft服務器,我是在minecraft服務器上的新手,無論如何,它似乎一直在死,因爲它不能跟上?好了,所以它是一個虛擬機,我會在某個時候被分配更多的資源,但我的問題是如下編寫一個bash或其他腳本來重新啓動另一個腳本

我發起的服務器通過一個腳本 bukkit.sh加載的腳本內已

#!/bin/bash 
java -Xmx1024M -jar /minecraftserver/bukkitserver/craftbukkit-1.7.1.jar -o true 

現在在白天或晚上的某個點它會死,因爲它不能跟上,有沒有辦法我可以有一些其他腳本一起運行,並看到該進程已經死亡,並再次運行該腳本開始服務器。

當我運行頂部我可以看到,Java是在頂部使用所有的資源,所以即時通訊100%多數民衆贊成minecraft Java。 PID每次加載時是否保持不變?

將是巨大的,如果有人可以讓這個手...

+0

你之前有過與cron作業搞混嗎?我有一種感覺,這是你需要的。您可以安排腳本檢查每x分鐘運行的進程。 – xboxremote

+0

你知道它爲什麼會崩潰嗎?沒有足夠的內存,計算機被關閉,.... – Lukino

+0

其在虛擬機中的資源,我知道修復,但不能承受額外的RAM我需要把它放在它,所以這是一個臨時修復重新啓動腳本時它死了 – wifiuk

回答

0

編輯: 您可以創建一個腳本,讓我們把它叫做craftbukkit.sh

確保其執行使用:chmod +x craftbukkit.sh

然後在腳本中你可以這樣寫:

#!/bin/sh 

ps auxw | grep craftbukkit-1.7.1.jar| grep -v grep > /dev/null 

if [ $? != 0 ] 
then 
     /path/to/your/bukkit.sh 
fi 

變化/path/to/your/bukkit.sh到whereve我的世界啓動腳本是。

然後,你需要將這個腳本添加到你的crontab,這是通過輸入crontab的編輯器來完成:crontab -e

如果您希望腳本每5分鐘運行,添加一行,看起來像這樣:

*/5 * * * * /path/to/craftbukkit.sh 

請注意,您必須將/ path /更改爲指向您創建craftbukkit.sh腳本的位置。

+0

所以當我運行加載我的jar文件的bukkit.sh。在TOP中它只是作爲java運行。 那麼,我可以嘗試什麼命令來實現這個工作? @marc,我將如何初始化您的腳本,這是否只是除了bukkit.sh腳本。 在cron作業方面,我用這個搜索引擎進行搜索,但我不太清楚如何讓它和pgrep一起工作? – wifiuk

+0

它只顯示java的頂端,因爲它顯示進程名稱,而不是完整的命令行。點擊'c',而在頂部它應該在兩個選項之間切換。 –

+0

我收到以下錯誤 CraftBukkit.sh:5:[:1:unexpected operator – wifiuk

1

我認爲java進程一旦啓動就保持在前臺?是否有任何理由,你不能只是做:

while : 
do 
    java -Xmx1024M -jar /minecraftserver/bukkitserver/craftbukkit-1.7.1.jar -o true 
done 

然後任何時間的java退出,該腳本會簡單地重新啓動它。

+0

是的,該過程加載交互式控制檯,並保持在前臺。 我該如何實現這一點,只需將其添加到bin/bash下面的現有bukkit.sh腳本 – wifiuk

+0

是的,我會這麼認爲。基本上只需找到java調用的當前位置,並用while循環包裝它。 –

+0

好吧,我會給它一個去,讓你kow – wifiuk

相關問題