tôi đã sử dụng ping
trong một thiết bị đầu cuối gnome
window và tôi có thể xác nhận những quan sát của bạn. Tôi nghĩ đó là một vấn đề, rằng một quá trình có thể bị bỏ chạy mà không có nơi nào để giao tiếp. Tôi sẽ cố gắng giải thích những gì tôi nhận thấy (nhưng tôi không khẳng định rằng tôi hiểu tại sao, có thể cho phép các chương trình có GUI riêng hoạt động mà không cần nohup
sau khi thoát khỏi đánh đập
, khi bắt đầu trong cửa sổ đầu cuối).
Khi tôi lối ra
tôi đang thoát khỏi đánh đập
chạy trong cửa sổ đầu cuối và ping
tiếp tục chạy, nhưng không có nơi nào để viết.
Khi tôi giết chết
quá trình, tôi giết đánh đập
quá trình trong cửa sổ đầu cuối. tôi không tìm thấy một cách rõ ràng thiết bị đầu cuối gnome
quá trình để giết, bởi vì quá trình /usr/lib/gnome-terminal/gnome-terminal-server
chạy tất cả chúng. Tôi không chắc rằng đây là những gì bạn đang làm, nhưng đó là những gì tôi đoán.
Khi tôi đóng cửa sổ (bằng nút x), tôi thoát khỏi quy trình cửa sổ (do đó buộc các quy trình con của nó dừng bao gồm đánh đập
và ping
). Đây là một sự khác biệt rõ ràng so với hai trường hợp trước đó.
Khi tôi làm bài tập tương ứng với xterm
, sẽ có một quy trình riêng với tên 'xterm'.
Khi tôi lối ra
tôi đang thoát khỏi đánh đập
chạy trong cửa sổ đầu cuối và ping
tiếp tục chạy, nhưng không có nơi nào để viết.
Khi tôi giết chết
quá trình, tôi giết xterm
tiến trình của cửa sổ đầu cuối, (từ đó buộc các tiến trình con của nó dừng lại, bao gồm đánh đập
và ping
).
Khi tôi đóng cửa sổ (bằng nút x), tôi thoát khỏi quy trình cửa sổ (do đó buộc các quy trình con của nó dừng lại, bao gồm đánh đập
và ping
).
Bạn đã biết rồi, rằng bạn có thể sử dụng nohup
(cùng với &
) nếu bạn muốn tiến trình con tiếp tục sau khi đóng cửa sổ đầu cuối, nơi tiến trình con được bắt đầu.
Chỉnh sửa 1: Nhận xét cuối cùng:
Từ người đàn ông bash
Nếu một lệnh bị chấm dứt bởi toán tử điều khiển &, trình bao
thực thi lệnh ở chế độ nền trong một lớp con. Vỏ không
không đợi lệnh kết thúc và trạng thái trả về là 0.
Chúng tôi đã nhận thấy rằng không có tín hiệu dừng subshell và quá trình bắt đầu trong/từ subshell đó, khi đánh đập
được thoát, ít nhất là không khi chạy trong cửa sổ đầu cuối. Nhưng cửa sổ thiết bị đầu cuối cuộc gọi đã bị đóng. Tôi nghĩ rằng sau khi thoát bash, cửa sổ đầu cuối không còn biết về lớp con nữa và quá trình bắt đầu trong/từ lớp con đó, và do đó nó không thể dừng chúng.
Chỉnh sửa 2: Tôi đã yêu cầu trợ giúp tại Unix & Linux - Vui lòng đọc câu trả lời.