it-swarm-vi.tech

Chuyển một quy trình đã chạy sang Màn hình

Công việc văn phòng của tôi thường xuyên thấy tôi kết nối với một hộp Linux thông qua VNC.

Đôi khi tôi bắt đầu một công việc từ xa trên bàn điều khiển và sau đó nhận ra rằng nó chạy lâu hơn dự kiến. (Đáng lẽ phải bắt đầu cái đó dưới Màn hình ở nơi đầu tiên ...)

Tôi không muốn giữ máy trạm của mình chạy qua đêm chỉ để giữ phiên VNC mở; Tôi muốn chuyển công việc từ xa đã chạy đó thành phiên Screen (trên hộp từ xa), để tôi có thể tắt máy trạm (và kết nối lại vào sáng hôm sau).

Làm thế nào điều này có thể được thực hiện, nếu ở tất cả?

232
DevSolar

Hãy xem reptyr , chính xác là như vậy. Trang github có tất cả các thông tin.

reptyr - Một công cụ cho các chương trình "ptying".

reptyr là một tiện ích để lấy một chương trình đang chạy và gắn nó vào một thiết bị đầu cuối mới. Bắt đầu một quá trình dài qua ssh, nhưng phải rời đi và không muốn làm gián đoạn nó? Chỉ cần bắt đầu một màn hình, sử dụng reptyr để lấy nó, sau đó giết phiên ssh và về nhà.

SỬ DỤNG

reptyr PID

"Reptyr PID" sẽ lấy quy trình với id id và gắn nó vào thiết bị đầu cuối hiện tại của bạn.

Sau khi đính kèm, quá trình sẽ lấy đầu vào từ và ghi đầu ra vào thiết bị đầu cuối mới, bao gồm ^ C và ^ Z. (Thật không may, nếu bạn làm nền cho nó, bạn vẫn sẽ phải chạy "bg" hoặc "fg" trong thiết bị đầu cuối cũ. Điều này có thể không thể khắc phục một cách hợp lý mà không cần vá Shell của bạn.)

229
DaveJohnston

Bạn không thể làm điều này, một cách dễ dàng. Tôi khuyên bạn nên tạo thói quen bắt đầu màn hình như là điều đầu tiên bạn làm sau khi mở giao diện điều khiển.

Tuy nhiên, đối với vấn đề thực tế của bạn, có một điều khác bạn có thể thử: sau khi đã khởi động công việc của mình từ thiết bị đầu cuối, hãy làm nền bằng cách nhập ctrl-z và sau đó bg. Sau đó, tách công việc ra khỏi Shell cha mẹ; trong bash bạn làm disown -h %<jobid>. Sau đó, bạn có thể đóng thiết bị đầu cuối một cách an toàn và công việc sẽ tiếp tục chạy.

46
earl

Khi bạn đang sử dụng Linux, còn việc sử dụng retty trong quy trình màn hình mới ra mắt thì sao?

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw

HTH

chúc mừng

39
Rob Wells