'Tương tác với' có thể có nghĩa là một vài điều.
Lý do tại sao một chương trình, bắt đầu tại dòng lệnh, thoát khi thiết bị đầu cuối kết thúc, là do vỏ, khi nó thoát, gửi quá trình đó một tín hiệu HUP (xem tài liệu cho kill(1)
cho một số giới thiệu; cách này, là viết tắt của 'treo lên', và ban đầu chỉ ra rằng người dùng đã treo lên modem/điện thoại). Phản hồi mặc định cho một tín hiệu HUP là một tiến trình được chấm dứt - tức là, chương trình được gọi thoát ra.
Chi tiết hơi khó hiểu hơn, nhưng đây là trực giác chung.
Lệnh nohup
yêu cầu trình bao khởi động chương trình và thực hiện theo cách mà tín hiệu HUP này là bị bỏ qua. Đó là, chương trình sẽ tiếp tục sau khi thoát khỏi đầu cuối gọi. Bạn có thể vẫn tương tác với chương trình này bằng cách gửi tín hiệu (xem lại kill(1)
), nhưng đây là loại tương tác rất hạn chế và phụ thuộc vào chương trình của bạn được viết để thực hiện những điều hợp lý khi nhận được tín hiệu đó (tín hiệu USR1
) và USR2
là những thứ hữu ích để bẫy, nếu bạn thích điều đó). Ngoài ra, bạn có thể tương tác thông qua các đường ống có tên, hoặc các semaphores, hoặc các bit khác của giao tiếp liên ngành (IPC). Điều đó khá nhanh chóng.
Tôi nghi ngờ những gì bạn đang theo dõi, tuy nhiên, là có thể gắn lại một thiết bị đầu cuối cho quá trình này. Đó là một quá trình khá phức tạp hơn, và các ứng dụng như screen
làm những điều phức tạp phù hợp đằng sau hậu trường để thực hiện điều đó.
Điều nohup
là một loại daemon nhanh chóng và dơ bẩn. Các chức năng daemon(3)
hiện daemonisation 'đúng', làm các bit khác nhau của gọn gàng như mô tả trong câu trả lời của YePhIcK, để phá vỡ toàn diện liên kết với quá trình/thiết bị đầu cuối gọi nó. Bạn có thể tương tác với quy trình được sửa đổi đó bằng các công cụ IPC giống như trên, nhưng không đơn giản với một thiết bị đầu cuối.
Nguồn
2013-05-22 17:06:39
Tại sao bạn không thử mình trước? Bắt đầu một quá trình trong nền, đăng xuất và in lại và kiểm tra với 'ps' cho dù quá trình này vẫn còn xung quanh ' – patrix
Điều này đánh tôi như một câu hỏi thú vị và hữu ích, sau đây. Tôi nghi ngờ quá trình bắt đầu thông qua các thiết bị đầu cuối sẽ bị giết khi thiết bị đầu cuối bị giết. Thành thật mà nói, điều này nghe có vẻ giống như một ngã ba với tôi, tôi không biết, tôi chưa bao giờ có nhu cầu gọi một cái nĩa. – Dale
Quá trình này bị hủy nếu bạn đăng xuất hoặc mất phiên làm việc của bạn, trừ khi bạn sử dụng lệnh [nohup] (http://en.wikipedia.org/wiki/Nohup) :) nhưng không chắc chắn liệu bạn có thể lấy lại quy trình đó không phiên mới –