Sleep in Shellscript erzeugt immer höheren PID

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Sleep in Shellscript erzeugt immer höheren PID

Beitrag von gnude » 07.07.2010 10:12:31

Hallo
ich hab ein Shell Script laufen, in dem eine While Schleife
mit "Sleep" drin vorkommt, so das die Schleife alle 5 Sekunden durchläuft.
Jetzt hab ich nachgeschaut mit ps -A ob alles gutläuft, und ... das Script wird schön aufgeführt.
Gleichzeitig erzeugt jedes Sleep alle 5 Sekunden eine neue PID,
so das in ps -A die PID's immer weiter steigen und steigen und steigen.


Ist das schlimm,
was kann ich dagegen tun?

Benutzeravatar
Meillo
Moderator
Beiträge: 9252
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sleep in Shellscript erzeugt immer höheren PID

Beitrag von Meillo » 07.07.2010 10:38:43

gnude hat geschrieben: ich hab ein Shell Script laufen, in dem eine While Schleife
mit "Sleep" drin vorkommt, so das die Schleife alle 5 Sekunden durchläuft.
Jetzt hab ich nachgeschaut mit ps -A ob alles gutläuft, und ... das Script wird schön aufgeführt.
Gleichzeitig erzeugt jedes Sleep alle 5 Sekunden eine neue PID,
so das in ps -A die PID's immer weiter steigen und steigen und steigen.
Das ist ganz normal. Für jeden Aufruf eines Kommandos wird ein Kindprozess erzeugt in dem das Kommando abläuft. Wenn dieser Kindprozess (das sleep) fertig ist beendet es sich. Beim nächsten Aufruf wird ein neuer Kindprozess erzeugt -> neue PID.

Die PID der Shell mit der das Script selbst ausgeführt wird bleibt dabei gleich.

Schau dir dazu mal die Ausgabe von `ps f' an, da siehst du die Eltern-Kind-Beziehung.
Use ed once in a while!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: Sleep in Shellscript erzeugt immer höheren PID

Beitrag von gnude » 07.07.2010 10:57:15

Ok
ich verstehe das.
Da es sich aber um einen Server handelt... wie hoch kann die PID denn gehen?
Ohne das es Probleme gibt?

Benutzeravatar
Meillo
Moderator
Beiträge: 9252
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Sleep in Shellscript erzeugt immer höheren PID

Beitrag von Meillo » 07.07.2010 11:06:50

gnude hat geschrieben: Da es sich aber um einen Server handelt...
Ob Server oder nicht ist unerheblich. Interessant ist nur die Anzahl gleichzeitig laufender Prozesse, und die könnte bei Servern höher sein.
wie hoch kann die PID denn gehen?
Ohne das es Probleme gibt?
Das Limit ist implementierungsabhängig und AFAIR in keiner Weise spezifiziert. Gängig ist eine 16bit Zahl.

Wenn das obere Limit erreicht wurde wrappt die Suche und es geht unten wieder los. Die nächste freie PID wird für den neuen Prozess genommen.

Problematisch wäre es wenn soviele Prozess *gleichzeitig* laufen dass es keine freie PID mehr gibt ... aber sowas kommt im Normalbetrieb nicht mal annähernd vor.

Deine sleep-Prozesse beenden sich ja nach Ablauf der Zeit wieder und geben die PID frei. (Dass nicht genau diese wieder verwendet wird liegt vermutlich daran, dass im Schleifenkörper auch irgendwo ein Prozess erzeugt wird.)
Use ed once in a while!

Benutzeravatar
gnude
Beiträge: 1569
Registriert: 14.09.2009 22:05:28
Kontaktdaten:

Re: Sleep in Shellscript erzeugt immer höheren PID

Beitrag von gnude » 07.07.2010 11:29:56

Aha.
Vielen Dank für diese Information. Brauch mir also nicht weiter gedanken machen um die Anzahl der Prozesse.... :D

Dann ist alles gut. :THX:

Antworten