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

[gelöst] Bash-Script findet nicht-vorhandenen Prozess

Hallo,
ich habe auf meinem frischen System das Programm xrdp-0.4.01 installiert und es läuft auch soweit wunderbar. Allerdings startet es nicht automatisch - was für meine Zwecke besser wäre. Also habe ich ein Script geschrieben (bzw. ein vorhandenes modifiziert), welches das beim booten erledigen soll und natürlich das ganze auch manuell starten, stoppen und den Status abfragen kann. Es greift dabei auf das eigentliche xrdp-Script zurück, welches aber an einer Stelle liegt, wo es beim booten nicht ausgeführt wird.

Hier das Script:
Code:
#!/bin/bash

RETVAL=0

check_stat()
{
 echo Checking state...
 echo
 xrdp_status=`ps -e | grep -e xrdp`    # status of xrdp
 sesm_status=`ps -e | grep -e sesman`  # status of sesman
}

start_it()
{
 if [ "$xrdp_status" != "" ];then
   echo xrdp  : already running
 else
   cd /usr/local/xrdp
   ./xrdp_control.sh start
 fi
}

stop()
{
 if [ "$xrdp_status" != "" ];then
   cd /usr/local/xrdp
   ./xrdp_control.sh stop
 else
   echo xrdp  : not running
 fi
}

status()
{
 if [ "$xrdp_status" != "" ];then
   echo "xrdp $xrdp_status : running"
 else
   echo "xrdp  : not running"
 fi

 if [ "$sesm_status" != "" ];then
   echo "sesman: running"
 else
   echo "sesman: not running"
 fi
}

restart()
{
 cd /usr/local/xrdp
 ./xrdp_control.sh restart
}

xrdp_status=""
sesm_status=""

check_stat
case "$1" in
	start)
		start_it
		;;
	stop)
		stop
		;;
	restart)
		restart
		;;
	status)
		status
		;;
	*)
		echo "Usage: $0 {start|stop|restart|status}"
		RETVAL=1
esac
exit $RETVAL

Dieses Script macht mir jedoch einigen Ärger. Egal ob xrdp läuft oder nicht, es findet immer einen Prozess für xrdp! Dabei auch immer einen anderen (andere PID). Führe ich das Kommando 'ps -e | grep -e xrdp' per hand auf der Konsole aus, wird kein Prozess gefunden!
Kann mir ja jemand helfen?
 
Hallo!

Leider habe ich kein Linux System, um es mir genauer anzusehen, nur Solaris.
Es kann u. U. am Befehl

Code:
ps -ef | grep -e

liegen.

-e steht fuer Pattern.

Wenn du einmal von Hand das Programm startest, dir dann anschaust, wie der Prozess genau heisst, dann kannst du in deiner Abfrage den genauen Prozessnamen erfragen und musst es nicht ueber grep -e machen, dann wuerde auch ein ps -ef | grep -i kompletter_Prozessname reichen.
So hat es zumindest bei mir immer funktioniert!
 
