/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Lidt bash scripting
Fra : dennis


Dato : 16-03-05 17:55

Hej.

Kunne godt bruge rigtig meget hjælp til et lille bash script.
Det skal gøer følgende.

HVIS process X kører start så pragram Y ellers gør ingenting.

Nogen der kan hjælpe?






 
 
Mads Jensen (16-03-2005)
Kommentar
Fra : Mads Jensen


Dato : 16-03-05 18:15

dennis wrote:
> Hej.
>
> Kunne godt bruge rigtig meget hjælp til et lille bash script.
> Det skal gøer følgende.
>
> HVIS process X kører start så pragram Y ellers gør ingenting.

Hvis du med process mener et PID og ikke et programnavn, så tror jeg, at
noget ala dette:

#!/bin/bash
if `ps -p $1 | wc -l` == 2
   exec program
fi

Da jeg ikke er stiv i BASH er det sikkert hamrende forkert ;)

mvh.
--
Mads Jensen - remove z's in email

If the code and the comments disagree, then both
are probably wrong. -- Norm Schryer

dennis (16-03-2005)
Kommentar
Fra : dennis


Dato : 16-03-05 18:34

On Wed, 16 Mar 2005 18:14:39 +0100, Mads Jensen wrote:

> dennis wrote:
>> Hej.
>>
>> Kunne godt bruge rigtig meget hjælp til et lille bash script.
>> Det skal gøer følgende.
>>
>> HVIS process X kører start så pragram Y ellers gør ingenting.
>
> Hvis du med process mener et PID og ikke et programnavn, så tror jeg, at
> noget ala dette:
>
> #!/bin/bash
> if `ps -p $1 | wc -l` == 2
>    exec program
> fi
>
> Da jeg ikke er stiv i BASH er det sikkert hamrende forkert ;)
>
> mvh.


Hej.
Bare et program navn.
Altså:

ps -a | grep X = X
exec Y

Hvordan gøres det?

dennis (16-03-2005)
Kommentar
Fra : dennis


Dato : 16-03-05 18:35

On Wed, 16 Mar 2005 18:33:41 +0100, dennis wrote:

>
> Hej.
> Bare et program navn.
> Altså:
>
> ps -a | grep X = X
> exec Y
>
> Hvordan gøres det?


Altså hvis bare ps- a | grep X returner noget så start Y.
For hvis processen ikke findes med grep X er den jo ikke startet.

dennis (16-03-2005)
Kommentar
Fra : dennis


Dato : 16-03-05 18:39

On Wed, 16 Mar 2005 18:35:14 +0100, dennis wrote:


> Altså hvis bare ps- a | grep X returner noget så start Y.
> For hvis processen ikke findes med grep X er den jo ikke startet.

Jeg fik den :) Tal for hjælpen:


#!/bin/sh
if [ 'ps -a | grep X' ]
then
exec Y
fi



Kent Friis (16-03-2005)
Kommentar
Fra : Kent Friis


Dato : 16-03-05 20:21

Den Wed, 16 Mar 2005 18:38:42 +0100 skrev dennis:
> On Wed, 16 Mar 2005 18:35:14 +0100, dennis wrote:
>
>
>> Altså hvis bare ps- a | grep X returner noget så start Y.
>> For hvis processen ikke findes med grep X er den jo ikke startet.
>
> Jeg fik den :) Tal for hjælpen:
>
>
> #!/bin/sh
> if [ 'ps -a | grep X' ]
> then
> exec Y
> fi

Prøv den korte udgave:

ps -a | grep -q X && exec Y

Mvh
Kent
--
Hard work may pay off in the long run, but lazyness pays off right now.

Kasper Dupont (16-03-2005)
Kommentar
Fra : Kasper Dupont


Dato : 16-03-05 22:04

Kent Friis wrote:
>
> Den Wed, 16 Mar 2005 18:38:42 +0100 skrev dennis:
> >
> > #!/bin/sh
> > if [ 'ps -a | grep X' ]
> > then
> > exec Y
> > fi
>
> Prøv den korte udgave:
>
> ps -a | grep -q X && exec Y

Hvad med: pidof X && exec Y

--
Kasper Dupont

Michael Knudsen (16-03-2005)
Kommentar
Fra : Michael Knudsen


Dato : 16-03-05 22:08

On 2005-03-16, Kasper Dupont <kasperd@daimi.au.dk> wrote:
> Hvad med: pidof X && exec Y

   luggage$ pidof
   ksh: pidof: not found

   brage$ pidof
   bash: pidof: command not found

Mvh. Michael.
--
Rumour is information distilled so finely that it can filter through
anything.
-- (Terry Pratchett, Feet of Clay)

Kasper Dupont (16-03-2005)
Kommentar
Fra : Kasper Dupont


Dato : 16-03-05 22:12

Michael Knudsen wrote:
>
> On 2005-03-16, Kasper Dupont <kasperd@daimi.au.dk> wrote:
> > Hvad med: pidof X && exec Y
>
> luggage$ pidof
> ksh: pidof: not found
>
> brage$ pidof
> bash: pidof: command not found

På mit system ligger pidof i /sbin. Hvis ikke
/sbin er i PATH bliver man nødt til at skrive
den fulde sti.

