[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Checken, ob ein (Perl-)Skript schon läuft



Hallo,

Am Sun, 22 Apr 2012, Andre Tann schrieb:
>Unter den Umständen - David, weswegen Umwege über /proc/$$/cmdline usw,
>wenn man es so auch rauskriegt? Scheint mir der einfachere Weg zu sein.

Rate mal, was pidof macht '($?)$ ' ist mein (gekürzter) shell-prompt:

xterm[1]: (0)$ dhweather
xterm[2]: (0)$ pidof dhweather
xterm[2]: (1)$ pidof ./dhweather
xterm[2]: (1)$ pidof /home/dh/bin/dhweather
xterm[2]: (1)$ pidof /usr/bin/perl
19144
xterm[2]: (0)$ strace -eopen pidof /usr/bin/perl
[..]
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib64/libc.so.6", O_RDONLY)      = 3
open(".", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
open("1/stat", O_RDONLY)                = 4
open("1/cmdline", O_RDONLY)             = 4
open("2/stat", O_RDONLY)                = 4
open("2/cmdline", O_RDONLY)             = 4
open("3/stat", O_RDONLY)                = 4
[..]
open("19144/stat", O_RDONLY)            = 4
open("19144/cmdline", O_RDONLY)         = 4
open("19238/stat", O_RDONLY)            = 4
open("19238/cmdline", O_RDONLY)         = 4
19144
xterm[2]: (0)$ 
[dhweather beenden]

Da du im script deine PID ($$) schon kennst kannst du dir das
abklappern von /proc/ und die open+close Orgie von /proc/*/cmdline
[und /proc/*/stat] sparen und gleich gezielt die richtigen "Dateien"
öffnen und auslesen ;)

Die PID selber weißt du ja schon, die findest du in der Variablen $$
bzw. $PID bzw. $PROCESS_ID mit "use English;".

HTH,
-dnh

-- 
XSLT wurde erfunden, um effizient Text in Kopfschmerzen umzuwandeln.
                                            -- Oliver Sch@d


Reply to: