Nohup trên ssh sẽ không trở lại


11

Tôi đang cố gắng làm

[me@myPc]$ ssh me@server "nohup myBashScript.sh &"

Mục tiêu của tôi là khởi chạy tiến trình trên máy chủ, và sau đó quay lại ngay lập tức.

Nó không hoạt động: Công việc được bắt đầu trên máy chủ, nhưng tôi vẫn nhận được đầu ra trên myPc và chờ đợi hoàn thành trước khi yêu cầu tôi thực hiện một lệnh khác.

Tại sao ? Nó không phải là để! Có cách nào để tránh điều đó không?

  • myPc là RHEL6.2
  • máy chủ là ubuntu 10.04
  • cả hai chạy openssh

Câu trả lời:


12

Miễn là đầu vào hoặc đầu ra vẫn mở, ssh sẽ giữ kết nối mở. Để giải quyết điều này, đảm bảo đầu vào và đầu ra không được mở.

Ví dụ: sử dụng ssh -nvà chuyển hướng đầu ra của bạn:

ssh -n me@example.com "nohup myscript.sh >/dev/null 2>&1 &"

Điều gì sẽ xảy ra nếu tôi vẫn muốn myscript.shcung cấp cho tôi đầu ra, nhưng phiên ssh vẫn kết thúc sau khi tập lệnh được hoàn thành? Trong trường hợp của tôi, chính kịch bản bắt đầu quá trình nohup, sau đó trả về. Tôi đã có ấn tượng ssh -Tsẽ giúp tôi làm điều đó.
Gauthier

@Gauthier Sau đó, chỉ cần chạy tập lệnh mà không có nohup.
Michael Hampton

Tôi làm. Kịch bản bắt đầu các lệnh khác với nohup và &, sau đó chấm dứt. Nhưng ssh không trở lại. Các lệnh được gọi trong stdout chuyển hướng kịch bản thành tập tin. Ồ, nhưng không phải stderr và stdin, có thể là tại sao?
Gauthier

Có bạn có nó! Đầu vào và đầu ra phải được chuyển hướng.
Michael Hampton

Điều tôi không hiểu là nếu tôi thực sự đăng nhập và nhận được một tty, hãy bắt đầu tập lệnh bắt đầu các lệnh nohup &, sau đó tôi được phép đăng xuất khỏi phiên ssh. Nó không phàn nàn rằng có đầu vào và đầu ra mở. Không phải đó là những gì ssh -tđược cho là bắt chước sao?
Gauthier
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.