& Nền tảng tốt ngoại trừ các chương trình quay trở lại yêu cầu tương tác giao diện điều khiển sau này (ví dụ: "cập nhật apt -y &" cuối cùng sẽ chuyển sang trạng thái STOP vì nó muốn nhắc người dùng một câu hỏi "thực sự thực sự bắt buộc?" .... khi không còn ai xem nữa).
Để cắm lỗ hổng đó và thông báo cho quá trình một thiết bị đầu cuối sẽ thực sự không bao giờ có sẵn cho nó, tôi nối thêm <& - vào một số lệnh của tôi, tách chúng ra khỏi thiết bị đầu cuối đang hoạt động nói với chúng rằng STDIN không còn có thể. Hãy chắc chắn / bin / bash là vỏ của bạn nếu bạn sử dụng mặc dù. Kịch bản sẽ tiến hành ghi nhật ký bất kỳ lỗi nào liên quan đến việc không có giả hành có sẵn để đưa ra bất kỳ dấu nhắc nào.
Ví dụ:
`./runme.sh &> runme.log <&- & disown`
là cách cuối cùng của tôi để tách rời khỏi phiên cuối cùng hiện tại. Cả STDOUT và STDERR đều được đăng nhập vào runme.log, sẽ không có vấn đề gì nếu bảng điều khiển hoặc trình bao của bạn chấm dứt sớm hơn hoặc nếu bạn đăng xuất / su vào một tài khoản khác (không có rác thiết bị đầu cuối từ runme) và nhờ vào ngay cả cha mẹ và con Mối quan hệ PID được loại bỏ.
CẬP NHẬT: ngay cả khi tôi gặp rắc rối với một semaphore liên kết nó với tên của cha mẹ ban đầu, vì vậy bây giờ tôi khuyên bạn nên thay thế:
at now <<< "(cmd1; cmd2; etc.) &> logfile.log"
Tất nhiên, xóa &> nếu bạn muốn nhận email đầu ra từ CRON hoặc chuyển hướng tất cả sang / dev / null thay vì một tệp.
screen
) có thể, trong số những thứ khác, được sử dụng để "bọc" các quy trình chạy dài hơn. Bạn có thể tách ra khỏi nó, quay trở lại shell, sau đó gắn lại và xem đầu ra từ quá trình đang chạy. Reattachment thậm chí có thể được thực hiện từ một thiết bị đầu cuối khác, SSH, vv Cũng có thể có các chương trình khác cho phép bạn thực hiện loại điều này.