Làm thế nào tôi có thể giết một quá trình cha mẹ chỉ?


10

Tôi có các quy trình sau.

Phụ huynh
- Xử lý trẻ em
- Xử lý trẻ em
- Xử lý trẻ em

Làm thế nào tôi có thể giết quá trình cha mẹ chỉ? Tôi muốn các quá trình trẻ em không bị giết. Nếu tôi cố gắng giết quá trình cha mẹ, con cái sẽ bị SIGHUP và sẽ bị giết.


5
Là định nghĩa của một quá trình con mà nó được gắn với cha mẹ của nó?
Brad Patton

ừ, có lẽ là có. Nó gắn liền với cha mẹ của nó.
kcm1700

Câu trả lời:


8

Nói chung, khi một quá trình trở thành trẻ mồ côi (nghĩa là cha mẹ của nó chết), nó được thông qua bởi init.

Tình huống đặc biệt mà bạn mô tả có thể áp dụng cho một quy trình tương tác khi thiết bị đầu cuối kiểm soát của nó đóng (từ Wikipedia ):

Tín hiệu SIGHUP được gửi đến một quá trình khi thiết bị đầu cuối điều khiển của nó bị đóng. Ban đầu nó được thiết kế để thông báo cho quá trình giảm dòng nối tiếp. Trong các hệ thống hiện đại, tín hiệu này thường có nghĩa là điều khiển thiết bị đầu cuối giả hoặc ảo đã bị đóng.

Để ngăn chặn điều này, các tiến trình con nên chặn SIGHUP, vì vậy trong hầu hết các trường hợp, bạn cần sự hợp tác từ tiến trình cha.

Nếu quá trình cha mẹ là một vỏ ( bash, cshvà những thứ tương tự) và bạn muốn lệnh bạn chạy không chấm dứt khi bash kết thúc, bạn có thể thêm tiền tố bất kỳ lệnh với nohup(từ info coreutils "nohup invocation"):

'nohup' chạy LỆNH đã cho với các tín hiệu gác máy bị bỏ qua, để lệnh có thể tiếp tục chạy trong nền sau khi bạn đăng xuất.

Trong ví dụ này:

$ tty
/dev/ttys000
$ nohup find /dir -name file -exec rm {} \;

findsẽ không bị giết khi lớp vỏ kết thúc và đóng thiết bị đầu cuối điều khiển /dev/ttys000.

Nếu tập lệnh shell nên chặn SIGHUP, hãy sử dụng nội dung trap, như được giải thích ở đây cho bash.


1
Tôi đã mở quá trình mà không có nohup, có gợi ý nào không?
kcm1700

Theo tôi biết bạn không thể làm gì nhiều. Khi các quy trình chạy, bạn không thể thay đổi cách chúng phản ứng với tín hiệu.
jaume

1
Làm cách nào để đặt một quy trình đã chạy trong nohup? stackoverflow.com/questions/625409/
PeterVermont 10/11/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.