nohup so với màn hình


39

Trước đây, tôi đã từng nohupđiều hành các công việc nền lớn, nhưng tôi nhận thấy rằng rất nhiều người sử dụng screentrong bối cảnh này. Có screencung cấp một số loại lợi thế chức năng mà tôi không biết, hoặc nó chỉ là một vấn đề ưu tiên?

Câu trả lời:


25

Cả hai đều có kìm và nhược điểm riêng:

không

  1. nohup là tốt để sử dụng để chạy các quy trình trong nền khi các quy trình không cần bất kỳ đầu vào của người dùng, như máy chủ web hoặc bất kỳ máy chủ nào khác xử lý như vậy.
  2. nohup không tạo nhật ký trong thư mục thực hiện quy trình. Tên tệp nhật ký là nohup.out.
  3. Nó tránh quá trình bị giết do nhầm lẫn Ctrl+ Choặc tổ hợp phím tương tự. Chỉ là một biện pháp bảo vệ.
  4. Nó thường được cài đặt theo mặc định với thiết lập cơ bản. Không cần phải cài đặt riêng như màn hình.
  5. Chức năng của nó rất cụ thể để chạy một công việc ở chế độ nền và kết xuất. Bộ nhớ thấp chuyên sâu.

màn:

  1. Phải cài đặt riêng. Bạn không thể đến trung tâm dữ liệu hoặc đăng nhập vào bất kỳ hộp nào và có màn hình mong đợi.
  2. Tốt để quản lý nhiều thiết bị đầu cuối trên các đối tượng riêng biệt và đặt tên cho chúng.
  3. Nó nhiều hơn trình quản lý thiết bị đầu cuối và không phải là một lệnh để chạy một quá trình trong thời gian vô hạn như nohup.
  4. Nó phù hợp hơn nếu quá trình cần đầu vào của người dùng. Giống như cài đặt tập lệnh, có / không có lời nhắc.
  5. Với hàng tấn các tính năng, đến bộ nhớ của nó. Nhưng đồng ý, một số tính năng thực sự tuyệt vời.

@rahmu, tôi sẽ không bao giờ đoán pid nếu muốn giết nó. Hãy chắc chắn trước khi giết một ai đó / một cái gì đó;).

Cách tốt nhất trong cả hai trường hợp cho màn hình và nohup là : ps -eaf | grep "nohup" | grep "your proc name/keyword".

Sử dụng màn hình và kiểm tra những gì đang chạy trên nó.

Để kết luận, chúng là hai thứ khác nhau được tạo ra với các chương trình nghị sự khác nhau, vì vậy việc so sánh là khó khăn.


20

Màn hình có rất nhiều tính năng. Nó không chỉ "daemonize" một quy trình, nó còn hơn cả một trình quản lý cửa sổ cho các thiết bị đầu cuối.

Nó có thể được sử dụng nếu quá trình cần đầu vào tại một số điểm, bạn có thể đi và kiểm tra đầu ra của quy trình, kết nối lại với thiết bị đầu cuối của nó, ...

Vì vậy, không chỉ là vấn đề ưu tiên, chúng không giống nhau chút nào.


4
Bạn có thể kiểm tra đầu ra nohup [...] > fileName.log 2>&1là tốt. Thêm vào đó có nghĩa là đầu ra không bị mất.
Sardathrion - Phục hồi Monica

1
Tôi thích mô tả của màn hình: "trình quản lý cửa sổ cho thiết bị đầu cuối"!
rickumali

7

screen cho phép bạn:

  1. Quay trở lại màn hình đang chạy thực tế, gửi tín hiệu, xem tốc độ của nó, xem có thông báo lỗi không, v.v.
  2. tên quy trình với một tiêu đề có ý nghĩa. nếu bạn muốn giết một tiến trình, bạn không cần phải đoán công việc về id tiến trình của nó.

-2
  1. tiến trình xử lý cũng có thể được kiểm tra bằng nohupcách gỡ lỗi các trường cơ sở dữ liệu.
  2. ps ax | grep nohup sẽ cho bạn thấy id của quá trình và bạn có thể giết nó.
  3. nohupnhanh hơn. Lý do đơn giản là nó phụ thuộc vào kết nối internet giữa PC của bạn và máy chủ. Bất cứ khi nào internet chậm, quá trình cũng chậm.

2
Tôi không hiểu điểm 3. Bạn có thể giải thích?
mattdm

1
điểm 2 không đúng
jiggunjer

# 2 sẽ chỉ hiển thị quy trình để giết nếu chỉ có một quy trình nohup đang chạy. Khác, nó sẽ hiển thị nhiều. Trong cả hai trường hợp, điểm 2 không hoàn toàn không chính xác.
Anil_M
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.