Làm thế nào tôi có thể giữ một quá trình sống sau khi kết thúc phiên putty?


41

Tôi đang sử dụng putty để tương tác với máy chủ Linux. Tôi đã bắt đầu một quá trình sử dụng putty. Quá trình đang chạy và sẽ mất 5-6 giờ. Tôi muốn quá trình đó tiếp tục chạy sau khi tôi đóng phiên putty. Làm thế nào tôi có thể giữ cho quá trình đó tồn tại sau khi kết thúc phiên putty? Tôi không muốn giữ máy tính BẬT mọi lúc. Có cách nào để làm điều này?

Câu trả lời:


32

Tôi sử dụng màn hình cho những thứ đó. Trên thực tế đôi khi tôi chỉ để nó khá lâu để tôi có thể quay lại với những gì tôi đang làm.


Hiện tại quy trình đang chạy, nó có hoạt động cho quy trình đó không? Tôi đang hỏi vì quy trình đang ở giữa và tôi không muốn khởi động lại ngay bây giờ

+1 để đề cập đến công cụ dòng lệnh yêu thích không thể tranh cãi của tôi. Đó là một viên ngọc trong những tình huống như thế này.
Noufal Ibrahim

@Noufal, hoàn toàn! @prakash, bạn cần chạy màn hình trước khi có thể bắt đầu bất kỳ quy trình nào
ziya

Nếu bạn muốn kết nối với một số máy, thậm chí có thể là một ý tưởng hay để chạy một số màn hình bên trong màn hình đầu tiên để bạn chỉ cần kết nối với một màn hình để có quyền truy cập vào tất cả các điều khiển từ xa đang chạy.

liên kết không hoạt động nữa
Malky.Kid 16/11/18

31
^Z
bg %1
disown -h %1

'-H' làm cho quá trình miễn dịch với SIGHUP khi phiên hoàn thành.


3
Lưu ý rằng không có cách nào để 'tái hiện' hoặc 'thông qua' quy trình - một khi bạn đã thực hiện điều này, bạn không bao giờ có thể đưa nó trở lại nền trước. Tuy nhiên, nếu quy trình là một công việc hàng loạt làm việc để tạo ra một số tệp, thì điều đó không thành vấn đề.

19

Sử dụng nohuplệnh. Chỉ cần thêm tiền tố vào lệnh của bạn và nó sẽ hiển thị chúng để chúng không dừng khi bạn đăng xuất / chấm dứt phiên shell của bạn. Đầu ra tiêu chuẩn theo mặc định sẽ nằm trong một tệp có tên nohup.out. Kiểm tra trang hướng dẫn nohup(1)để biết thêm thông tin.


Quá trình đang chạy, nó có hoạt động cho quá trình đó không? Tôi đang hỏi bởi vì quá trình đang ở giữa và tôi không muốn khởi động lại nó bây giờ?

Quá muộn ... ít nhất, cho các hoạt động bình thường. Sẽ không có gì đáng ngạc nhiên khi thấy rằng nếu bạn đính kèm trình gỡ lỗi vào quy trình, và sau đó điều chỉnh nó bằng một tập hợp các cuộc gọi hệ thống phù hợp, thì có lẽ bạn có thể đặt nó vào nền. Nhưng đó không phải là những gì có thể được khuyến nghị - ví dụ, tôi sẽ không bận tâm và tôi có ít nhất một số ý tưởng về những gì có thể liên quan. Bây giờ bạn có hai lựa chọn ... hoặc duy trì kết nối cho đến khi kết thúc hoặc dừng quá trình hiện tại và khởi động lại một lựa chọn mới bằng cách sử dụng nohup.
Jonathan Leffler

1
Nếu bạn đang sử dụng bash (và tôi nghĩ zsh), bạn có thể sử dụng giải pháp của Tom Anderson và disownquy trình để nó tiếp tục chạy ngay cả khi bạn ngắt kết nối.
Noufal Ibrahim

Yup - disown có vẻ là cách để đi cho một công việc đã chạy. Không thể thực hiện được vì lớp vỏ bắt đầu công việc có thể thao túng các thuộc tính cần thiết.
Jonathan Leffler

5

Bắt đầu quá trình với nohup "processname" &. Bạn cũng có thể tách nó bằng screenhoặc tmux.


3

Các giải pháp trên được mô tả khá tốt, tuy nhiên, không có giải pháp nào trong số chúng làm việc cho tôi UNTIL Tôi cũng đã chỉnh sửa cấu hình PuTTY thành:

Kích hoạt tính năng giữ TCP (tùy chọn SO_KEEPALIVE)

