disown
làm cho trình bao không gửi SIGHUP đến công việc bị từ chối của nó khi trình bao kết thúc và
loại bỏ công việc bị từ chối khỏi kiểm soát công việc của vỏ.
Là lần đầu tiên kết quả của lần thứ hai? Nói cách khác, nếu một quy trình bắt đầu từ trình bao được loại bỏ khỏi kiểm soát công việc của trình bao bằng bất kỳ cách nào, thì trình bao không gửi SIGHUP đến quy trình khi trình bao kết thúc?
disown -h
vẫn giữ một quá trình dưới sự kiểm soát công việc của một vỏ. Điều đó có nghĩa là disown -h
làm cho một quy trình vẫn nhận được SIGHUP được gửi từ trình bao, nhưng thiết lập hành động của SIGHUP theo quy trình để "bỏ qua"? Nghe có vẻ tương tự nohup
.
$ sleep 123 & disown -h
[1] 26103
$ jobs
[1]+ Running sleep 123 &
$ fg 1
sleep 123
$ ^Z
[1]+ Stopped sleep 125
$ bg 1
[1]+ sleep 123 &
$ exit
$ ps aux | grep sleep
t 26103 0.0 0.0 14584 824 ? S 15:19 0:00 sleep 123
Làm disown -h
và nohup
làm việc hiệu quả như nhau, nếu chúng ta bỏ qua sự khác biệt của họ trong việc sử dụng một thiết bị đầu cuối?
Cảm ơn.
nohup
, bạn cần chuyển hướng stdin / stdout / stderr ra khỏi TTY (nếu vỏ ban đầu của bạn được kết nối với một). (OTOH, tôi thực sự xem xét rằng thực hành tốt hơn là dựa vào một mặc định mã hóa cứng như thế./nohup.out
).