Get process id by using it's name

Hi, folks.

first )
I have a question to get a process id by using it's name for all platforms.

second)
If I want to kill some processes by it's name, are there efficient way to do it for all platform?
For a solution for this problem, I am now using the following way :wink:

ex)

lines = $x{ ps -Au${ENV['USER']} }.split("\r?\n")

lines.each do |line|
  if line.match(process_name)
    pids << line.strip.split[0]
  end
end

count = 0
pids.each do |pid|
  %x{ kill #{pid} }
  
  count += 1 if $?.existstatus.zero?
end

print "total terminated processes : %d" % count

but, this way depends on only unix platforms.
moreover, I am not sure that all platform's output of "ps -Au" are same.

Hi,

···

2009/3/24 Jun Young Kim <jykim@altibase.com>:

Hi, folks.

first )
I have a question to get a process id by using it's name for all platforms.

second)
If I want to kill some processes by it's name, are there efficient way to do
it for all platform?
For a solution for this problem, I am now using the following way :wink:

ex)

lines = $x{ ps -Au${ENV['USER']} }.split("\r?\n")

lines.each do |line|
if line.match(process_name)
pids << line.strip.split[0]
end
end

count = 0
pids.each do |pid|
%x{ kill #{pid} }

   count \+= 1 if $?\.existstatus\.zero?

end

print "total terminated processes : %d" % count

but, this way depends on only unix platforms.
moreover, I am not sure that all platform's output of "ps -Au" are same.

Try sys-proctable gem.

http://rubyforge.org/docman/view.php/610/1566/sys_proctable.html

Regards,

Park Heesob

I know the sysproc library supports very good interface for this kinds of jobs.

but, sysproc doesn't support aix platforms.

$> rake test
(in /home/jykim/sys-proctable-0.8.0)
checking for rb_pid_t in ruby.h... yes
This platform not currently supported. Exiting...
.....

I need pure ruby lang based libraries or all platforms ported things :slight_smile:

gamsa haeyo~

2009. 03. 24, 오후 6:18, Heesob Park 작성:

···

Hi,

2009/3/24 Jun Young Kim <jykim@altibase.com>:

Hi, folks.

first )
I have a question to get a process id by using it's name for all platforms.

second)
If I want to kill some processes by it's name, are there efficient way to do
it for all platform?
For a solution for this problem, I am now using the following way :wink:

ex)

lines = $x{ ps -Au${ENV['USER']} }.split("\r?\n")

lines.each do |line|
       if line.match(process_name)
               pids << line.strip.split[0]
       end
end

count = 0
pids.each do |pid|
       %x{ kill #{pid} }

       count += 1 if $?.existstatus.zero?
end

print "total terminated processes : %d" % count

but, this way depends on only unix platforms.
moreover, I am not sure that all platform's output of "ps -Au" are same.

Try sys-proctable gem.

http://rubyforge.org/docman/view.php/610/1566/sys_proctable.html
Kill Process by it's name - Ruby - Ruby-Forum

Regards,

Park Heesob

***************************
    DSLab, CQ 김준영 드림
              (02-2082-1091)
***************************

Since you seem to have access to an aix machine, I'm pretty sure it'll be easy to add aix support. I doubt the calls needed are much different than the other unix-based machines.

···

On Mar 24, 2009, at 04:50, Jun Young Kim wrote:

I know the sysproc library supports very good interface for this kinds of jobs.

but, sysproc doesn't support aix platforms.

$> rake test
(in /home/jykim/sys-proctable-0.8.0)
checking for rb_pid_t in ruby.h... yes
This platform not currently supported. Exiting...
.....

I need pure ruby lang based libraries or all platforms ported things :slight_smile:

yes, I also believe that is the best option for me :slight_smile:

anyway, thanks for all.

2009. 03. 25, 오전 3:37, Eric Hodel 작성:

···

On Mar 24, 2009, at 04:50, Jun Young Kim wrote:

I know the sysproc library supports very good interface for this kinds of jobs.

but, sysproc doesn't support aix platforms.

$> rake test
(in /home/jykim/sys-proctable-0.8.0)
checking for rb_pid_t in ruby.h... yes
This platform not currently supported. Exiting...
.....

I need pure ruby lang based libraries or all platforms ported things :slight_smile:

Since you seem to have access to an aix machine, I'm pretty sure it'll be easy to add aix support. I doubt the calls needed are much different than the other unix-based machines.

***************************
    DSLab, CQ 김준영 드림
              (02-2082-1091)
***************************

Jun Young Kim wrote:

yes, I also believe that is the best option for me :slight_smile:

anyway, thanks for all.

2009. 03. 25, 오전 3:37, Eric Hodel 작성:

I know the sysproc library supports very good interface for this
kinds of jobs.

but, sysproc doesn't support aix platforms.

<snip>

I don't have access to an AIX machine, but this might get you started on
a port for sys-proctable:

http://cpansearch.perl.org/src/DURIST/Proc-ProcessTable-0.45/os/

There appear to be 2 variants for AIX, so I'm not sure which one Dan is
using, but perhaps they'll give you some ideas.

Regards,

Dan

···

On Mar 24, 2009, at 04:50, Jun Young Kim wrote: