Belépés
Bash probléma
2009. március 23. – 18.59 – 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")
- A hozzászóláshoz regisztráció és belépés szükséges
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... :)
#!/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.
Szia!
if [ idevalami ];
then
idevalami
fi
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")
test $PID1 -eq 1 && ./arcemu-world
de cronba beleteheted ezt:
test ! $(pidof program) && /ahol/a/program/van/programnev
Nem é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.
coreutils csomag része. Gondolom az telepítve van.
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")
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!