Skript protsessi staatuse kontrolliks ja vajadusel käivitus
Moderaator: Moderaatorid
Skript protsessi staatuse kontrolliks ja vajadusel käivitus
Niih - oskab keegi soovitada mõnda head lahendust või koodi, mida croniga käima lükata, mis kontrolliks ühe protsessi staatust ja kui protsess on peatunud, siis käivitaks selle uuesti. Midagi, mida võiks croni-ga tööle lasta. Lihtsalt teenusele järjest restarte teha ei taha, kuid kui asi on tõesti seisma jäänud, siis teeks automaatselt teenusele taaskäivituse.
Tellige endale sünnipäevaks, sõbrapäevaks või muuks tähtpäevaks kingitus: Kingitused internetist - NetiKink.eu
Kood: Vali kõik
#!/bin/bash
teenus=nimi siia
if (( $(ps -ef | grep -v grep | grep $teenus | wc -l) > 0 ))
then
echo "$teenus töötab!"
else
/etc/init.d/$teenus start
fiPeaaegu töötab. Midagi on IF funktsiooniga nagu näha viga, sest ta teatab mulle kogu aeg, et teenus töötab:
Panin teenuse seisma ja kontrollisin, et tõesti seisab:
root@erp:~# ps -ef | grep -v grep | grep openerp | wc -l
0
käivitasin skripti:
root@erp:~# ./openerptest.sh
openerp töötab!
kuid tegelikult teenus tööle ei läinud ja käivitasin selle käsitsi
root@erp:~# /etc/init.d/openerp start
Starting openerp-server: openerp-server.
Nüüd kontrollisin veel üle, et mis staatuse ta nüüd annab.
root@erp:~# ps -ef | grep -v grep | grep openerp | wc -l
4
root@erp:~#
EDIT: oma ajuga muutsin skripti ja panin lõppu = 0 ja nüüd tuleb järgmine veateade, kuid vähemalt käivitab
kuid seda kogu aeg - isegi kui teenus juba töötab:
root@erp:~# ./openerptest.sh
./openerptest.sh: line 4: ((: 2 = 0 : attempted assignment to non-variable (error token is "= 0 ")
Starting openerp-server: openerp-server.
root@erp:~# ps -ef | grep -v grep | grep openerp | wc -l
1
root@erp:~# ./openerptest.sh
./openerptest.sh: line 4: ((: 5 = 0 : attempted assignment to non-variable (error token is "= 0 ")
Starting openerp-server: openerp-server.
root@erp:~#
EDIT2: minuviga - oleks pidanud panema == sinna > asemele. Kuid ikka ta ei saa õigest staatusest aru.
Panin teenuse seisma ja kontrollisin, et tõesti seisab:
root@erp:~# ps -ef | grep -v grep | grep openerp | wc -l
0
käivitasin skripti:
root@erp:~# ./openerptest.sh
openerp töötab!
kuid tegelikult teenus tööle ei läinud ja käivitasin selle käsitsi
root@erp:~# /etc/init.d/openerp start
Starting openerp-server: openerp-server.
Nüüd kontrollisin veel üle, et mis staatuse ta nüüd annab.
root@erp:~# ps -ef | grep -v grep | grep openerp | wc -l
4
root@erp:~#
EDIT: oma ajuga muutsin skripti ja panin lõppu = 0 ja nüüd tuleb järgmine veateade, kuid vähemalt käivitab
root@erp:~# ./openerptest.sh
./openerptest.sh: line 4: ((: 2 = 0 : attempted assignment to non-variable (error token is "= 0 ")
Starting openerp-server: openerp-server.
root@erp:~# ps -ef | grep -v grep | grep openerp | wc -l
1
root@erp:~# ./openerptest.sh
./openerptest.sh: line 4: ((: 5 = 0 : attempted assignment to non-variable (error token is "= 0 ")
Starting openerp-server: openerp-server.
root@erp:~#
EDIT2: minuviga - oleks pidanud panema == sinna > asemele. Kuid ikka ta ei saa õigest staatusest aru.
Tellige endale sünnipäevaks, sõbrapäevaks või muuks tähtpäevaks kingitus: Kingitused internetist - NetiKink.eu
Võid ka valmis lahendusi vaadata. Ise kasutan monitit
http://mmonit.com/monit/
http://mmonit.com/monit/
Kood: Vali kõik
imre@fusi:~$ ps aux | grep apache2
imre 22764 0.0 0.0 13752 976 pts/1 S+ 19:52 0:00 grep --color=auto apache2
imre@fusi:~$ sudo ./protsess
apache2 ei tööta - käivitan
* Starting web server apache2
*
imre@fusi:~$Programm pgrep võimaldab asja natuke lühemalt kirja panna:imre kirjutas:Kood: Vali kõik
#!/bin/bash teenus=nimi siia if (( $(ps -ef | grep -v grep | grep $teenus | wc -l) > 0 )) then echo "$teenus töötab!" else /etc/init.d/$teenus start fi
Kood: Vali kõik
#!/bin/bash
teenus=protsessi nimi siia
if pgrep "$teenus" > /dev/null; then
echo "$teenus töötab!"
else
"/etc/init.d/$teenus" start
# Tulevikus peab vist kirjutama nii:
#servicectl "$teenus" start
fiobundra kirjutas:Spott, ära pane skripti nimesse sellesama teenuse nime, mida kontrollida tahad, ta ju protsessidest grepib seda.
Tellige endale sünnipäevaks, sõbrapäevaks või muuks tähtpäevaks kingitus: Kingitused internetist - NetiKink.eu


