Strona 1 z 1
Nietypowe zapytanie GREP - sprawdzanie procesu
: 24 września 2009, 12:13
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:
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
: 24 września 2009, 12:59
autor: lessmian2
Sprawdź może
Kod: Zaznacz cały
`ps -ef | grep "hlds_amd -game valve" | wc -l`
: 24 września 2009, 14:01
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
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:
(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ć?
: 24 września 2009, 16:15
autor: darkwater
Spróbuj dopisać exit na końcu skryptu
: 25 września 2009, 08:55
autor: mariaczi
Zerknij za poleceniem pidof. Zwraca listę PID procesu.
: 25 września 2009, 09:33
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
: 25 września 2009, 10:27
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ęść.
: 25 września 2009, 14:07
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ą:
jest uruchominy serwer hlds counter-strike'a. To wszystko. Zwykłe
: 25 września 2009, 14:22
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 '&'.