Estoy buscando un método general para iniciar y luego matar a un proceso R, incluyendo posiblemente todas las bifurcaciones u otros procesos que invoca.Recursively matar proceso R con niños en linux
Por ejemplo, un usuario ejecuta un script como el siguiente:
library(multicore);
for(i in 1:3) parallel(foo <- "bar");
for(i in 1:3) system("sleep 300", wait=FALSE);
for(i in 1:3) system("sleep 300&");
q("no")
Después de que el usuario salga de la sesión I, los procesos hijos están aún en marcha:
[email protected]:~$ ps -ef | grep R
jeroen 4469 1 0 16:38 pts/1 00:00:00 /usr/lib/R/bin/exec/R
jeroen 4470 1 0 16:38 pts/1 00:00:00 /usr/lib/R/bin/exec/R
jeroen 4471 1 0 16:38 pts/1 00:00:00 /usr/lib/R/bin/exec/R
jeroen 4502 4195 0 16:39 pts/1 00:00:00 grep --color=auto R
[email protected]:~$ ps -ef | grep "sleep"
jeroen 4473 1 0 16:38 pts/1 00:00:00 sleep 300
jeroen 4475 1 0 16:38 pts/1 00:00:00 sleep 300
jeroen 4477 1 0 16:38 pts/1 00:00:00 sleep 300
jeroen 4479 1 0 16:38 pts/1 00:00:00 sleep 300
jeroen 4481 1 0 16:38 pts/1 00:00:00 sleep 300
jeroen 4483 1 0 16:38 pts/1 00:00:00 sleep 300
jeroen 4504 4195 0 16:39 pts/1 00:00:00 grep --color=auto sleep
Para empeorar las cosas, su su id. de proceso principal es 1, lo que dificulta su identificación. ¿Hay algún método para ejecutar un script R de una manera que me permita matar recursivamente el proceso y sus hijos en cualquier momento?
Editar: así que no quiero tener que entrar manualmente para buscar & matar procesos. Además, no quiero matar a todos los procesos R, ya que puede haber otros que lo estén haciendo bien. Necesito un método para matar un proceso específico y todos sus hijos.
Simplemente no mate PID 1 - * no * hará lo que quiera. Bueno, en realidad lo hará ... algo así como ... – thkala
lol @thkala oh sí, hará más de lo que esperaba :) y ¿por qué no simplemente eliminar este binario? –