it-swarm-vi.tech

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?

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.

14
Richard Hoskins

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'
17
Martin

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'
6
neu242

Hoặc sau khi đăng nhập bằng sshname__, hãy bắt đầu screenNAME _ nếu bạn có thể muốn quay lại sau, để xem tiến trình hoặc đầu ra.

2
Arjan