如何获得当前rake任务的PID?

yll*_*ate 49 ruby shell rake

我正在将一条收割机线放入一个耙子任务,以杀死一些额外产生的红宝石任务,因为它们偶尔会爬行.

system "ps aux | grep 'namespace:taskname' | grep ruby | grep -v grep | awk '{print $2}' | xargs kill -9; echo 'Reaped old namespace:taskname processes.'"
Run Code Online (Sandbox Code Playgroud)

我想补充grep -v $PID_OF_CURRENT_TASK一下,只是为了确保我不会杀死正在运行的当前任务.

我如何获得PID?

Lin*_*ios 100

你在Ruby中得到了当前的PID Process.pid

  • 还有`$$`(来自Perl,它来自`/ bin/sh`). (12认同)
  • @JoshPinter:`pid`是正在运行的进程的ID,`ppid`是父进程的PID(例如,在bash中命令`ruby test.rb`,那将是bash),`gid`是组ID,或运行进程的UNIX组,`uid`是运行进程的UNIX用户ID(这确定了权限),`euid`和`egid`是*有效*用户和组ID (这与在UNIX上以root身份运行的东西有关,我承认我从未完全理解过). (8认同)
  • 我忘记了.它更神秘,但更简单.如果你"需要"英语"`,那么还有`$ PID`或类似的东西. (3认同)