Ok, I didn't know if Cap was trying to return me the PID of the ssh or something like that...
Alright, thanks everyone for your help! On Sep 18, 10:15 am, Rob Biedenharn <[email protected]> wrote: > Let me point out that your command is not quite deterministic. > ps -aef | grep blah | head -2 | tail -1 | awk '{print $2}' > > Assuming that there is a command named blah that is running, the ps > might return: > > UID PID PPID C STIME TTY TIME CMD > 99 123 1 0 0:03.56 ?? 0:04.83 blah > 99 234 726 0 0:01.99 ?? 0:02.36 bash > 99 235 234 0 0:25.36 ?? 0:47.66 awk {print $2} > 99 236 235 0 0:04.51 ?? 0:06.78 tail -1 > 99 237 236 0 0:01.99 ?? 0:02.36 head -2 > 99 238 237 0 0:25.36 ?? 0:47.66 grep blah > 99 239 238 0 0:04.51 ?? 0:06.78 ps -aef > > grep selects the lines that match blah > > 99 123 1 0 0:03.56 ?? 0:04.83 blah > 99 238 237 0 0:25.36 ?? 0:47.66 grep blah > > head -2 returns the first 2 of these lines (i.e., all of them in this > case) > tail -1 gives the last one: > > 99 238 237 0 0:25.36 ?? 0:47.66 grep blah > > and finally awk '{print $2}' gives > > 238 > > BUT, if the blah and grep blah commands had come in the other order in > the list from ps, then you'd get 123. Does that help you? > > Here's something to try (particularly if the pattern is fixed): > > ps -aef | grep -e '[b]lah' | awk '{print $2}' > > (or try it with just the ps|grep part and not the awk) > > The thing to note is that '[b]lah' does not match itself because it is > not a 'b' (the only character in the class [b]) followed by 'l', 'a', > and 'h'. It is a 'b' then a ']' and only THEN 'lah'. > > Your problem is not capistrano, but the command that it happens to be > running. > > (and you could just do it all in one command, too: > run "kill $(ps -aef | grep -e '[b]lah' | awk '{print $2}')" > but then you wouldn't have learned to fish.) > > -Rob > > On Sep 18, 2009, at 11:46 AM, pete wrote: > > > > > > > I used Capture, which seems a bit cleaner, I don't have the ability to > > use pkill. > > > However, I get the wrong PID returned?? > > > When I run my command on the command line manually I get 32553, as an > > example. > > > When Cap runs, it returns 32106, or something like that. > > > Why am I getting different PIDs? > > > On Sep 17, 7:45 pm, Donovan Bray <[email protected]> wrote: > >> Use capture instead of run > >> And parameterize the second command to use what was captured > > >> Or investigate pskill and killall that can do it in one step > > >> On Sep 17, 2009, at 11:28 AM, pete <[email protected]> wrote: > > >>> Let me clarify this a little better... > > >>> I would like to do something like this: > > >>> task :myTask, :roles => :myhost do > >>> run "ps- -aef | grep <searchstring> | head -2 | tail > >>> -1 | awk '{print $2}'" > >>> run "kill <PID FROM PREVIOUS run COMMAND>" > >>> end > > >>> On Sep 17, 11:57 am, pete <[email protected]> wrote: > >>>> Hi- > > >>>> I want to use Cap to kill a process, but I don't know the PID so > >>>> I am > >>>> using what I have below to get it: > > >>>> ps- -aef | grep <searchstring> | head -2 | tail -1 | awk '{print > >>>> $2}' > > >>>> Is it possible to use the results of the above command in a custom > >>>> task and kill off the PID that is returned? > > >>>> Thanks! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Capistrano" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.co.uk/group/capistrano?hl=en -~----------~----~----~----~------~----~------~--~---