Schonmal danke für den Tipp...
Leider hat es nichts geholfen. Der 'nicht existierende Prozess' wird immer noch gefunden :(
 
Schick mir einmal bitte die Ausgabe von ps -aux | grep -e Prozessname.

Und einmal die komplette Prozessausgabe von ps -aux

Vergleiche auch gleich einmal, worin der Unterschied liegt zwischen ps -aux und ps -ef ( bei Solaris verwendet man in der Regel ps -ef ).
 
Wenn man Glück hat findet der grep-Befehl sich selber, da die Ausgabe von ps das aufgerufene Kommando enthält und das enthält immer das Suchmuster. Ergo muss der grep-Befehl sich selbst finden, wenn er zum Zeitpunkt des ps-Kommando schon läuft. Wie werden wann Prozesse gestartet, die über eine Pipe verbunden sind?

Versuch den Glück mit man checkproc.
 
Hallo,

also 'ps aux | grep -e xrdp' gibt folgendes aus:
root 5841 0.0 0.1 3928 724 pts/3 R+ 13:46 0:00 grep -e xrdp

Und hier die Ausgabe von 'ps aux':
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2064 652 ? Ss 13:35 0:00 init [5]
root 2 0.0 0.0 0 0 ? S< 13:35 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN 13:35 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< 13:35 0:00 [watchdog/0]
root 5 0.0 0.0 0 0 ? S< 13:35 0:00 [events/0]
root 6 0.0 0.0 0 0 ? S< 13:35 0:00 [khelper]
root 7 0.0 0.0 0 0 ? S< 13:35 0:00 [kthread]
root 10 0.0 0.0 0 0 ? S< 13:35 0:00 [kblockd/0]
root 11 0.0 0.0 0 0 ? S< 13:35 0:00 [kacpid]
root 72 0.0 0.0 0 0 ? S< 13:35 0:00 [cqueue/0]
root 75 0.0 0.0 0 0 ? S< 13:35 0:00 [khubd]
root 77 0.0 0.0 0 0 ? S< 13:35 0:00 [kseriod]
root 137 0.0 0.0 0 0 ? S 13:35 0:00 [pdflush]
root 138 0.0 0.0 0 0 ? S 13:35 0:00 [pdflush]
root 139 0.0 0.0 0 0 ? S< 13:35 0:00 [kswapd0]
root 140 0.0 0.0 0 0 ? S< 13:35 0:00 [aio/0]
root 293 0.0 0.0 0 0 ? S< 13:35 0:00 [kpsmoused]
root 323 0.0 0.0 0 0 ? S< 13:35 0:00 [scsi_eh_0]
root 326 0.0 0.0 0 0 ? S< 13:35 0:00 [ata/0]
root 327 0.0 0.0 0 0 ? S< 13:35 0:00 [ata_aux]
root 338 0.0 0.0 0 0 ? S< 13:35 0:00 [ksnapd]
root 341 0.0 0.0 0 0 ? S< 13:35 0:00 [kjournald]
root 369 0.0 0.0 0 0 ? S< 13:35 0:00 [kauditd]
root 403 0.1 0.1 2260 648 ? S<s 13:35 0:00 /sbin/udevd -d
root 816 0.0 0.0 0 0 ? S< 13:35 0:00 [kgameportd]
root 3812 0.0 0.0 0 0 ? S< 13:36 0:00 [kmpathd/0]
root 3835 0.0 0.0 0 0 ? S< 13:36 0:00 [kjournald]
root 3841 0.0 0.0 0 0 ? S 13:36 0:00 [vmhgfs]
root 4230 0.0 0.0 2304 500 ? Ss 13:36 0:00 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient-eth0.leases -pf /var/run/dhclient-eth0.pid eth0
root 4289 0.0 0.1 12128 656 ? S<sl 13:36 0:00 auditd
root 4291 0.0 0.1 12048 648 ? S<sl 13:36 0:00 /sbin/audispd
root 4314 0.0 0.1 1720 568 ? Ss 13:36 0:00 syslogd -m 0
root 4317 0.0 0.0 1672 404 ? Ss 13:36 0:00 klogd -x
rpc 4349 0.0 0.1 1808 556 ? Ss 13:36 0:00 portmap
root 4378 0.0 0.1 1820 716 ? Ss 13:36 0:00 rpc.statd
root 4414 0.0 0.1 5432 580 ? Ss 13:36 0:00 rpc.idmapd
root 4486 0.0 0.0 0 0 ? S 13:36 0:00 [vmmemctl]
root 4534 0.2 0.1 2312 868 ? Ss 13:36 0:01 /usr/sbin/vmware-guestd --background /var/run/vmware-guestd.pid
dbus 4585 0.0 0.1 2880 1000 ? Ss 13:36 0:00 dbus-daemon --system
root 4596 0.0 0.1 2144 768 ? Ss 13:36 0:00 /usr/sbin/hcid
root 4607 0.0 0.0 1740 500 ? Ss 13:36 0:00 /usr/sbin/sdpd
root 4621 0.0 0.0 0 0 ? S< 13:36 0:00 [krfcommd]
root 4661 0.0 0.2 33208 1364 ? Ssl 13:36 0:00 pcscd
root 4680 0.0 0.0 1904 444 ? Ss 13:36 0:00 /usr/bin/hidd --server
root 4695 0.0 0.2 10824 1308 ? Ssl 13:36 0:00 automount
root 4715 0.0 0.1 1672 528 ? Ss 13:36 0:00 /usr/sbin/acpid
root 4729 0.0 0.1 6988 1016 ? Ss 13:36 0:00 /usr/sbin/sshd
root 4740 0.0 0.4 9864 2416 ? Ss 13:36 0:00 cupsd
root 4752 0.0 0.1 2716 840 ? Ss 13:36 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root 4773 0.0 0.3 8996 1668 ? Ss 13:36 0:00 sendmail: accepting connections
smmsp 4781 0.0 0.2 8052 1484 ? Ss 13:36 0:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
root 4793 0.0 0.0 1888 464 ? Ss 13:36 0:00 gpm -m /dev/input/mice -t exps2
root 4804 0.0 0.2 5260 1104 ? Ss 13:36 0:00 crond
xfs 4835 0.0 0.3 3924 1732 ? Ss 13:36 0:00 xfs -droppriv -daemon
root 4846 0.0 0.1 1664 592 ? SNs 13:36 0:00 anacron -s
root 4856 0.0 0.0 2244 428 ? Ss 13:36 0:00 /usr/sbin/atd
avahi 4892 0.0 0.2 2560 1352 ? Ss 13:36 0:00 avahi-daemon: running [localhost.local]
avahi 4893 0.0 0.0 2560 416 ? Ss 13:36 0:00 avahi-daemon: chroot helper
68 4904 0.4 0.7 5716 3808 ? Ss 13:36 0:01 hald
root 4905 0.0 0.2 3128 1072 ? S 13:36 0:00 hald-runner
68 4914 0.0 0.1 1992 812 ? S 13:36 0:00 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket
68 4918 0.0 0.1 1996 800 ? S 13:36 0:00 hald-addon-keyboard: listening on /dev/input/event0
root 4927 0.0 0.1 1952 748 ? S 13:36 0:00 hald-addon-storage: polling /dev/hdc
root 5000 0.0 0.0 1936 344 ? S 13:36 0:00 /usr/sbin/smartd -q never
root 5005 0.0 0.0 1652 448 tty1 Ss+ 13:36 0:00 /sbin/mingetty tty1
root 5008 0.0 0.0 1656 452 tty2 Ss+ 13:36 0:00 /sbin/mingetty tty2
root 5009 0.0 0.0 1656 448 tty3 Ss+ 13:36 0:00 /sbin/mingetty tty3
root 5010 0.0 0.0 1652 444 tty4 Ss+ 13:36 0:00 /sbin/mingetty tty4
root 5011 0.0 0.0 1652 448 tty5 Ss+ 13:36 0:00 /sbin/mingetty tty5
root 5040 0.0 0.0 1652 448 tty6 Ss+ 13:36 0:00 /sbin/mingetty tty6
root 5041 0.0 0.5 15568 2952 ? Ss 13:36 0:00 /usr/sbin/gdm-binary -nodaemon
root 5108 0.0 0.5 16300 2768 ? S 13:36 0:00 /usr/sbin/gdm-binary -nodaemon
root 5110 0.0 0.8 27380 4180 ? Sl 13:36 0:00 /usr/libexec/gdm-rh-security-token-helper
root 5113 5.5 2.2 18424 11744 tty7 Ss+ 13:36 0:25 /usr/bin/Xorg :0 -br -audit 0 -auth /var/gdm/:0.Xauth -nolisten tcp vt7
root 5125 0.0 1.9 24424 9864 ? SN 13:36 0:00 /usr/bin/python -tt /usr/sbin/yum-updatesd
root 5127 0.0 0.2 2548 1184 ? SN 13:36 0:00 /usr/libexec/gam_server
root 5179 0.0 1.4 23004 7224 ? Ss 13:38 0:00 /usr/bin/gnome-session
root 5213 0.0 0.1 6476 604 ? Ss 13:38 0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "/usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients"
root 5242 0.0 0.1 2744 972 ? Ss 13:38 0:00 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
root 5243 0.0 0.1 2772 612 ? S 13:38 0:00 /usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients
root 5249 0.1 0.6 7272 3564 ? S 13:38 0:00 /usr/libexec/gconfd-2 5
root 5252 0.0 0.1 2560 728 ? S 13:38 0:00 /usr/bin/gnome-keyring-daemon
root 5254 0.2 1.6 33972 8292 ? Sl 13:38 0:00 /usr/libexec/gnome-settings-daemon
root 5269 0.3 1.5 17056 8168 ? Ss 13:38 0:01 metacity --sm-client-id=default1
root 5273 0.2 2.3 47580 12328 ? Ss 13:38 0:00 gnome-panel --sm-client-id default2
root 5275 0.5 3.3 85544 17496 ? Ss 13:38 0:02 nautilus --no-default-window --sm-client-id default3
root 5279 0.0 0.5 38628 2908 ? Ssl 13:38 0:00 /usr/libexec/bonobo-activation-server --ac-activate --ior-output-fd=16
root 5281 0.0 0.7 11444 3644 ? S 13:38 0:00 /usr/libexec/gnome-vfs-daemon
root 5283 0.0 1.6 44852 8456 ? Ss 13:38 0:00 eggcups --sm-client-id default4
root 5286 0.0 0.9 22584 4900 ? Ss 13:38 0:00 gnome-volume-manager --sm-client-id default5
root 5294 0.0 0.9 14456 5024 ? Ss 13:38 0:00 bt-applet --sm-disable
root 5305 0.2 3.9 37348 20204 ? Ss 13:38 0:00 /usr/bin/python -tt /usr/bin/puplet
root 5318 0.2 2.3 47972 11876 ? S 13:38 0:01 /usr/libexec/wnck-applet --oaf-activate-iid=OAFIID:GNOME_Wncklet_Factory --oaf-ior-fd=19
root 5324 0.0 1.7 75660 8832 ? S 13:38 0:00 /usr/libexec/trashapplet --oaf-activate-iid=OAFIID:GNOME_Panel_TrashApplet_Factory --oaf-ior-fd=25
root 5326 0.0 1.9 45092 9920 ? Ss 13:38 0:00 nm-applet --sm-disable
root 5336 0.0 0.1 2464 872 ? S 13:38 0:00 /usr/libexec/mapping-daemon
root 5339 0.0 0.9 15264 4672 ? Ss 13:38 0:00 pam-panel-icon --sm-client-id default0
root 5341 0.0 1.2 44908 6256 ? Ss 13:38 0:00 gnome-power-manager
root 5342 0.0 0.5 18220 2632 ? Sl 13:38 0:00 ./escd --key_Inserted="/usr/bin/esc" --on_Signal="/usr/bin/esc"
root 5345 0.3 0.4 7796 2540 ? S 13:38 0:01 /usr/lib/vmware-tools/bin32/vmware-user >/dev/null 2>&1 -blockFd 11
root 5350 0.0 0.1 1844 612 ? S 13:38 0:00 /sbin/pam_timestamp_check -d root
root 5428 0.0 1.5 23100 7832 ? S 13:38 0:00 /usr/libexec/notification-area-applet --oaf-activate-iid=OAFIID:GNOME_NotificationAreaApplet_Factory --oaf-ior-fd=21
root 5430 0.0 2.0 29124 10448 ? S 13:38 0:00 /usr/libexec/clock-applet --oaf-activate-iid=OAFIID:GNOME_ClockApplet_Factory --oaf-ior-fd=27
root 5432 0.1 2.2 47732 11676 ? S 13:38 0:00 /usr/libexec/mixer_applet2 --oaf-activate-iid=OAFIID:GNOME_MixerApplet_Factory --oaf-ior-fd=35
root 5450 0.2 0.4 16764 2116 ? Ss 13:38 0:00 gnome-screensaver
root 5489 0.6 2.9 42448 15328 ? Sl 13:39 0:02 gnome-terminal
root 5492 0.0 0.1 2468 708 ? S 13:39 0:00 gnome-pty-helper
root 5493 0.0 0.2 4528 1488 pts/1 Ss+ 13:39 0:00 bash
root 5632 0.0 0.2 4524 1464 pts/2 Ss+ 13:41 0:00 bash
root 5706 0.2 0.2 4528 1464 pts/3 Ss 13:43 0:00 bash
root 5745 0.0 0.1 4240 932 pts/3 R+ 13:44 0:00 ps aux

EDIT:
checkproc kennt mein System leider nicht. Ist zwar ein RHEL (ja, ich weiß, dass das Forum hier primär für SuSE ist ;) ), aber ich dachte, vielleicht kann mir hier auch jemand helfen...
 
