Shell script - start / stop usługi


(JarekMk) #1

Cześć,

Wymyśliłem sobie coś takiego:

!/bin/bash

sudo /etc/init.d/proftpd start

echo "Poprawnie uruchomiono serwer!"

Analogicznie dla zatrzymania usługi, a teraz pytanie: jak zrobic z tego taki full wypas z opcjami:

  1. Sprawdź stan

  2. Uruchom usługę

  3. Zatrzymaj usługę

?


(Kaka') #2

Nie jest to skomplikowane - ja bym to zrobił w następujący sposób: na początku skryptu, sprawdziłbym z jakim argumentem został on wywołany, a potem skoczył do odpowiedniej funkcji, która np. zatrzymuje usługę.


(JarekMk) #3

!/bin/bash

echo "1. Sprawdź status"

sudo /etc/init.d/proftpd status

echo "Serwer uruchomiony!"

echo "Serwer zatrzymany!"

echo "2. uruchom serwer"

sudo /etc/init.d/proftpd start

echo "Poprawnie uruchomiono serwer!"

echo "3. Zatrzymaj serwer"

sudo /etc/init.d/proftpd stop

echo "Poprawnie zatrzymano serwer!"

No tylko jak to teraz jakoś zgrać?


(Kaka') #4

Każdy z tych fragmentów kodów zrób sobie jako funkcję. Na początku skryptu sprawdzaj argumenty wywołania i np. jeśli wywołamy skrypt z argumentem --start, to wykonuje się funkcja odpowiedzialna za start usługi.

Jak sprawdzać argumenty oraz napisać i wywołać funkcję? Do tego musisz sam dojść. Masz dokumentację (man). Innym rozwiązaniem jest poszukanie kursów na Google. Możesz także spojrzeć do innych skryptów startowych i zobaczyć jak tam zrobił to autor danego skryptu.


(JarekMk) #5

A masz jakiś sprawdzony kurs / poradnik? Bo jedyne co znalazłem to książkę w Helionie...


(Kaka') #6

Proszę:

http://ultra.ap.krakow.pl/~bar/kursbasha/funkcje.html

http://www.gentoo.org/doc/pl/articles/b ... ple-p2.xml


(matiit) #7

Ja bym to zrobił tak:

#!/bin/bash

case $1 in #check the argument

"s" ) name="Suspend" && sudo pm-suspend ;; #Suspend 

"h" ) name="Hibernate" && sudo pm-hibernate ;; #Hibernate

* ) echo "Kiling now...for your safety!" && kill $$ ;; #Kill script if there are bad argument or null argument

esac

echo "Come back from" $name

echo "Let start to cleaning the swap" 

UsedSwap=`free | awk '{ if (NR==4) { print $3 }}'` #Get know, how many swap is using now

if [$UsedSwap != "0"] 

then

  sudo swapoff -a && sudo swapon -a #Czyszczenie swapa

  echo "Swap cleaned"

else

  echo "There is no need to cleaning the swap"

fi

echo $name "is done"%

Masz przykład do hibernacji, ale myślę że zrozumiesz o co chodzi.