Cách tốt nhất để chạy lệnh ssh từ xa trong nền nhưng vẫn hiển thị là gì?


14

Tôi cần chạy các lệnh SSH từ xa với đầu ra hiển thị cục bộ. Nhưng nếu kết nối bị hỏng tôi muốn lệnh vẫn chạy.

Tôi không nói quá nhiều về việc đăng nhập và thực thi nhưng thực hiện lệnh ssh user @ remotehost '& lệnh vv'

Làm thế nào tôi có thể đảm bảo lệnh chạy ngay cả khi kết nối bị ngắt?

Câu trả lời:


26

Cách tốt nhất để làm điều này là sử dụng màn hình, giúp giữ cho phiên mở một cách liên tục ngay cả khi kết nối bị chết (và nếu bạn muốn bắt đầu sử dụng lại, bạn có thể thực hiện screen -rvà nó sẽ mở lại).

Tiền tố bất cứ lệnh nào bạn muốn chạy với screen(ví dụ. ssh -t user@host screen command) Sẽ thực hiện công việc.

Nếu bạn muốn nó chạy trong nền của vỏ, bạn cũng có thể nối thêm &toàn bộ.


Bạn có thể sẽ cần sử dụng ssh -t để phân bổ một thiết bị đầu cuối cho lệnh để chạy. Nếu không, lỗi là "Phải được kết nối với một thiết bị đầu cuối."
bonsaiviking

11

Bạn đang tìm kiếm để có một phiên liên tục mà bạn có thể tiếp tục, hoặc chỉ để ngăn chặn một ngắt kết nối khỏi giết chết?

Đối với cái trước, sử dụng screen, cho cái sau , nohup.


7

Như đã đề cập sớm, screencó thể làm tất cả các mẹo. Nhưng không chỉ những gì bạn cần. Tôi đã sử dụng màn hình trong nhiều năm và bây giờ sử dụng nó mỗi lần tôi đăng nhập vào hệ thống. Hãy thử cài đặt screenvà tạo ~/.screenrcvới cấu hình như vậy:

sessionname     vcflists
startup_message off
deflogin        off
vbell           off
msgminwait      0
msgwait         10
log             off
backtick        1 0 0 hostname
caption splitonly "%?%F%{= yk}%:%{= Kk}%? %n %t%="
hardstatus alwayslastline "%{= rY}  %1`  %{= kg} %0c %{= bY}  %-w%{= Yk} %n %t %{-}%+w %=%{g}%l "

Sau đó chạy screen -Rd vcf . Đó là lời mời thích nhất của màn hình. Bạn sẽ kết nối lại với phiên được tạo trước đó với tên vcf * (hoặc được cảnh báo nếu không rõ ràng) hoặc, nếu phiên chưa được mở, nó sẽ được tạo. CTRL+ Alà một khóa meta làm mọi thứ. CTRL+A C( CTRL+ A, sau đó C) tạo cửa sổ mới (màn hình) bên trong phiên. CTRL+A SPACEdi chuyển tập trung đến cửa sổ tiếp theo trong một vòng. CTRL+A Dtách phiên hiện tại giữ tất cả các cửa sổ chức năng giữa các kết nối. Nếu bạn đã khởi chạy một số tác vụ looooong, bạn có thể tách ra khỏi màn hình và gắn lại vào nó sau để xem điều gì sẽ xảy ra. Điều tương tự cũng xảy ra nếu phiên ssh của bạn bị mất - màn hình vẫn tồn tại với tất cả các cửa sổ đã mở và tất cả các tác vụ được khởi chạy.

Nếu bạn muốn đóng một số cửa sổ bên trong màn hình - chỉ exittừ vỏ trong đó. Nếu bạn muốn đóng tất cả các shell / tác vụ trong tất cả các cửa sổ và màn hình thoát - chỉ cần nhấn CTRL+A CTRL+\và nhấn "Y" khi được hỏi.

Đối với tất cả phần còn lại xem màn hình người đàn ông.



1

Tôi thường làm:

nohup mycommand &

tail -f nohup.out
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.