2012-03-01 9 views
36

Wrzucam linię żniwiarki do zadania rake, aby zabić kilka dodatkowych zadań rubinowych, ponieważ czasami w jakiś sposób się podrywają.Jak zdobyć PID bieżącego zadania rake?

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

Chciałbym dodać grep -v $PID_OF_CURRENT_TASK w które po prostu mieć pewność, że nie zabijają bieżącego zadania, które Działający również.

Jak uzyskać ten PID?

+0

Możesz być w stanie zastąpić cały rurociąg z dobrze przygotowanego wezwanie 'pkill' lub' killall' lub przynajmniej zastąpić pierwszą część gazociągu z 'pgrep'. Polecenia te są bezpieczniejsze i bardziej zrozumiałe dla czytelnika. – hagello

Odpowiedz

79

uzyskać aktualny PID w Ruby z Process.pid

+10

Istnieje również '$$' (który pochodzi z Perla, który pobrał go z '/ bin/sh'). –

+1

Zapomniałem o tym. Jest bardziej tajemniczy, ale prostszy. Jeśli "potrzebujesz" angielskiego "', to jest też '$ PID' lub coś w tym stylu. – Linuxios

+1

Z ciekawości, jaka jest różnica między 'pid',' ppid', 'uid',' euid', 'gid' i' egid'? –

Powiązane problemy