[GELÖST]Bash-Script mit ps und awk funktioniert nicht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Simmel
Beiträge: 698
Registriert: 08.03.2004 14:43:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Düsseldorf
Kontaktdaten:

[GELÖST]Bash-Script mit ps und awk funktioniert nicht

Beitrag von Simmel » 02.12.2010 15:43:41

Hiho,

ich bräuchte mal Hilfe von einem Basher. Ich wollte ein kleines "Einzeiler"-Script schreiben,das checkt, ob ein bestimmter Prozeß läuft und falls nicht, den Dienst startet (um es dann in einen Cron-Job zu packen, der alle 5 Min. läuft).

Code: Alles auswählen

#!/bin/bash
PID="ps -ef | grep soffice | grep -v grep | awk '{print $2}' | sed '2,3d'"
if
        [ $PID -eq "" ]
then
        /usr/share/knowledgetree-ce/dmsctl.sh start soffice
fi
exit 0
Allerdings geht es ganz einfach nicht.Im CLI klappt die Befehlszeile wunderbar, aber nicht als Variable definiert.

Jmd. eine Idee?
Zuletzt geändert von Simmel am 02.12.2010 16:24:54, insgesamt 1-mal geändert.
you've got to know how far to go in going too far

perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

http://creativecommons.org/licenses/by-nc-sa/2.0/

Benutzeravatar
Snoopy
Beiträge: 4297
Registriert: 17.11.2003 18:26:56
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rh.- Pflz.

Re: Bash-Script mit ps und awk funktioniert nicht

Beitrag von Snoopy » 02.12.2010 15:51:08

Hi,

hast Du mal dem Skript die Pfade beigebracht? Siehe auch [1]

[1] http://debianforum.de/forum/viewtopic.p ... 20#p636995

Benutzeravatar
Simmel
Beiträge: 698
Registriert: 08.03.2004 14:43:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Düsseldorf
Kontaktdaten:

Re: Bash-Script mit ps und awk funktioniert nicht

Beitrag von Simmel » 02.12.2010 16:01:32

Snoopy hat geschrieben:Hi,

hast Du mal dem Skript die Pfade beigebracht? Siehe auch [1]

[1] http://debianforum.de/forum/viewtopic.p ... 20#p636995

Danke für deine Antwort.

Das Ding ist halt des auf der CLI als direkte Befehlskette funzt, aber wenn ich z.B. in der CLI

Code: Alles auswählen

PID="ps -ef | grep soffice | grep -v grep | awk '{print $2}' | sed '2,3d'"
$PID
eingebe, es genauso wenig funktioniert. Ich denke als nicht das es an den Pfaden liegt.

Siehe hier

Code: Alles auswählen

root@dms:~# PID="ps -ef | grep soffice | grep -v grep | awk '{print $2}' | sed '2,3d'"
root@dms:~# $PID
ERROR: Garbage option.
********* simple selection *********  ********* selection by list *********
-A all processes                      -C by command name
-N negate selection                   -G by real group ID (supports names)
-a all w/ tty except session leaders  -U by real user ID (supports names)
-d all except session leaders         -g by session OR by effective group name
-e all processes                      -p by process ID
T  all processes on this terminal     -s processes in the sessions given
a  all w/ tty, including other users  -t by tty
g  OBSOLETE -- DO NOT USE             -u by effective user ID (supports names)
r  only running processes             U  processes for specified users
x  processes w/o controlling ttys     t  by tty
*********** output format **********  *********** long options ***********
-o,o user-defined  -f full            --Group --User --pid --cols --ppid
-j,j job control   s  signal          --group --user --sid --rows --info
-O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
-l,l long          u  user-oriented   --sort --tty --forest --version
-F   extra full    X  registers       --heading --no-heading --context
                    ********* misc options *********
-V,V  show version      L  list format codes  f  ASCII art forest
-m,m,-L,-T,H  threads   S  children in sum    -y change -l format
-M,Z  security data     c  true command name  -c scheduling class
-w,w  wide output       n  numeric WCHAN,UID  -H process hierarchy
you've got to know how far to go in going too far

perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

http://creativecommons.org/licenses/by-nc-sa/2.0/

uname
Beiträge: 12421
Registriert: 03.06.2008 09:33:02

Re: Bash-Script mit ps und awk funktioniert nicht

Beitrag von uname » 02.12.2010 16:14:04

Code: Alles auswählen

PID="ps -ef | grep soffice | grep -v grep | awk '{print $2}' | sed '2,3d'"
Gibt es einen Grund diesen komischen Text in die Variable zu schreiben. Vielleicht suchst du sowas:

Code: Alles auswählen

PID=$(ps -ef | grep soffice | grep -v grep | awk '{print $2}' | sed '2,3d')
Und dann weiter unten:

Code: Alles auswählen

if [ -z "$PID" ] then   
Für das "if" siehe auch "man test".

Benutzeravatar
Simmel
Beiträge: 698
Registriert: 08.03.2004 14:43:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Düsseldorf
Kontaktdaten:

Re: Bash-Script mit ps und awk funktioniert nicht

Beitrag von Simmel » 02.12.2010 16:24:23

uname hat geschrieben:

Code: Alles auswählen

PID="ps -ef | grep soffice | grep -v grep | awk '{print $2}' | sed '2,3d'"
Gibt es einen Grund diesen komischen Text in die Variable zu schreiben. Vielleicht suchst du sowas:

Code: Alles auswählen

PID=$(ps -ef | grep soffice | grep -v grep | awk '{print $2}' | sed '2,3d')
Und dann weiter unten:

Code: Alles auswählen

if [ -z "$PID" ] then   
Für das "if" siehe auch "man test".
Warum gibts hier kein Smiley das sich den Kopf an die Wand haut.

Hast natürlich recht, ich will ja den Wert, nicht den Inhalt zurückbekommen (Zitat Homer "DO'H!).

OMFG, das ist mir peinlich grade :oops:

Danke vielmals :-)
you've got to know how far to go in going too far

perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

http://creativecommons.org/licenses/by-nc-sa/2.0/

Benutzeravatar
Meillo
Moderator
Beiträge: 9247
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Bash-Script mit ps und awk funktioniert nicht

Beitrag von Meillo » 02.12.2010 17:25:17

Simmel hat geschrieben: OMFG, das ist mir peinlich grade :oops:
Es sollte dir nicht peinlich sein. Jedem von uns passiert sowas ab und an. Wir wissen genau wie das ist ... normal eben. ;-)
Use ed once in a while!

Antworten