Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 13. Nov 2018 23:25

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: test auf " "
BeitragVerfasst: 27. Mär 2007 12:28 
Hallo Leute,

In einem erschaffenen init.s-start/stop-script habe ich die Prozessnummer des zu steuernden Programmes herausgeschnitten
und möchte diese auswerten.

Mit -gt, -lt, -eq geht das nicht, weil wenn das Programm nicht läuft diese Auswertung dann leer bleibt und derTest über
den Datentyp nichtnumerisch meckert.

Mit folgender Konstruktion geht das.
Code:
if [ $PRGID -a " " ]
Aber ...
... der Script-Name muss anders als der Programm-Name lauten!
... die Logik ist genau anders herum, als ich mir das vorstelle:
Meine Vorstellung: leere Variable $PRGID UND Leerstelle wahr, dann ..., aber es ist genau dann nicht :(
Code:
PRGID=`ps -ef|grep dnrd|grep -v grep|tr " " ":"|tr -s :|cut -f2 -d:`

   status)
        if [ $PRGID -a " " ]
          then
          echo "Programm-ID ist $PRGID"
          else
          echo "Programm wurde gestoppt"
        fi
        ;;

Seltsam oder erklärbar?
Benenne ich den Aufruf geauso wie das Programm, auch dnrd, dann
Code:
 ./dnrd status
./dnrd: line 33: [: too many arguments
Programm wurde gestoppt
=LÜGE

Viele Grüße
Joe


Nach oben
   
 Betreff des Beitrags: eine Lösung
BeitragVerfasst: 27. Mär 2007 19:18 
N'abend,

habe dafür folgende Lösung gefunden:

Vermute, es werden während der Scriptabarbeitung kurzfristig Prozesse geboren, die die selbe Bezeichnung (Programm-Name) beinhalten.

1. Ersetze Programm-Name dnrb durch vollständigen Pfad.
2. Damit keine oder Prozess-ID NNNN durch test -gt ohne Fehler ausgewertet werden kann, addiere den Wert mit "0":
Code:
let PRGID=$(ps ax|grep "/usr/local/sbin/dnrd"|grep -v grep|cut -d" " -f2)+0
dann geht auch
Code:
if [ $PRGID -gt 0 ]
          then
          echo "2. Programm-ID ist $PRGID"
          else
          echo "Programm wurde gestoppt"
fi
bye sumsi


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 28. Mär 2007 10:46 
Offline
prolinux-forum-admin
Benutzeravatar

Registriert: 14. Jan 2000 15:37
Beiträge: 699
Wohnort: Jülich
Warum so kompliziert?
  1. Wenn wir vom dnrd reden, dessen Docs unter http://dnrd.sourceforge.net/docs.php liegen, dann schreibt er seine eigene PID in die Datei /var/run/dnrd.pid. Also einfach auf Existenz der Datei testen - keine da, kein Daemon. Ist die Datei vorhanden, auslesen und nach der PID fahnden: ps -p `cat /var/run/dnrd.pid`. Kriegt man keinen Output, ist kein Daemon vorhanden.
  2. Sollte es ein anderer dnrd sein, halt ich trotzdem die Vorgehensweise für falsch. Merke Dir doch einfach beim Starten des Daemon seine PID von Hand in der /var/run/dnrd.pid - dafür gibt es entsprechende Tools, oder man verwendet einen Vorschlag wie von Sumsi. Damit ist das Problem auf den vorhergehenden Punkt zurückgeführt.
  3. Sumsi hat zwar Deine Pipeline verändert, aber... wie soll ich sagen... schön ist die immer noch nicht! :) Anstelle 1000er Prozesse für nix & wieder nix mal kurz zum awk greifen:
    Code:
    ps -ef | awk '$8 == "/usr/sbin/dnrd" {print $2}'
    awk läuft über alle Zeilen, die ihm das ps-Kommando liefert. Wenn die Bedingung "Achtes Feld soll gleich /usr/sbin/dnrd sein" greift, wird der Inhalt der zweiten Spalte (PID) ausgegeben - basta.
Viel Spass beim Weiterbasteln,
Jochen

_________________
Die grösste Lüge der EDV? "Mal eben..."


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 05. Apr 2007 21:53 
Offline

Registriert: 03. Mär 2006 23:16
Beiträge: 429
Code:
ps h -C dnrd | awk '{print $1}'

_________________
mfg komsomolze


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de