2012-08-13 45 views
23

Vâng, nó như thế này, tôi đã phải chạy một chương trình từ nhà của tôi bằng cách ssh ing vào máy chủ trong tổ chức của tôi. Tôi không muốn chương trình của mình bị chấm dứt khi phiên kết thúc (tôi không biết về screen).Làm thế nào để mang lại một quá trình nền mồ côi trở lại Foreground?

Điều tôi đã làm là bấm Ctrl+Z và sau đó nhập bg để nó thực hiện ở chế độ nền. Phiên bị chấm dứt. Bây giờ khi tôi đăng nhập từ máy tổ chức của tôi và gõ ps -u username, nó cho thấy chương trình vẫn chạy nhưng tôi không thể đưa nó lên nền trước.

Tôi đã thử fgjobs nhưng các lệnh này không cho tôi bất kỳ đầu ra nào.
Hãy giúp ai đó giúp tôi ..

Trả lời

17

Nếu bạn đã bắt đầu quá trình mà không sử dụng lệnh "màn hình" thì bạn không thể tiếp quản quá trình đó. Về cơ bản bạn không thể tiếp nhận một quá trình đã được bắt đầu trong một trình bao khác.

Khi phiên của bạn bị chấm dứt, tất cả quy trình bg sẽ chuyển sang trạng thái tách rời. Mặc dù bạn có thể thấy các chi tiết của quá trình như vậy, bạn không thể chuyển chúng vào vỏ sau khi đăng nhập sau

8

Nếu một quá trình đã bị mồ côi, bạn không thể "reparent" nó vào một trình bao khác và sử dụng fg, bg ,^Z,^C, v.v. để kiểm soát nó.

Có vẻ như bạn đang yêu cầu ngầm cách kiểm soát một quy trình mồ côi. Vì bạn có thể xem quy trình bằng cách sử dụng lệnh ps, bạn có pid của nó. Bạn có thể sử dụng pid này làm đối số cho lệnh giết, lệnh này sẽ cho phép bạn dừng, tiếp tục hoặc chấm dứt quá trình. Bạn không thể đợi quá trình kết thúc, nhưng bạn có thể thăm dò ý kiến ​​để xem liệu nó có tồn tại hay không bằng cách sử dụng lệnh "kill -0 <pid>".

4

https://serverfault.com/questions/55880/moving-an-already-running-process-to-screen

Cung cấp một cách nhìn khác về vấn đề này, Câu trả lời đầu cho thấy sử dụng Reptyr.

+1

Câu trả lời ngắn từ bài đăng khác: Có thể. Cài đặt 'reptyr', sau đó chạy' reptyr [PID] '- nhưng điều này có thể không hoạt động nếu một quá trình (ví dụ, một bash-script) bắt đầu một tiến trình (phụ) khác. – BurninLeo

Các vấn đề liên quan