Nietypowe zapytanie GREP - sprawdzanie procesu

Konfiguracja serwerów, usług, itp.
jaason
Posty: 7
Rejestracja: 22 września 2009, 09:19

Nietypowe zapytanie GREP - sprawdzanie procesu

Post autor: jaason »

Witajcie ponownie.
Próbuję ustawić za pomocą crona sprawdzanie czy drugi proces serwera gry jest uruchomiony, jednak za każdym razem kod poniżej zwraca 0. Pomimo tego, że serwer uruchomiłem ręcznie z palca w screenie. Problemem pewnie jest zapis z myślnikiem:

Kod: Zaznacz cały

hlds_amd -game valve'
Jednak nie wiem jak do tego dobrze podejść:

Kod: Zaznacz cały

#!/bin/sh

ile_procesow=`ps -ef | grep -e hlds_amd -game valve | wc -l`
echo $ile_procesow
if [ $ile_procesow -eq "1" ]
    then
        echo "jest proces"
    else
        echo "brak procesu"

fi
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Sprawdź może

Kod: Zaznacz cały

`ps -ef | grep "hlds_amd -game valve"  | wc -l`
jaason
Posty: 7
Rejestracja: 22 września 2009, 09:19

Post autor: jaason »

Dziękuję za wskazówki.
Zmieniłem i zdaje się działa lepiej. Jednak pojawia się inny problem.
Gdy listują sobie procesy poleceniem

Kod: Zaznacz cały

 ps -ef
wyświetla mi bardzo długą listę procesów. Głównie wywoływany z crona skrypt opisany powyżej. Skrypt ten ma za zadanie sprawdzać co minutę czy jest uruchomiony proces serwera gry, jeśli nie to go ma stworzyć.

Oto co mi się wyświetla po wpisaniu:

Kod: Zaznacz cały

ps -ef
(mniejsza część- ale reszta wygląda podobnie)

Kod: Zaznacz cały

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:59 ?        00:00:00 init [2]
root      1415 30680  0 10:05 ?        00:00:00 /USR/SBIN/CRON
root      1416  1415  0 10:05 ?        00:00:00 /bin/sh -c /root/hlds_l/sprawdz_serwer >> /dev/null 2>&1
root      1423  1416  0 10:05 ?        00:00:00 /bin/sh /root/hlds_l/sprawdz_serwer
root      1438  1423  0 10:05 ?        00:00:00 /bin/sh /root/hlds_l/hlds_run -game cstrike +port 27016 +maxplayers 11 +map de_dust +exec server.cfg 
root      1570 30680  0 11:02 ?        00:00:00 /USR/SBIN/CRON
root      1571  1570  0 11:02 ?        00:00:00 /bin/sh -c /root/hlds_l/sprawdz_serwer >> /dev/null 2>&1
root      1578  1571  0 11:02 ?        00:00:00 /bin/sh /root/hlds_l/sprawdz_serwer
root      1583  1578  0 11:02 ?        00:00:00 /bin/sh /root/hlds_l/hlds_run -game cstrike +port 27016 +maxplayers 11 +map de_dust +exec server.cfg 
root      1698 30680  0 10:06 ?        00:00:00 /USR/SBIN/CRON
root      1699  1698  0 10:06 ?        00:00:00 /bin/sh -c /root/hlds_l/sprawdz_serwer >> /dev/null 2>&1
root      1701  1699  0 10:06 ?        00:00:00 /bin/sh /root/hlds_l/sprawdz_serwer
root      1706  1701  0 10:06 ?        00:00:00 /bin/sh /root/hlds_l/hlds_run -game cstrike +port 27016 +maxplayers 11 +map de_dust +exec server.cfg 
root      1854 30680  0 10:39 ?        00:00:00 /USR/SBIN/CRON
root      1861  1854  0 10:39 ?        00:00:00 /bin/sh -c /root/hlds_l/sprawdz_serwer >> /dev/null 2>&1
root      1868  1861  0 10:39 ?        00:00:00 /bin/sh /root/hlds_l/sprawdz_serwer
root      1874 30680  0 11:19 ?        00:00:00 /USR/SBIN/CRON
root      1875  1874  0 11:19 ?        00:00:00 /bin/sh -c /root/hlds_l/sprawdz_serwer >> /dev/null 2>&1
root      1876  1875  0 11:19 ?        00:00:00 /bin/sh /root/hlds_l/sprawdz_serwer
root      1882  1868  0 10:39 ?        00:00:00 /bin/sh /root/hlds_l/hlds_run -game cstrike +port 27016 +maxplayers 11 +map de_dust +exec server.cfg 
root      1893  1876  0 11:19 ?        00:00:00 /bin/sh /root/hlds_l/hlds_run -game cstrike +port 27016 +maxplayers 11 +map de_dust +exec server.cfg 
root      3107 30680  0 10:07 ?        00:00:00 /USR/SBIN/CRON
root      3108  3107  0 10:07 ?        00:00:00 /bin/sh -c /root/hlds_l/sprawdz_serwer >> /dev/null 2>&1
root      3117  3108  0 10:07 ?        00:00:00 /bin/sh /root/hlds_l/sprawdz_serwer
root      3140  3117  0 10:07 ?        00:00:00 /bin/sh /root/hlds_l/hlds_run -game cstrike +port 27016 +maxplayers 11 +map de_dust +exec server.cfg 
root      3315 30680  0 10:48 ?        00:00:00 /USR/SBIN/CRON
Wpis w crontab:

Kod: Zaznacz cały

*/1 * * * * root /root/hlds_l/sprawdz_serwer >> /dev/null 2>&1
Zdaje się powinien raz na minutę być uruchomiony jeden proces i się wyłączać, a tutaj wygląda tak jakby co raz był uruchamiany nowy, a stary nie został zamknięty. Jak z tym sobie poradzić?
Awatar użytkownika
darkwater
Junior Member
Posty: 828
Rejestracja: 25 stycznia 2007, 14:01
Lokalizacja: Częstochowa

Post autor: darkwater »

Spróbuj dopisać exit na końcu skryptu
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Zerknij za poleceniem pidof. Zwraca listę PID procesu.
PiotrSz
Posty: 12
Rejestracja: 20 lipca 2009, 10:38

Post autor: PiotrSz »

Jak rozumiem to co zamieściłeś na początku nie jest całym skryptem.

Możliwe że gdzieś nie domknąłeś pętli. Ewentualnie zmień powłoke na bash

Kod: Zaznacz cały

#!/bin/bash
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Zamiast gdybać, proszę wklej cały skrypt który sprawia problemy. To co wkleiłeś w pierwszym poście to chyba tylko część.
jaason
Posty: 7
Rejestracja: 22 września 2009, 09:19

Post autor: jaason »

To jest całość.
Niestety wklejenie na samym końcu ,,exit'' nic nie pomogło. tzn. kod oryginalny różni się tylko tym, że pod linijką:

Kod: Zaznacz cały

echo "brak procesu"

jest uruchominy serwer hlds counter-strike'a. To wszystko. Zwykłe

Kod: Zaznacz cały

./hlds_l -game cstrike itp.
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Czyli jednak to nie jest cały skrypt ;-) Zacznij od ubicia wszystkich niepotrzebnych procesów serwera gry. Potem dodaj na końcu linii w której jest uruchamiany serwer gry znak '&'.
ODPOWIEDZ