crontab, cron, duże id procesów

Konfiguracja serwerów, usług, itp.
xadi
Posty: 3
Rejestracja: 12 listopada 2009, 13:06

crontab, cron, duŻe id procesów

Post autor: xadi »

Witam.
Przegladając terminal po nocy zauważyłem, że mam bardzo dużo uruchomionych i nie zakończonych procesów, kilka wyłączyłem, ale zastanawiam się co się stało, że tak to strasznie wygląda. Przecież jeśli będę chciał trzymać system kilka dni, to skończy się pula id procesów?

Kod: Zaznacz cały

root     12469 12467  0 11:39 ?        00:00:00 wget -q [url]http://8[/url]
root     12483  1446  0 11:40 ?        00:00:00 /USR/SBIN/CRON  
root     12486 12483  0 11:40 ?        00:00:00 wget -q [url]http://8[/url]
www-data 12492   591  0 11:40 ?        00:00:00 /usr/sbin/apache
www-data 12496   591  0 11:40 ?        00:00:00 /usr/sbin/apache
www-data 12506   591  0 11:40 ?        00:00:00 /usr/sbin/apache
root     12521  1446  0 11:41 ?        00:00:00 /USR/SBIN/CRON  
root     12522 12521  0 11:41 ?        00:00:00 wget -q [url]http://8[/url]
root     12524  1446  0 11:42 ?        00:00:00 /USR/SBIN/CRON  
root     12525 12524  0 11:42 ?        00:00:00 wget -q [url]http://8[/url]
root     12526  1446  0 11:43 ?        00:00:00 /USR/SBIN/CRON  
root     12527 12526  0 11:43 ?        00:00:00 wget -q [url]http://8[/url]
root     12529  1446  0 11:44 ?        00:00:00 /USR/SBIN/CRON  
root     12530 12529  0 11:44 ?        00:00:00 wget -q [url]http://8[/url]
www-data 12532   591  0 11:44 ?        00:00:00 /usr/sbin/apache
www-data 12533   591  0 11:44 ?        00:00:00 /usr/sbin/apache
root     12534  1446  0 11:45 ?        00:00:00 /USR/SBIN/CRON  
root     12535 12534  0 11:45 ?        00:00:00 wget -q [url]http://8[/url]
www-data 12536   591  0 11:45 ?        00:00:00 /usr/sbin/apache
root     12537  1446  0 11:46 ?        00:00:00 /USR/SBIN/CRON  
root     12538 12537  0 11:46 ?        00:00:00 wget -q [url]http://8[/url]
root     12540  1446  0 11:47 ?        00:00:00 /USR/SBIN/CRON  
root     12541 12540  0 11:47 ?        00:00:00 wget -q [url]http://8[/url]
root     12544     1  0 11:48 ?        00:00:00 wget -q [url]http://8[/url]
root     12546     1  0 11:49 ?        00:00:00 wget -q [url]http://8[/url]
root     12548     1  0 11:50 ?        00:00:00 wget -q [url]http://8[/url]
root     12550     1  0 11:51 ?        00:00:00 wget -q [url]http://8[/url]
www-data 12560   591  0 11:54 ?        00:00:00 /usr/sbin/apach 
/etc/crontab:

Kod: Zaznacz cały

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
#jesli ma lecic email, to --report po parts
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#4,9,14,19,24,34,44,54,29,39,49,59
#* *     * * *   root    wget -q [url]http://8[/url]...
#

Kod: Zaznacz cały

root@komp:~# crontab -l
no crontab for root

Kod: Zaznacz cały

root@komp:~# ls /var/spool/cron/crontabs
systab  tmp.rI6Mga

Kod: Zaznacz cały

nano /var/spool/cron/crontabs/systab

Kod: Zaznacz cały

#Any changes will be apply after restart crond
# run-parts
#&nice(10),mailto(root) 01 * * * *       /bin/run-parts /etc/cron.hourly
#&nice(10),mailto(root) 02 5 * * *       /bin/run-parts /etc/cron.daily
#&nice(10),mailto(root) 02 2 * * 0       /bin/run-parts /etc/cron.weekly
#&nice(10),mailto(root) 02 4 1 * *       /bin/run-parts /etc/cron.monthly
tmp.rI6Mga jest pusty.

Kod: Zaznacz cały

root@komp:~# /etc/init.d/cron
Usage: /etc/init.d/cron {start|stop|status|restart|reload|force-reload}.
Dodam, że wczoraj trochę kombinowałem z cronem, jestem początkującym użytkownikiem, serwer działa od wczoraj i nie był restartowany, kilka razy wyłączałem i włączałem:

Kod: Zaznacz cały

