Để bash script chạy trên thiết bị đầu cuối từ xa trong khi không đăng nhập?


14

Tôi có một tập lệnh bash mất vài giờ để chạy. Trong khi nó đang chạy, tôi muốn làm những việc khác, có thể liên quan đến việc đăng xuất hoặc ngắt kết nối internet (tập lệnh của tôi chạy thử nghiệm mạng trên các máy tính khác nhau).

Tôi hiểu rằng có một lệnh sẽ cho phép tôi chạy thử nghiệm từ thiết bị đầu cuối từ xa và đăng xuất thiết bị đầu cuối trong khi nó chạy. Có ai biết lệnh này là gì không?

Câu trả lời:


17

Lệnh bạn đang tìm kiếm là nohup.

Ngoài ra còn có screen, đó là khi bạn muốn để lại một cái gì đó đang chạy nhưng quay lại và gắn lại tương tác sau đó.

nohupsẽ đơn giản hơn nếu một lệnh mong đợi không có đầu vào của người dùng sau khi khởi chạy và screensẽ tốt hơn nếu bạn muốn có thể chạy chương trình một cách tương tác.


Tôi đã xem nohup ngay bây giờ và rõ ràng có vấn đề với đầu vào và đầu ra có thể khiến tập lệnh bị treo. Tôi cũng thấy một cái gì đó về màn hình, thứ gây ấn tượng với tôi như những gì tôi đã đọc trước đây. Bạn có biết làm thế nào để sử dụng một trong hai?
Ritwik Bose

1
nohup là khi tập lệnh mong đợi không có đầu vào của người dùng - nó lưu tất cả đầu ra vào một tệp. Màn hình là khi bạn muốn để một cái gì đó chạy nhưng quay lại và gắn lại tương tác sau đó. nohup đơn giản hơn nếu một lệnh mong đợi không có đầu vào của người dùng sau khi khởi chạy và màn hình sẽ tốt hơn nếu bạn muốn ngoan ngoãn chạy chương trình một cách tương tác.
Justin Smith

Ah tìm thấy nó. Đối với màn hình, đó là ctrl-A d để tách và -r + pid thành reattach.
Ritwik Bose

Câu trả lời tốt. Bạn nên thêm bình luận màn hình để bạn trả lời để nó nổi bật hơn.
DaveParillo

1

Tôi sử dụng nohupcho việc này. Trong trường hợp của tôi, tôi có một tập lệnh python có tên là action.py tôi đã chạy tập lệnh trên một máy chủ từ xa và nohup python action.py & sau đó tôi sẽ đóng thiết bị đầu cuối. Sau này khi nó chạy xong, bạn có thể thấy tất cả đầu ra từ quá trình nohup.outsẽ được tạo trong cùng thư mục với action.py. Nếu tập tin đã tồn tại, đầu ra tiếp theo sẽ được thêm vào nó.

Điều khó khăn duy nhất là không biết khi nào kịch bản đã chạy khóa học của nó, vì vậy trong trường hợp của tôi, tôi đã gửi nó cho tôi một email sau khi hoàn thành. Hy vọng điều này đã giúp ai đó!


0

Điều gì xảy ra nếu bạn quên thêm nohupLệnh vào đầu Lệnh của bạn?

Hãy để chúng tôi nói rằng bạn đã chạy Lệnh dài sau:

Sự khởi đầu của đầu ra của một lệnh dài

Điều này được gọi là ls -Ral /được cho là liệt kê tất cả các Tệp và tất cả các Thư mục, bao gồm cả các Ẩn, với Định dạng Dài, bắt đầu đệ quy từ Thư mục gốc. Nó có thể mất một thời gian.

Chỉ cần nhấn ctrl+ Z.

Dừng lệnh dài

Làm thế nào để bạn lấy lại nó?

Lệnh để đưa nó trở lại Tiền cảnh là fg.

Đưa lệnh trở lại

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.