ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
TicToc
Inlägg: 2266
Blev medlem: 27 dec 2006, 17:28
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av TicToc »

Jag försöker få till en enradslösning som startar ett program om det inte redan körs. Har hittat skript som gör det jag vill, men jag vill lösa det på en rad.
Jag har kommit en bit på väg men nu tar det stopp. Hur kan jag fortsätta?

Kod: Markera allt

ps -e | grep ksnapshot | wc -l
..om resultatet är 0, starta...
Användarvisningsbild
RicchiH
Inlägg: 343
Blev medlem: 26 sep 2007, 22:11
OS: Arch Linux
Ort: Jönköping
Kontakt:

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av RicchiH »

varför måste du ha det på en rad kan du inte istället göra ett script av det hela ?
TicToc
Inlägg: 2266
Blev medlem: 27 dec 2006, 17:28
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av TicToc »

RicchiH skrev:varför måste du ha det på en rad kan du inte istället göra ett script av det hela ?
Nej, det ska klistras in i en "konfigurationsruta" och jag vill gärna ha det fristående.
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av dmz »

RicchiH skrev:varför måste du ha det på en rad kan du inte istället göra ett script av det hela ?
Är inga problem att transformera ett script till... uh, ett enradsscript. :P
Problemet är väl läsbarheten.

Notera att jag är ganska värdelöst på sådant här, men;

Kod: Markera allt

if [ -z `pgrep mutt` ] ;
then mutt
else
echo "mutt is allready running"
fi
Enradsversion...
if [ -Z `pgrep mutt` ]; then mutt; else echo "mutt is allready running"; fi
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av andol »

Alternativt så kör du med "lazy-evaluation"...

Kod: Markera allt

[ `ps -e | grep ksnapshot | wc -l` -eq 0 ] && emacs
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av dmz »

andol skrev:Alternativt så kör du med "lazy-evaluation"...

Kod: Markera allt

[ `ps -e | grep ksnapshot | wc -l` -eq 0 ] && emacs
Finns det något skäl till att du använder så många pipes istället för pgrep?
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av Konservburk »

Kod: Markera allt

pgrep >&- ksnapshot || ksnapshot
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av andol »

Utanför ämnet: ...och Konservburk ska alltid vara värst :)
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av mcNisse »

Ytterligare en variant :)

Kod: Markera allt

...  | xargs -i test 0  -eq {} ] && echo 0
grep -c är väl bättre än att pipa till wc?

Kod: Markera allt

ps -e  | grep -c ksnapnhot  | xargs -i test 0 -eq {} && echo 0
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av andol »

dmz skrev:Finns det något skäl till att du använder så många pipes istället för pgrep?
Inte mer än att jag ville spinna vidare på TicTocs ursprungliga test, och bara visa det "nya".
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av dmz »

Ah ok, jag tänkte ifall pgrep inte var standard osv. :)
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av Konservburk »

mcNisse skrev:grep -c är väl bättre än att pipa till wc?

Kod: Markera allt

ps -e  | grep -c ksnapnhot  | xargs -i test 0 -eq {} && echo 0
Du kan anväda returstatusen från grep direkt istället för att pipe:a vidare till xargs test:

Kod: Markera allt

ps -e | grep -q ksnapnhot || ksnapshot
TicToc
Inlägg: 2266
Blev medlem: 27 dec 2006, 17:28
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av TicToc »

Tack alla inblandande, det gick snabbt och var/är lärorikt.
Jag använder mig av pgrep >&- ksnapshot || ksnapshot och det fungerar just så som jag vill.

I början av sommaren läste jag How To Ask Questions The Smart Way [1] av Eric Steven Raymond.
Efter att ha sett de oilka möjligheterna i era svar kom jag att tänka på [2]
Q: How can I use X to do Y?
A: If what you want is to do Y, you should ask that question without pre-supposing the use of a method that may not be appropriate. Questions of this form often indicate a person who is not merely ignorant about X, but confused about what problem Y they are solving and too fixated on the details of their particular situation. It is generally best to ignore such people until they define their problem better.
Tack för att ni lät mig hållas, så, då gör kör vi! ;)

Hej,
jag använder KDE 4.24 och upptäckte att i min distribution är inte ksnapshot längre kopplad till PrtSc som det var tidigare. När jag under Systeminställningar / Inmatningsåtgärder lägger till en ny global tangent för att starta ksnapshot upptäckte jag att jag får flera instanser av programmet efter upprepade tangenttryckningar.

Finns det något sätt att bara starta ksnapshot om det inte redan körs, och eventuellt aktivera det som redan körs, dvs att visa det framför alla andra fönster?
En enradslösning skulle uppskattas för att slippa vara beroende av ett script.

[1] http://catb.org/~esr/faqs/smart-questions.html
[2] http://catb.org/~esr/faqs/smart-questions.html#id307781
Användarvisningsbild
RicchiH
Inlägg: 343
Blev medlem: 26 sep 2007, 22:11
OS: Arch Linux
Ort: Jönköping
Kontakt:

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av RicchiH »

Jaha det gav ju inte mycket att försöka hjälpa till med script när ni andra är så förbannat mycket bättre på det
men mitt försök till ett script funkar ju inte riktit iaf
(håller på att plugga bash , men skulle behöva lite hjälp här)
skulle vilja sätta en variabel som heter IN2 från ps -e | grep "$prog" | wc -l
annars borde scriptet funka eller ?

Kod: Markera allt

#!/bin/bash
#detta skall kontrollera om programmet körs och endast starta upp programmet om det inte körs
echo "vad vill du starta"
read prog
ps -e | grep "$prog" | wc -l 
if [ "$IN2" =  "0" ];
        then
$prog
else
        echo " $prog redan startat"
fi
exit
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av mcNisse »

Du glömde helt enkelt att sätta variabeln...

Kod: Markera allt

ps -e | grep "$prog" | wc -l
==>

Kod: Markera allt

IN2=$(ps -e | grep "$prog" | wc -l)
Användarvisningsbild
RicchiH
Inlägg: 343
Blev medlem: 26 sep 2007, 22:11
OS: Arch Linux
Ort: Jönköping
Kontakt:

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog

Inlägg av RicchiH »

Tack Mcnisse !
det funkade utmärkt
Skriv svar

Återgå till "Terminalforum"