Nói chung, cách đúng đắn để xử lý việc này là chuẩn bị cho nó trước thời hạn, sử dụng GNU screen
hoặc bash's nohup
hoặc disown
cơ chế. Nếu bạn đang sử dụng tcsh
, trình bao sẽ từ chối các công việc nền khi nó thoát ra bất thường.
Nếu bạn không sử dụng screen
nhưng đã quản lý để giữ cho quy trình của bạn chạy thông qua một trong các phương thức bị từ chối , bạn có thể giả mạo kết nối lại với quy trình với gdb
( nguồn ):
[...] Với một số hack bẩn, không thể mở lại quy trình 'stdout / stderr / stdin. [...]
Và sau đó sử dụng gdb để đính kèm vào quy trình, thực hiện một số cuộc gọi đóng (0)
gọi đóng (1)
gọi đóng (2)
gọi mở ("/ dev / pts / xx", ...)
gọi dup (0)
gọi dup (0)
tách ra
Bây giờ, bạn phải điều chỉnh quá trình này cho tình huống của bạn. Tôi nghi ngờ nó sẽ giúp ích nếu bạn không quản lý để từ chối quá trình. Nếu bạn đang sử dụng bash
, hãy xem bài đăng này về việc làm bash tự động từ chối các quá trình nền khi thoát (về cơ bản, hãy tắt huponexit với shopt ). Với một quá trình tiền cảnh, bạn cần phải sử dụng nohup .