Làm cách nào tôi có thể sử dụng ssh để chạy lệnh trên máy Unix từ xa và thoát trước khi lệnh hoàn thành?


17

Làm cách nào tôi có thể sử dụng ssh để chạy lệnh trên máy Unix và thoát trước khi lệnh hoàn thành?

Chẳng hạn, nếu tôi gõ

ssh localhost 'sleep 60 &'

ssh treo trên thiết bị đầu cuối của tôi cho đến khi giấc ngủ hoàn thành, mặc dù giấc ngủ được chạy trong nền.


Bạn có thể muốn &bên ngoài của dấu ngoặc kép.
Brad Gilbert

1
Không, điều đó chỉ đặt toàn bộ kit và kaboodle trong nền và tôi không thể nhập mật khẩu của mình.
Richard Hoskins

Câu trả lời:


19

SSH có một công tắc -f hoạt động chính xác giống như sử dụng nohup trên máy khách của bạn nhưng có thể ssh yêu cầu mật khẩu. Sử dụng nó như thế:

ssh localhost -f 'command'

Nhưng : SSH vẫn sẽ ở chế độ nền, vì vậy nếu bạn tắt máy khách trước khi lệnh trên máy chủ kết thúc, nó sẽ bị hủy bỏ. Nếu bạn muốn đóng kết nối ssh sau khi thực hiện lệnh, bạn có thể sử dụng màn hình ở phía máy chủ:

ssh localhost -f 'screen -d -m sleep 60'

Nếu tôi thực hiện lệnh chạy ssh remotemachine -n ​​'> withremoteredirects 2> & 1 </ dev / null &' và máy khách sẽ tắt lệnh?
Richard Hoskins

Afaik không. Tôi kết nối ssh bị mất, ssh daemon sẽ chấm dứt tất cả các thiết bị đầu cuối "bên trong" ssh. Ans kể từ khi thiết bị đầu cuối bắt đầu lệnh mà chúng sẽ bị chấm dứt, vì quá trình cha mẹ của chúng bị chấm dứt. Nhưng nó đáng để thử;)
Martin

Thế còn 'nohup' thay vì 'screen' ở phía máy chủ thì sao?
Richard Hoskins

@Brad Gilbert Không có gì? Tôi có thể nghĩ ra một vài điều, nhưng có một điểm chung không có, đó là 'màn hình' không khả dụng trên tất cả các máy POSIX.
Richard Hoskins


6

Sử dụng chuyển hướng nohup, stdout / stderr và chạy lệnh trong nền:

 nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null &

EDIT: Hoặc thậm chí tốt hơn, chỉ cần sử dụng tham số -sh của ssh:

ssh -f localhost 'sleep 60'

Bạn có thể kết hợp hai chuyển hướng với &>/dev/null.
Brad Gilbert

@BradGilbert Cú pháp đó không tương thích với POSIX; thật khó để tranh luận về việc hy sinh khả năng tương thích để cứu một vài nhân vật.
tripleee

2

Hoặc sau khi đăng nhập bằng cách sử dụng ssh, hãy bắt đầu screennếu bạn có thể muốn quay lại sau, để xem tiến trình hoặc đầu ra.


Bạn cũng có thể sử dụng "tmux" mà cá nhân tôi thấy dễ cấu hình hơn. Cả hai ứng dụng tương đối giống nhau với mỗi ứng dụng đều có ưu và nhược điểm.
mzuther 14/2/2016
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.