Tôi đã không thấy điều này ở bất cứ nơi nào khác, và chỉ tìm thấy nó bằng cách dùng thử và lỗi.


1

Ctrl + z Gửi quy trình hiện tại vào nền.

Ngoài ra, bạn có thể thêm & vào cuối lệnh để chạy trong nền


4
Thông thường, control-z đặt quá trình vào trạng thái hoạt hình treo; lệnh bg đặt nó vào nền. Tuy nhiên, điều đó cũng giữ cho quá trình được gắn vào thiết bị đầu cuối, trong khi nohup tách nó ra khỏi thiết bị đầu cuối và do đó cho phép putty ngắt kết nối và quá trình để tồn tại khi ngắt kết nối.
Jonathan Leffler

Tôi thấy rằng việc sử dụng '&' để gửi tới nền hoạt động với putty, nhưng khi tôi kết nối bằng cách sử dụng ssh trực tiếp từ vỏ, nếu tôi đóng liên kết, quá trình nền sẽ bị hủy. Bất cứ ý tưởng tại sao?
Zardoz89

0

Nếu bạn muốn chương trình được chứa trong tiến trình luôn luôn hoặc thường xuyên chạy trong nền, bạn có thể mã hóa nó để tách khỏi thiết bị đầu cuối điều khiển (làm cho hành vi đó có thể được điều khiển thông qua cờ tùy chọn) và chạy trong nền.

Tất nhiên, đó là một giải pháp lâu dài, không dành cho quy trình hiện đang chạy.


0

Bạn có thể sử dụng &sau khi liên kết.

Thí dụ:

[localhost ~ ]# wget http://www.link.com/download/download.zip &

Câu hỏi không phải là về một liên kết, bạn có nghĩa là thêm một &dấu hiệu sau dòng lệnh?
Danny

0

Cách giữ weblogic chạy sau khi đóng cửa sổ putty:

Các bước đơn giản: sau khi đăng nhập thông qua putty, hãy làm theo các bước dưới đây:

  1. Đi đến thư mục trên máy chủ nơi đặt startWebLogic.shlệnh.
  2. Gõ lệnh screenvà nhấn Enter(một màn hình mới sẽ mở ra).
  3. Trong màn hình mới gõ lệnh chạy của bạn ./startWebLogic.sh.
  4. Nhấn Ctrl+ asau đó nhấn d(không giữ Ctrl); bạn sẽ trở lại màn hình trước đó.
  5. Khi bạn muốn quay lại màn hình nhật ký máy chủ, hãy gõ lệnh screen -r.

0

nếu quá trình này là cho nodejs và đó có thể là ý định của bạn vì ban đầu bạn đã đăng bài này lên stackoverflow. Ban đầu tôi đã tự mình tìm kiếm câu hỏi này. Tôi tìm thấy pm2 và nó thật tuyệt vời. Các câu trả lời khác có thể giúp ích cho putty chung nhưng nếu đó là nút cụ thể thì đây là câu trả lời tốt nhất, vì có sẵn trong giám sát và thiết lập chỉ đơn giản là một

$ npm install pm2 -g
$ cd yourappdirectory

"PM2 là trình quản lý quy trình sản xuất cho các ứng dụng Node.js với bộ cân bằng tải tích hợp. Nó cho phép bạn giữ các ứng dụng tồn tại mãi mãi, để tải lại chúng mà không bị ngừng hoạt động và tạo điều kiện cho các tác vụ quản trị hệ thống phổ biến.

Bắt đầu một ứng dụng trong chế độ sản xuất cũng dễ như: "

$ pm2 start yourappname.js

"sử dụng lệnh lưu và sau đó đóng băng, bạn cho phép các quy trình tự khởi động lại khi khởi động lại"

$ pm2 save
$ pm2 freeze

để theo dõi nó

$ pm2 monit

và khởi động lại

$ pm2 restart yourappname

cũng cho thông tin đăng nhập trực tiếp

$ pm2 logs

Bây giờ tôi có thể dễ dàng chạy hai cửa sổ putty thay vì sử dụng cửa sổ trình duyệt digialocean của mình (mà tôi không thể cuộn lên); Để biết thêm thông tin, xem github chính

https://github.com/Unitech/pm2

ngạc nhiên.


Bạn có thể giải thích thêm một chút về pm2 gì và các lệnh bạn hiển thị làm gì không? Xin vui lòng không trả lời trong các ý kiến; chỉnh sửa  câu trả lời của bạn để làm cho nó rõ ràng và đầy đủ hơn.
G-Man nói 'Tái lập Monica'

Đã thêm một chút tài liệu cho cộng đồng. Tôi ước tôi đã tìm thấy pm2 năm trước.
giải pháp sasy
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.