Ausgabe: Nur erste Zeile

Diskutiere Ausgabe: Nur erste Zeile im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo Zusammen, ich habe ein Skript geschrieben, welches mit mit Hilfe des RRDtools einige Daten grafisch ausgibt. Das Problem ist allerdings,...

  1. #1 infinity331, 23.03.2011
    infinity331

    infinity331 Jungspund

    Dabei seit:
    08.03.2011
    Beiträge:
    14
    Zustimmungen:
    0
    Hallo Zusammen,

    ich habe ein Skript geschrieben, welches mit mit Hilfe des RRDtools einige Daten grafisch ausgibt. Das Problem ist allerdings, dass ich eine sh-Datei ausführe und diese dann nach einigen anderen Befehlen wieder gestopt werden soll.

    Das Ausführen sieht folgendermaßen aus:
    Code:
    sh /root/scripts/rrdtool/cronpluto.sh &
    Jetzt benötige ich aber die PID um die Datei wieder zu stoppen, welche ich folgendermaßen raushole:
    Code:
    PID=$(ps -ax | grep cronpluto |awk '{print $1}')
    kill PID
    An dieser Stelle werden aber immer 2 PIDs ausgegeben, eine welche nicht "killbar" ist. Ich möchte daher nur die erste Zeile ausgegeben haben, damit ich die korrekte PID killen kann und die Datei somit beendet ist.

    Ich hoffe ihr könnt mir weiterhelfen.

    Gruß,
    infinity331


    PS: Using CentOS.
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bytepool, 23.03.2011
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    wenn das Starten und Stoppen innerhalb des selben Skriptes passieren soll, kannst du doch besser einfach den job killen (kill %1)?

    Z.B.:
    Code:
    #!/bin/bash
    # while-true.sh
    
    while true; do
        echo foo >> foo.bar
    done
    
    Code:
    #!/bin/bash
    # end-while.sh
    
    echo "Start while loop in job 1."
    ./while-true.sh &
    echo "Kill job 1."
    kill %1
    echo "Should be done now."
    
    Oder passiert das Starten und Stoppen in unterschiedlichen sub-shells?

    mfg,
    bytepool
     
  4. #3 floyd62, 24.03.2011
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    324
    Zustimmungen:
    0
    Hi,

    du bekommst wohl 2 PIDs, weil bei
    Code:
    PID=$(ps -ax | grep cronpluto |awk '{print $1}')
    
    der 'grep'-Befehl selbst immer mit erwischt wird, dieser beim 'kill' danach aber natürlich bereits beendet ist. Nimm doch stattdessen einfach
    Code:
    PID=$!
    
    also die PID des zuletzt gestarteten Background-Prozesses. Die kannst du ja ggf. auch in einem Temp-File zwischenspeichern, wenn der 'kill' etwa aus einem anderen Skript erfolgen soll.

    NB: davon, beim 'grep' z.B. mit 'head -1' die erste Zeile rauszuholen, würde ich abraten: m.E. gibt es keine Garantie dafür, dass die Prozesse wirklich immer in der dafür notwendigen Reihenfolge aufgelistet werden.

    Gruss, A.
     
  5. NoXqs

    NoXqs Routinier

    Dabei seit:
    07.05.2007
    Beiträge:
    420
    Zustimmungen:
    0
    Ort:
    Bremen
    Wenn es denn unbedingt mit ps/grep sein soll.

    Code:
    PID=$(ps -ax | grep cronpluto | grep -v grep |awk '{print $1}')
    
     
  6. #5 floyd62, 24.03.2011
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    324
    Zustimmungen:
    0
    ... und wenn's auf keinen Fall '$!' sein soll, evtl auch
    Code:
    PID=$(ps -ax | grep [c]ronpluto | awk '{ print $1 }')
    
    (damit fliegt der grep-Prozess schon mal selber raus), oder gleich ganz ohne grep (awk kann das ja auch alles)
    Code:
    PID=$(ps -ax | awk '/[c]ronpluto/ { print $1 }')
    
    ... das gibt dann nur noch Probleme, wenn gleichzeitig ein cronplutoXXX-Prozess aktiv ist, oder jemand mit dem Editor an einer cronpluto-Datei rumschraubt.

    ;)
    A.
     
  7. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.279
    Zustimmungen:
    21
    gibt es einen Grund, daß hier niemand
    Code:
    pidof
    verwendet?
     
  8. #7 infinity331, 20.05.2011
    infinity331

    infinity331 Jungspund

    Dabei seit:
    08.03.2011
    Beiträge:
    14
    Zustimmungen:
    0
    Danke, vielmals. Ich habe es mit der Lösung von floyd62 umgesetzt und funktioniert soweit auch ganz gut.

    Hätte da nun doch noch eine Frage. Gibt es eine Möglichkeit die PID beim Ausführen eines Shell-Skripts durch ein anderes Skript direkt mitzulesen und zu speichern ohne erstmal in der ps - Ausgabe zu suchen?
     
  9. sinn3r

    sinn3r Law & Order
    Moderator

    Dabei seit:
    28.12.2006
    Beiträge:
    2.769
    Zustimmungen:
    3
    Ort:
    Wentorf
    Du könntest vom ersten Skript ein PID-File anlegen lassen, dass das andere Skript dann ausliest.
     
  10. #9 infinity331, 20.05.2011
    infinity331

    infinity331 Jungspund

    Dabei seit:
    08.03.2011
    Beiträge:
    14
    Zustimmungen:
    0
    Jo, das habe ich mir so gedacht, nur war der Kern der Frage, wie dies geht. Aber habe da nun eine Lösung gefunden.
    Ich speicher die PID mithilfe der Konstante $$ .
     
