• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

"[Erledigt] $(ps ax | grep "[l]ftp")" u suse 11.2 geht nicht

Hallo,

ich habe folgenden Quelltext, der unter Suse 10.2 ohne Probleme lief unt jetzt unter 11.2 nicht mehr.

Code:
#/bin/sh
if [ "$(ps ax | grep "[l]ftp")" ];
then
programmname=$(cat /home/$USER/bin/programmname)
backtitle=$(cat /home/$USER/bin/backtitle)
#############################################################################
#Eingabe Fenster mit dialog erzeugen
#############################################################################
dialog --clear --colors --title "Upload lauft bereits" --backtitle "$backtitle" --msgbox "Es werden bereits Bilder hochgeladen!\nBitte spater den Upload erneut starten!\n\nEnter zuruck zum Menu" 0 0
exit;
else
#lol
#dialog --clear --colors --title "Upload lauft bereits" --backtitle "$backtitle" --msgbox "Es werden bereits Bilder hochgeladen!\nBitte spater den Upload erneut starten!\n\nEnter zuruck zum Menu" 0 0
#exit;
#Auskommentieren
screen -S uploadfiles -d -m uploadfiles
dialog --clear --colors --title "Upload wurde gestartet" --backtitle "$backtitle" --msgbox "Der Upload der Bilder wurde gestartet.\n\nEnter zuruck zum Menu" 0 0
fi

Jetzt bei suse 11.2 geht er immer in die schleife rein und sagt, Der Upload wurde bereits gestartet.
wenn ich
Code:
ps ax | grep "[l]ftp"
auf der Konsole ausführe, bekomme ich den Prozess nicht angezeigt.
auch nur ps ax zeigt nichts mit lftp an.

Jemand eine Idee?

Gruß

sphings
 

framp

Moderator
Teammitglied
Es sieht mir eher so aus als wenn lftp nicht läuft. Bist Du sicher dass lftp läuft? Test mit
Code:
ps -C lftp
. Auch würde
Code:
grep lftp
ohne die [] reichen. Warum benutzt Du die [] ?
 
Das ist ja das Problem.
Er läuft nicht aber der Ablauf vom Script denkt, das er läuft.

Das Problem gab es vorher unter Suse 10.2 nicht.
Da hat es so funktioniert.
Jetzt läuft er immer durch die schleife, so als wenn lftp läuft.

Ausgabe von ps -C lftp
Code:
  PID TTY          TIME CMD
Also läuft es definitiv nicht.

___________________________________________
EDIT

Ich denke das Problem liegt hier:

wenn lftp nicht läuft:
Code:
ps x | grep [l]ftp
29699 pts/1    S+     0:00 grep lftp

wenn lftp läuft:
Code:
ps x | grep lftp
29746 pts/2    S+     0:00 lftp
29752 pts/1    S+     0:00 grep lftp

bei beiden steht natürlich lftp da und ich denke die schleife erkennt das.
Jemand ne idee wie ich das umgehen kann?
Bei 10.2 zeigt er mir den "grep lftp" nicht an.

_____________________
EDIT2

Die datei, in der die Schleife aufgerufen wurde hieß prufe-lftp-running.
Da war der fehler.
Das stand dann auch in den Prozessen.
Warum auch immer es so unter 10.2 funktioniert hat.
hab der Datei jetzt nen anderen Namen gegeben und es geht.
 

framp

Moderator
Teammitglied
sphings schrieb:
Das ist ja das Problem.
Er läuft nicht aber der Ablauf vom Script denkt, das er läuft.
Das ist mir entgangen :schockiert: Aber Du hast ja Deine Lösung alleine gefunden :roll: . Warum es unter SuSE 10.2 funktioniert hat liegt vermutlich auch an irgendeiner Änderung in Deinem Environment. Das Format von ps sowie grep haben sich mit Sicherheit nicht von 10.2 zu 11.2 geändert.
 
framp schrieb:
Es sieht mir eher so aus als wenn lftp nicht läuft. Bist Du sicher dass lftp läuft? Test mit
Code:
ps -C lftp
. Auch würde
Code:
grep lftp
ohne die [ ] reichen. Warum benutzt Du die [ ] ?
Die Zeichen [ ] werden genutzt, damit der grep selber nicht gefunden wird.
Grund:
Nur grep lftp
- Prozess läuft eventuell lftp
- ps -ef | grep lftp
=> Prozess "grep lftp" + eventuell lftp laufen => grep findet beide.
Mit grep [l]ftp:
- Prozess läuft eventuell lftp
- ps -ef | grep [l]ftp
=> Prozess "grep [l]ftp" + eventuell lftp laufen => grep interpretiert: ein Zeichen "l" + ftp direkt dahinter ist zu suchen => grep in der Prozessliste enthält aber "l" nocheinzeichen "]" ftp => kein Match, keine Ausgabe.
Der Unterschied kommt also, weil grep dieses interpretiert: [<erlaubt für dieses Zeichen>]

Haveaniceday
 

framp

Moderator
Teammitglied
@haveaniceday: Danke für die Erklärung. Wäre ich nie drauf gekommen dass damit der eigentlich grep in der Prozessliste ausgefiltert werden soll. Ich denke 'ps -C lftp' ist da einfacher und leichter verständlich.
 
Oben