Also beim ersten grep findet der Prozess sich selber.
Wenn man ps -ef oder auch ps -aux durch eine Pipe schickt, dann kann es schon des oefteren vorkommen, dass der grep Prozess sich selber findet!

Kann man unterdruecken mit dem Befehl

Code:
ps -ef | grep-e [i]Prozessname[/i] | grep -v grep

dann sollte sich der Prozess nicht mehr selber finden und somit sollte es auch nicht so aussehen, als wuerde ein nicht-laufender Prozess doch laufen.
 
Schon mal mit apropos pid versucht?
Bei mir kommt da folgendes zum Vorschein:
Code:
getpid (2)           - gibt die Prozessidentifikation (PID) zurück
Pidofproc (8) [pidofproc] - Checks for a process by full path name
acpid (8)            - Advanced Configuration and Power Interface event daemon
boost::date_time::year_month_day_base (3) - Allow rapid creation of ymd triples of different types.
getpid (3p)          - get the process ID
getppid (2)          - get process identification
getppid (3p)         - get the parent process ID
git (1)              - the stupid content tracker
pid (n)              - Retrieve process identifiers
pidof (8)            - find the process ID of a running program.
pidofproc (8)        - Checks for a process by full path name
waitpid (2)          - wait for process to change state
waitpid (3p)         - wait for a child process to stop or terminate
Vielleicht gibt das schon einen Befehl der genau das kann was du suchst.
 
Hi,

also ich weiß einfach nicht was los ist....
Wenn die die Befehle in der Konsole ausführe laufen die wunderbar und alles ist so wie´s sein sollte. Sobald ich die aber einfach per copy&paste in mein Script übernehme, läuft es nicht mehr. D.h. es werden immer noch Prozesse 'gefunden', die es garnicht gibt!
Kommt mir fast vor, als würden sich die Variablen merken, dass das Programm schon einmal gefunden wurde und jetzt einfach nicht mehr wollen ;)
 
Wie sieht den die Prozessliste aus mit diesen ominoesen nicht-vorhandenen Prozessen.
Mache ein ps -ef und markiere uns einmal diese Prozesse!
 
Hallo,

das Problem ist gelöst. Ich bekomme hier fast einen Anfall und dabei habe ich mich die ganze Zeit selbst verarsch ;) Mein Script hatte im Namen auch ein 'xrdp' stehen. Daher wurde auf der Kommandozeile nichts ausgegeben, das Script hat sich aber natürlich selbst gefunden...

Ich hoffe ihr könnt einem Anfänger verzeien :eek:ps:

Gruß
lonny
 
Oben