Sida 1 av 1
ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 13:23
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?
..om resultatet är 0, starta...
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 13:41
av RicchiH
varför måste du ha det på en rad kan du inte istället göra ett script av det hela ?
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 13:50
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.
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 13:51
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.
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
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 13:53
av andol
Alternativt så kör du med "lazy-evaluation"...
Kod: Markera allt
[ `ps -e | grep ksnapshot | wc -l` -eq 0 ] && emacs
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 13:55
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?
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 13:55
av Konservburk
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 13:57
av andol
Utanför ämnet: ...och Konservburk ska alltid vara värst :)
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 13:59
av mcNisse
Ytterligare en variant
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
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 14:01
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".
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 14:03
av dmz
Ah ok, jag tänkte ifall pgrep inte var standard osv.

Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 14:15
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:
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 14:35
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
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 14:36
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
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 15:16
av mcNisse
Du glömde helt enkelt att sätta variabeln...
==>
Re: ps -e | grep ksnapshot | wc -l och sedan? Starta ett prog
Postat: 29 jul 2009, 15:25
av RicchiH
Tack Mcnisse !
det funkade utmärkt