Câu trả lời:
Điều đó chỉ nohup
cho bạn biết những gì nó được thiết lập; nó đưa ra lỗi tiêu chuẩn mà bạn đã chuyển hướng đến nohup.err
. Bạn có thể tránh tin nhắn bằng cách chuyển hướng đầu vào tiêu chuẩn của nó:
nohup bash life.bash > nohup.out 2> nohup.err < /dev/null &
nohup
kiểm tra đầu vào tiêu chuẩn, đầu ra tiêu chuẩn và lỗi tiêu chuẩn để xem cái nào được kết nối với thiết bị đầu cuối; nếu nó tìm thấy bất kỳ cái nào được kết nối, nó sẽ xử lý chúng khi thích hợp (bỏ qua đầu vào, chuyển hướng đầu ra sang nohup.out
, chuyển hướng lỗi sang đầu ra tiêu chuẩn) và cho bạn biết những gì nó đã làm. Nếu nó không tìm thấy bất cứ thứ gì nó cần để ngắt kết nối, nó sẽ không tự xuất ra bất cứ thứ gì.
nohup
đang nói với bạn chính xác những gì nó đang làm, rằng nó bỏ qua đầu vào.
Nếu bạn muốn tránh tin nhắn này, hãy chuyển hướng stdin từ /dev/null
như thế này
nohup bash life.bash </dev/null >nohup.out 2>nohup.err &
man nohup
"Nếu đầu vào tiêu chuẩn là một thiết bị đầu cuối, hãy chuyển hướng nó từ một tệp không thể đọc được."
Vì thế,
nohup: ignoring input and appending output to 'nohup.out'
Nó đang làm những gì nó phải làm, bất kể các mục TÙY CHỌN , đó là lý do tại sao đầu vào bị loại bỏ.
CSONG Dường như bạn đang sử dụng chuyển hướng dư thừa. nohup đã tạo ra nohup.out cho bạn và, nếu tất cả đều hoạt động tốt, stderr cũng sẽ được chuyển hướng đến đó.
Chúc mừng!
nohup
gì cả;bash life.bash >life.out 2>life.err </dev/null & disown -h "$!"
thực hiện tương tự chỉ sử dụng chức năng được xây dựng trong chính vỏ.