PID von Befehl raus bekommen

Hinweis: In dem Thema PID von Befehl raus bekommen gibt es 4 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Ich habe hier ein Script, das wird von Cron gestartet.


    Das nimmt ein Stream auf Festplatte auf nimmt



    Bash
    #!/bin/bash
    cvlc --sout-all  rtp://87.141.215.251@232.0.20.35:10000    --sout file/ts:go.ts   --alsa-audio-device default   --run-time=5  vlc://quit


    was sich leider ncht selbstständug beendet, weil vlc 3 noch ein Fehler hat, es läuft bis die Platte voll ist


    Kann man beim aufrufen des cvlc die PID raus bekommen, um das programm später zu killen?

    sowas wie

    pid=cvlc --sout-a....

    wäre cool.

    geht aber nicht.

    starte ich den cvlc über die Console lässt es sich nur durch String & c benden, oder durch kill


    Man kann nun über ein 2. Script und ps -e schauen was für eine pid der vlc player hat und ihn zu der festgelegten Zeit killen, aber es können auch mal 2 oder 3 vlc laufen, dann killt man den falschen.

    Man könnte dann wiederum mit zählen, wird der vlc gestartet sofort über ps -e oder ähnlich die pid holen, prüfen ob die schon läuft, wenn nein eintragen, falls ja neue suchen., aber das ist echt eine Fummelei.


    Gut wäre es wenn man gleich beim aufruf des vlc die pid raus bekommt, die trage ich dann in einer DB ein, läuft der Stream ab kille ich die pid.


    Frohe Weihnachten








    Hat jemand eine Idee?

    Für den Inhalt des Beitrages 286989 haftet ausdrücklich der jeweilige Autor: neptun

  • N'Abend,


    Innerhalb dieses Scriptes kannst Du mittels beispielsweise


    echo $$ > /tmp/$(basename $0).pid


    die aktuelle PID in das Verzeichnis /tmp und dort in eine Datei mit der Endung .pid leiten (wird immer wieder aktuell überschrieben).


    Herzlichst, Gisela

    Für den Inhalt des Beitrages 286990 haftet ausdrücklich der jeweilige Autor: giff

  • Hallo Gisela,

    vielen Dank für deinen Typ,

    so ganz schlau werde ich leider noch nicht



    echo $$ > /home/abine/puffer/$(basename $0)

    hier bekomme ich in mein Verzeichnis im mein Homeverzeichnis in der tat

    eine Date mit mein Scriptname mit einer Zahl, wohl die pid.

    Aber was für ein Programm ruf ich aus?


    wenn ich schreibe:

    echo $$ > ls /home/marcel/puffer/$(basename $0)

    bekomme ich die pid von ls?



    falls ja sollte ich bei:

    echo $$ >cvlc --sout-all rtp://87.141.215.251@232.0.20.35:10000 --sout file/ts:go.ts --alsa-audio-device default --run-time=5 vlc://quit /home/marcel/puffer/$(basename $0)

    die pid von vlc bekommen,

    aber in die gespeicherte datei steht:


    25690 --sout-all rtp://87.141.215.251@232.0........

    wobei 25690 nicht die pid ist, denn das sagt mir top, wo alle Task aufgelistet werden

    Für den Inhalt des Beitrages 287001 haftet ausdrücklich der jeweilige Autor: neptun

  • ~> pidof -h


    Usage:

    pidof [options] [program [...]]


    Options:

    -s, --single-shot return one PID only

    -c, --check-root omit processes with different root

    -x also find shells running the named scripts

    -o, --omit-pid <PID,...> omit processes with PID

    -S, --separator SEP use SEP as separator put between PIDs

    -h, --help display this help and exit

    -V, --version output version information and exit

  • Hallo, Neptun,


    Herzlichst, Gisela

    Für den Inhalt des Beitrages 287006 haftet ausdrücklich der jeweilige Autor: giff