On Son, 04 Aug 2002 at 23:40 (+0200), Christian Boltz wrote:
Am Sonntag, 4. August 2002 18:11 schrieb Sascha Andres:
ich habe mir ein kleines Skript angefungen:
,----[ test.sh ]- | #! /bin/sh | | ps aux > .tmp
Das gibt erstmal den "Useless use of temp-file award" ;-)
Im ersten Moment gebe ich Dir recht - nur weiss man ja nicht, ob er später die gleiche Datei noch mal nutzt. Ich habe die temp. Datei auch in Frage gestellt, aber preisverdächtig ist das noch nicht (der ps ist ziemlich lange unterwegs, es kann sich schon lohnen, die Ausgabe in einer Datei vorzuhalten).
Außerdem ist es evtl. ein Risiko, einen so allgemeinen Namen für ein Tempfile zu verwenden (z. B. Überschneidung mit anderen Programmen/Scripten, Datenverlust durch "boshafte" SymLinks [1], ...)
ACK. Abhilfe: tempnam und Co.
Apropos Tempfile: Die Datei .tmp wird bei Deinem Script im aktuellen Verzeichnis erstellt, was wohl nicht unbedingt sinnvoll ist. Für sowas gibt es ja schließlich /tmp ;-)
Jein. Das Script sagt nichts zum Ausführungsort - das kann auch /tmp sein. Und ganz nebenbei kann das auch dem Problem der Überschneidung mit anderen Programmen abhelfen. Nutze ich ein privates Verzeichnis, ist die Gefahr einer Namenskollision geringer. Ich würde es aber auch nicht so machen - ich räume nun mal nicht gern ständig auf ;-)
| running="FALSE" | cat .tmp | grep "java" | while read line
Hiermit verleihe ich Dir den "Useless use of cat award" ;-)
Jepp - aber den hat er schon von mir *fg*
Übrigens wirst Du garantiert immer TRUE erhalten, da zumindest die Zeile "grep java" von ps gelistet wird -> deshalb grep -v grep
Nö, eben nicht. Da die Ausgabe des ps _vor_ der Schleife mit dem grep kommt, kann er da auch nicht auftauchen (es sei denn, das Script lief zufälligerweise zur gleichen Zeit auf einem anderen Terminal). Da hat mal die temp. Datei die Nase vorn :-) Jan P.S.: Unter SuSE ist checkproc (und seine Vettern startproc und killproc) einen Blick wert.