/usr/sbin/cron
bo jakieś miałem początkowo problemy.
Jeszcze mam pytanie, jest może jakiś wytłumaczony, od początku, cron w jakimś poradniku, publikacji? Najlepiej, aby było wszystko opisane dokładnie jaki jest mechanizm, to takie marzenia moje.

Pozdrawiam,
xadi
Ister
Junior Member
Posty: 566
Rejestracja: 05 marca 2009, 12:42

Post autor: Ister »

Zrestartuj crona. Uruchamia Ci jakiś wpis, który teraz masz zahashowany (ten z wget).
xadi
Posty: 3
Rejestracja: 12 listopada 2009, 13:06

Post autor: xadi »

Zaponiałem dodać najważniejszego, właśnie to ma być non stop uruchamiane z tym wget z /etc/crontab, tylko martwi mnie to, że takie wielkie id procesów są, to jest normalne?
Każde uruchomienie crona powoduje powstanie nowego procesu?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

xadi pisze:to skończy się pula id procesów?
Nie skończy się.
xadi pisze:martwi mnie to, że takie wielkie id procesów są, to jest normalne?
Tak, to jest normalne i nie ma się co tym przejmować.
xadi pisze:Każde uruchomienie crona powoduje powstanie nowego procesu?
To zależy jaki masz wpis w crontabie. Ten:

Kod: Zaznacz cały

#* *     * * *   root    wget -q [url]http://8[/url]...
o ile nie byłby zakomentowany, będzie się uruchamiał co minutę.
Ister
Junior Member
Posty: 566
Rejestracja: 05 marca 2009, 12:42

Post autor: Ister »

Nie wiem co ten wget robi. ¦ciągasz to samo co minutę? Czy coś kontrolujesz? Może warto najpierw sprawdzić, czy taki sam wget już nie chodzi i jedynie jeśli żadnej innej jego instancji nie ma to uruchamiać?
Sprawdź jakie masz limity połączeń na serwerze, na który się łączysz. Nie chcesz, żeby wgety się mnożyły bo dopóki poprzedni nie skończy zadania to kolejny nie może wystartować.
Ogólnie - doprecyzuj co dokładnie chcesz osiągnąć, to może coś uda się zoptymalizować...
xadi
Posty: 3
Rejestracja: 12 listopada 2009, 13:06

Post autor: xadi »

Dobrze wiedzieć. Chciałbym jeszcze wiedzieć dlaczego pula id procesów nigdy się nie skończy?
Jeśli dojdzie do 64k, to się wyzeruje? Jak mam to rozumieć?
Jeśli u mnie każdy proces crona powoduje powstanie nowego id procesu, to na serwerach hostingowych, załóżmy, że co minutę wykonywane są setki procesów ,,cronowskich''. Tam id procesu dąży do nieskończoności?

Kod: Zaznacz cały

nano /etc/crontab
załóżmy, że mój cron wygląda tak:

Kod: Zaznacz cały

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
#4,9,14,19,24,34,44,54,29,39,49,59
* *     * * *   xadi    wget -q http://8(...)
#

Ten ,,wget -q'' był chcianym działaniem crona.

PS. Dziękuję, fnmirk za nauczenie mnie tego, że należy pisać ładnie. Zrobiłeś tyle rzeczy, a nawet nie napisałeś jednego zdania o tym. Bardzo szanuje i cenię to, że włożyłeś tyle pracy w poprawienie moich poprzednich postów. Dziękuję.
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

xadi pisze:Chciałbym jeszcze wiedzieć dlaczego pula id procesów nigdy się nie skończy?
Jeśli dojdzie do 64k, to się wyzeruje?
To nie tak że się nie skończy. PIDy w Linuksie przydzielane są na podstawie algorytmu (nagięty "pierwszy wolny"]/proc/sys/kernel/pid_max[/i]) to numerowanie zaczyna się od początku - i tak w koło Macieju. Dość wątpliwe jest abyś miał jednocześnie działających 32768 procesów (bo tyle jest domyślnie max, można oczywiście zwiększyć tą liczbę) bo ograniczony też jesteś innymi czynnikami - pamięć, maksymalna liczba otwartych deskryptorów plików itp.
Ister
Junior Member
Posty: 566
Rejestracja: 05 marca 2009, 12:42

Post autor: Ister »

Skoro wszystko jest zamierzone, to po początkowym rozruchu ja bym ze 2-3 razy sprawdził, czy ilość uruchomionych procesów (tych wynikających z crona) się ustabilizowała i jeśli tak, to bym się nie przejmował.
O PIDy się nie martw, o ile nie uruchomisz jednocześnie tylu procesów, to się nie skończą.
ODPOWIEDZ