Thema: Ausgabe: Nur erste Zeile
Besucher kamen mit folgenden Suchen
  1. UBUNTU script NUR erste zeile

    ,
  2. linux nur erste zeile anzeigen

    ,
  3. erste zeile linux

    ,
  4. awk gefunden nur erste zeile,
  5. bsh printe nur erste zeile,
  6. grep ausgabe nur erste Zeile
Die Seite wird geladen...

Ausgabe: Nur erste Zeile - Ähnliche Themen

  1. Yocto 3.1 - erste Ausgabe mit langfristiger Unterstützung

    Yocto 3.1 - erste Ausgabe mit langfristiger Unterstützung: Yocto, eines der verbreitetsten eingebetteten Linux-Systeme, ist in Version 3.1 erschienen. Es ist die erste Ausgabe, die zwei Jahre statt einem...
  2. Falsche Ausgabe von $LINENO

    Falsche Ausgabe von $LINENO: Moin zusammen, ich bin zwar kein absoluter Frischling mehr, was Linux angeht, aber erst seit wenigen Minuten in diesem Forum. Seit einigen Tagen...
  3. Mozilla und BMZ kooperieren bei Spracherkennung und -ausgabe

    Mozilla und BMZ kooperieren bei Spracherkennung und -ausgabe: Mozilla hat mit dem deutschen Bundesministerium für wirtschaftliche Zusammenarbeit und Entwicklung (BMZ) eine Vereinbarung unterzeichnet. Es geht...
  4. Frage zu Bash Script mit Grep Ausgabe

    Frage zu Bash Script mit Grep Ausgabe: Hallo Zusammen, ich schreibe gerade in Bash ein Script, mit dem ich eine Ausgabe per Grep filtere, nun ist es so - dass ich allerdings zwei...
  5. find Ausgabe in "Anführungszeichen"

    find Ausgabe in "Anführungszeichen": Hallo Unixboard-User, ich bin neu hier im Forum und habe ein Problem: Ich habe ein recht großes Script welches auch wunderbar funktioniert....
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden