Câu hỏi này đã đưa ra khá một nhiều ( thực sự rất nhiều ), nhưng tôi đang tìm kiếm câu trả lời cho được thường không đầy đủ. Câu hỏi chung là "Tại sao / không công việc của tôi bị giết khi tôi thoát / giết ssh?", Và đây là những gì tôi đã tìm thấy. Câu hỏi đầu tiên là: Thông tin chung như thế nào? Điều sau đây có vẻ đúng với Debian linux hiện đại, nhưng tôi thiếu một số bit; và những gì người khác cần biết?
Tất cả các tiến trình con, backgrounded hay không của một vỏ mở qua một kết nối ssh bị giết với SIGHUP khi kết nối ssh bị đóng chỉ khi các
huponexit
tùy chọn được thiết lập: chạyshopt huponexit
để xem nếu điều này là đúng.Nếu
huponexit
là đúng, thì bạn có thể sử dụngnohup
hoặcdisown
phân tách quá trình từ trình bao để nó không bị giết khi bạn thoát. Hoặc, chạy mọi thứ vớiscreen
.Nếu
huponexit
là sai, là mặc định trên ít nhất một số linux hiện nay, thì các công việc nền sẽ không bị giết khi đăng xuất bình thường.Nhưng ngay cả khi
huponexit
là sai, thì nếu kết nối ssh bị hủy hoặc bị rớt (khác với đăng xuất bình thường), thì các quy trình nền sẽ vẫn bị giết. Điều này có thể tránh được bằngdisown
hoặcnohup
như trong (2).Có một số khác biệt giữa (a) các quy trình có quy trình cha là thiết bị đầu cuối và (b) có các quy trình stdin, stdout hoặc stderr được kết nối với thiết bị đầu cuối . Tôi không biết điều gì xảy ra với các quá trình (a) chứ không phải (b) hoặc ngược lại.
Câu hỏi cuối cùng: Làm thế nào tôi có thể tránh hành vi (3)? Nói cách khác, theo mặc định, các quy trình nền của Debian chạy dọc theo sau khi đăng xuất nhưng không phải sau khi kết nối ssh bị hủy. Tôi muốn điều tương tự xảy ra với các quy trình bất kể kết nối được đóng bình thường hay bị tắt. Hoặc, đây là một ý tưởng tồi?
Chỉnh sửa: Một cách khác, quan trọng để giữ công việc bị giết, đó là hoạt động (?) Trong cả hai trường hợp là chạy chúng qua màn hình . Nhưng, câu hỏi liên quan nhiều hơn đến sự hiểu biết khi mọi thứ bị giết và khi họ không: đôi khi mọi người muốn các công việc bị giết khi đăng xuất, chẳng hạn.
Thêm chủ đề: - Làm rõ về tín hiệu (thở dài), công việc và thiết bị đầu cuối kiểm soát - /server/117152/do-background- Processes-get-a-weight-when-global-off - Tiếp tục SSH tác vụ / công việc nền khi đóng SSH - Công việc được đặt trong nền có tiếp tục chạy sau khi đóng phiên SSH không? - Ngăn chặn quá trình nền đang chạy bị dừng sau khi đóng máy khách SSH - Làm cách nào tôi có thể bắt đầu một quy trình qua SSH để nó tiếp tục chạy sau khi tôi ngắt kết nối? - Không thể duy trì công việc từ xa chạy trên OS X - Đóng kết nối SSH