• Ismertető
  • Hírek
  • Letöltés
  • Súgó
  • Közösség
ubuntu.hu

Belépés

  • Felhasználó létrehozása
  • Elfelejtett jelszó

Facebook

Kapcsolat

  • Facebook oldal
  • IRC
  • Közösségi levlista
  • Segítői levlista
  • További elérhetőségek

Bash probléma

2009. március 23. – 18.59 – Davidoff
  • Kiszolgálók

Ü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")

‹ Céghez vékony kliens, AS400-al HP e-Vectra server ›
  • A hozzászóláshoz regisztráció és belépés szükséges
Gorkhaan – moderátor – 2009. március 23. 19.37

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... :)

  • A hozzászóláshoz regisztráció és belépés szükséges

 

Davidoff – 2009. március 23. 20.08

#!/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.

  • A hozzászóláshoz regisztráció és belépés szükséges

 

mrton – 2009. március 23. 20.22 – előzmény

Szia!

if [ idevalami ];
then
idevalami
fi

  • A hozzászóláshoz regisztráció és belépés szükséges

 

Davidoff – 2009. március 23. 20.48

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")

  • A hozzászóláshoz regisztráció és belépés szükséges

 

Hercooles – 2009. március 23. 21.46 – előzmény

test $PID1 -eq 1 && ./arcemu-world

de cronba beleteheted ezt:
test ! $(pidof program) && /ahol/a/program/van/programnev

  • A hozzászóláshoz regisztráció és belépés szükséges

 

Davidoff – 2009. március 23. 22.11 – előzmény

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.

  • A hozzászóláshoz regisztráció és belépés szükséges

 

Hercooles – 2009. március 23. 22.51 – előzmény

coreutils csomag része. Gondolom az telepítve van.

  • A hozzászóláshoz regisztráció és belépés szükséges

 

Davidoff – 2009. március 24. 18.53

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")

  • A hozzászóláshoz regisztráció és belépés szükséges

 

Davidoff – 2009. március 25. 14.38

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!

  • A hozzászóláshoz regisztráció és belépés szükséges

 

Hozzászólás-megjelenítési lehetőségek

A választott hozzászólás-megjelenítési mód a „Beállítás” gombbal rögzíthető.
© 2007–2020. Magyar Ubuntu Közösség.
Az Ubuntu a Canonical bejegyzett védjegye.
Az ubuntu.hu az fsf.hu kiszolgálóin fut.