Davidoff Üdv, Ubuntu 8.10 64bit server változatot használom, és egy kis egyszerű scriptet szeretnék futtatni. A lényege hogy ha leáll a program akkor újra indítja. restarter.sh #!/bin/bash while [ 1 ]; do cd /opt/wowarsenal/bin echo "Arcemu" ./arcemu-world done Így akarom futtatni "sh restarter.sh" Ezt a hibát kapom: restarter.sh: 6: Syntax error: "done" unexpected (expecting "do")
Gorkhaan Ez így erőforrás pazarlás... végtelen ciklus. Cron-nal vizsgáld hogy fut e a programod, és ha fut, akkor ne csináljon semmit, de ha nem fut, akkor indítsa el. Script kell hozzá, de ne végtelen ciklussal már... :)
Davidoff #!/bin/sh # exit cd /opt/wowarsenal/bin/ pidof arcemu-world >/dev/null PID1=$? if [ $PID1 -eq 1 ] then echo "Starting world on "`date` >> ../restarter.log screen -A -m -d -S world /opt/wowarsenal/bin/arcemu-world fi Ezt találtam neten, ezt lehetne cron-al futtatni, de ennél ezt a hibát kapom: restarter.sh: 11: Syntax error: "fi" unexpected (expecting "then") 8.04en ezek működtek, de 8.10en már nem, pedig nekem nagy szükségem lenne restarterre.
Davidoff Legegyszerüsítettem: #!/bin/sh pidof arcemu-world >/dev/null PID1=$? if [ $PID1 -eq 1 ]; then ./arcemu-world fi és így is ezt a hibát kapom: root@arsenal:/opt/wowarsenal/bin# sh restarter.sh restarter.sh: 8: Syntax error: end of file unexpected (expecting "then")
Hercooles Davidofftest $PID1 -eq 1 && ./arcemu-world de cronba beleteheted ezt: test ! $(pidof program) && /ahol/a/program/van/programnev
Davidoff HercoolesNem értem a "test" mért van ott, mert ha ezt így akarom futtatni, akkor nem ismeri azt a parancsot, hogy test és nélküle sem jó. Nem tanultam ilyesmit, csak magamtól próbálom tanulni a linuxot.
Davidoff Nekem cron-al nem lenne olyan jó, 8.04en ezek a scriptek működtek, hétvégén raktam fel a 8.10et és ott már nem jók. Az a baj h a gép szerver teremben van és messze lakom ahhoz h ismét felmenyjek vissza rakni a 8.04et. Egy ilyen egyszerű scriptet kerestem neten és ennél is hibát kapok. #!/bin/bash n=1 while [ $n -le 6 ]; do echo $n let n++ done Ezt: test.sh: 7: Syntax error: end of file unexpected (expecting "do") Utána raktam a done után ilyen jelet ";" #!/bin/bash n=1 while [ $n -le 6 ]; do echo $n let n++ done; Ezt a hibát kaptam: test.sh: 6: Syntax error: "done" unexpected (expecting "do")
Davidoff Rájöttem a hibámra, az volt hogy a scriptet windowsban írtam jegyzettömbel, most megírtam linuxon "nano"-val és működik :D Köszönöm a segítséget!