--
Kasper Dupont

Michael Knudsen (17-03-2005)
Kommentar
Fra : Michael Knudsen


Dato : 17-03-05 10:51

On 2005-03-16, Kasper Dupont <kasperd@daimi.au.dk> wrote:
> På mit system ligger pidof i /sbin. Hvis ikke
> /sbin er i PATH bliver man nødt til at skrive
> den fulde sti.

pidof er en linuxisme.

--
Rumour is information distilled so finely that it can filter through
anything.
-- (Terry Pratchett, Feet of Clay)

Christoffer Olsen (16-03-2005)
Kommentar
Fra : Christoffer Olsen


Dato : 16-03-05 22:04

Kent Friis <nospam@nospam.invalid> writes:


> Prøv den korte udgave:
>
> ps -a | grep -q X && exec Y

Den der vil (og sikkert også tidligere :) også fange grep og Y vil
altid blive uudført.

ps | grep X | grep -qv grep && exec Y

--
Mvh
Christoffer Olsen

Kasper Dupont (16-03-2005)
Kommentar
Fra : Kasper Dupont


Dato : 16-03-05 22:08

Christoffer Olsen wrote:
>
> Kent Friis <nospam@nospam.invalid> writes:
>
> > Prøv den korte udgave:
> >
> > ps -a | grep -q X && exec Y
>
> Den der vil (og sikkert også tidligere :) også fange grep og Y vil
> altid blive uudført.
>
> ps | grep X | grep -qv grep && exec Y

Den kunne også håndteres med ps -C:
ps -C X && exec Y

--
Kasper Dupont

Kent Friis (16-03-2005)
Kommentar
Fra : Kent Friis


Dato : 16-03-05 22:26

Den 16 Mar 2005 22:04:04 +0100 skrev Christoffer Olsen:
> Kent Friis <nospam@nospam.invalid> writes:
>
>
>> Prøv den korte udgave:
>>
>> ps -a | grep -q X && exec Y
>
> Den der vil (og sikkert også tidligere :) også fange grep og Y vil
> altid blive uudført.
>
> ps | grep X | grep -qv grep && exec Y

I stedet for
grep true | grep -v grep
så prøv
grep [t]rue

Mvh
Kent
--
Hard work may pay off in the long run, but lazyness pays off right now.

Kasper Dupont (16-03-2005)
Kommentar
Fra : Kasper Dupont


Dato : 16-03-05 22:07

Mads Jensen wrote:
>
> Hvis du med process mener et PID og ikke et programnavn, så tror jeg, at
> noget ala dette:
>
> #!/bin/bash
> if `ps -p $1 | wc -l` == 2
> exec program
> fi

Hvis du vil checke om et pid eksisterer
kan du bruge kill. Noget i retning af:
kill -0 $1 && exec program

Hvis du også vil tage højde for, at det
kan være en anden bruger som kører
programmet bliver det lidt mere compliceret.

--
Kasper Dupont

Kasper G. Christense~ (16-03-2005)
Kommentar
Fra : Kasper G. Christense~


Dato : 16-03-05 18:32

> Kunne godt bruge rigtig meget hjælp til et lille bash script.

Betyder det: Er der ikke nogen der vil skrive det for mig, for jeg ved
ikke noget om bash-scripting? Hvis du selv har gjort et forsøg, ville
det være smart at poste det. Hvis du gerne vil vide noget om
bash-scripting så prøv at google, der er en del sider om det.

> Det skal gøer følgende.
>
> HVIS process X kører start så pragram Y ellers gør ingenting.

Er selv så ny i bash-scripting at jeg syntes det var sjovt at forsøge at
skrive det til dig. Desuden har jeg lige gjort noget lidt lignende. Her
følger et script, hvor du blot skal indsætte processens navn:

#/bin/bash
PROCNAME="Indsæt_navn_på_proces_X_her"

test=`ps -A | grep $PROCNAME\$`
if [ -n "$test" ]; then
   echo "found"
fi

Desuden skal du udskrifte linien 'echo "found"' med navnet på den
kommando/program du vil køre hvis processen findes.

Tak for øvelsen

Mvh. Kasper

dennis (16-03-2005)
Kommentar
Fra : dennis


Dato : 16-03-05 18:47

On Wed, 16 Mar 2005 18:32:05 +0100, Kasper G. Christensen wrote:

> #/bin/bash
> PROCNAME="Indsæt_navn_på_proces_X_her"
>
> test=`ps -A | grep $PROCNAME\$`
> if [ -n "$test" ]; then
>    echo "found"
> fi

Tak. se længere nede, jeg har forsøgt men min metode virker ikke
alligevel. :)

Din virker. Tak

Thomas Bjorn Anderse~ (17-03-2005)
Kommentar
Fra : Thomas Bjorn Anderse~


Dato : 17-03-05 01:00

Kasper Dupont <kasperd@daimi.au.dk> writes:

> På mit system ligger pidof i /sbin. Hvis ikke
> /sbin er i PATH bliver man nødt til at skrive
> den fulde sti.

På Solaris kan man bruge pgrep i stedet.

--
Thomas Bjorn Andersen
+++ATH

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste