Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: Skrypt uruchomieniowy do programów  (Przeczytany 1685 razy)

  • Gość
Skrypt uruchomieniowy do programów
« dnia: 2006-11-14, 12:33:57 »
Witam,

mam zainstalowany serwerek do gry wow, za kazdym razem kiedy chce go zresetowac musze killnac wszystkie procesy i opdalic go na nowo, a chcialbym zrobic skrypcik dzieki ktoremu moglbym mu wydawac komende np, /usr/bin/serwerek restart , albo stop albo start...

procesy ktore musze uruchomic/zrestartowac sa dwa, jeden jest mangosd a drugi realmd

(w ogole tych procesow mangosd robi sei kilkanascie wiec killanie ich jest mało zabawne... tak samo jak jest procesow apacha czy mysqla, ale tam jest magiczny skrypcik...)


moge zrobic to dla dowolnego programu czy te skrypty sa udostepniane tylko w "gotowych" paczkach?

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Skrypt uruchomieniowy do programów
« Odpowiedź #1 dnia: 2006-12-11, 15:19:21 »
> moge zrobic to dla dowolnego programu czy te skrypty sa udostepniane tylko w
> "gotowych" paczkach?

Oo... to nie microsoft z magicznymi gotowcami w (service) paczkach.


Trochę basha :)

----- serverek --------------------------------------------------------

#!/bin/bash

function Start
{
  echo -n "Starting the server... "
  # polecenia
  /path/to/mangosd
  /path/to/realmd
  # koniec
  echo -en "e[32m"
  echo -en "done"
  echo -en "e[0m"
  echo -en "n"
}

function Stop
{
  echo -n "Stopping the server... "
  # polecenia
  killall mangosd
  killall realmd
  # koniec
  echo -en "e[32m"
  echo -en "done"
  echo -en "e[0m"
  echo -en "n"
}

case $1 in
  "start")
    Start
    ;;
  "stop")
    Stop
    ;;
  "restart")
    Stop
    Start
    ;;
  *)
    echo "Usage:"
    echo "  $0 [start|stop|restart]"
esac

----- EOF --------------------------------------------------------


W Start i Stop wstawiasz swoje polecenia, wrzucasz plik do jakiegoś bin/ i ustawiasz na wykonywalny (chmod a+x serverek).


PS.
echo -en "e[32m"
echo -en "done"
echo -en "e[0m"
echo -en "n"
To mi się nudziło i zrobiłem kolorki xD - jak nie chcesz to wstaw tam po prostu:
echo "done"


PS2.
Jak ci się bardzo nudzi i chcesz mieć skrypt idealny to po każdym wykonaniu jakiegos polecenia powinienes odczytywać jego rezultat i dodawać do zmiennej:
wynik=0
/path/to/mangosd
wynik=`expr $wynik + $?`
/path/to/realmd
wynik=`expr $wynik + $?`
I teraz jezeli wynik jest 0 (bez bledow) to wyswietlasz na zielono "done", a jak różny od 0 to wyświatlasz na czerwono "failed"
if [ $wynik -eq 0 ]; then
  echo -en "e[32m"
  echo -en "done"
  echo -en "e[0m"
  echo -en "n"
else
  echo -en "e[31m"
  echo -en "failed"
  echo -en "e[0m"
  echo -en "n"
fi
Wtedy możesz przekierować również wyniki poleceń do jakiegoś pliku logów, czyli dla każdego z poleceń kierujemy strumień out oraz err do pliku:
/path/to/mangosd >> /path/to/logfile 2>&1
I tak samo dla realmd oraz killall-ów.
Do tego na początek pliku usunięcie starego logfile:
rm -f /path/to/logfile
Oczywiście user wykonujący skrypt musi mieć prawa zapisu do katalogu z plikiem logu /path/to/logfile.

Zatem będzie coś takiego:

----- serverek2 --------------------------------------------------------

#!/bin/bash

function Start
{
  echo -n "Starting the server... "
  wynik=0
  /path/to/mangosd >> /path/to/logfile 2>&1
  wynik=`expr $wynik + $?`
  /path/to/realmd >> /path/to/logfile 2>&1
  wynik=`expr $wynik + $?`
  if [ $wynik -eq 0 ]; then
    echo -en "e[32m"
    echo -en "done"
    echo -en "e[0m"
    echo -en "n"
  else
    echo -en "e[31m"
    echo -en "failed"
    echo -en "e[0m"
    echo -en "n"
  fi
}

function Stop
{
  echo -n "Stopping the server... "
  wynik=0
  killall mangosd >> /path/to/logfile 2>&1
  wynik=`expr $wynik + $?`
  killall realmd >> /path/to/logfile 2>&1
  wynik=`expr $wynik + $?`
  if [ $wynik -eq 0 ]; then
    echo -en "e[32m"
    echo -en "done"
    echo -en "e[0m"
    echo -en "n"
  else
    echo -en "e[31m"
    echo -en "failed"
    echo -en "e[0m"
    echo -en "n"
  fi
}

rm -f /path/to/logfile
case $1 in
  "start")
    Start
    ;;
  "stop")
    Stop
    ;;
  "restart")
    Stop
    Start
    ;;
  *)
    echo "Usage:"
    echo "  $0 [start|stop|restart]"
esac

----- EOF --------------------------------------------------------