Tôi đang tìm một phương pháp chung để khởi động và sau đó giết một quá trình R, bao gồm cả tất cả các nhánh hoặc các quy trình khác mà nó viện dẫn.đệ quy giết R quá trình với trẻ em trong linux
Ví dụ, một người dùng chạy một kịch bản như thế này:
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")
Sau khi người dùng bỏ phiên R, các quá trình con vẫn đang chạy:
[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
Để làm cho mọi việc tồi tệ hơn, họ id quá trình cha mẹ của chúng là 1 khiến việc xác định chúng trở nên khó khăn. Có một phương pháp để chạy một kịch bản R theo cách cho phép tôi đệ quy giết chết quá trình và các con của nó bất cứ lúc nào?
Chỉnh sửa: vì vậy, tôi không muốn phải theo cách thủ công để tìm kiếm các quy trình xóa & theo cách thủ công. Ngoài ra tôi không muốn giết tất cả các quy trình R, vì có thể có những người khác đang làm tốt. Tôi cần một phương pháp để giết một quá trình cụ thể và tất cả các con của nó.
Chỉ cần không giết PID 1 - nó sẽ * không * làm những gì bạn muốn. Vâng, thực sự nó sẽ ... loại ... – thkala
lol @thkala oh có nó sẽ làm nhiều hơn anh ta mặc cả cho :) và tại sao không chỉ đơn giản là loại bỏ nhị phân này? –