Khi nào tôi nên sử dụng bản quyền nohup và khi nào tôi nên sử dụng bản quyền & bản quyền?


16

Tôi không bao giờ biết khi nào là thời điểm tốt nhất để sử dụng nohup và & ở cuối lệnh.

Câu trả lời:


20

Nohup làm cho một chương trình bỏ qua tín hiệu HUP, cho phép nó chạy sau khi thiết bị đầu cuối hiện tại bị đóng / người dùng đăng xuất. Nohup không gửi chương trình đến nền.
& ở cuối lệnh có liên quan đến kiểm soát công việc shell, cho phép người dùng tiếp tục làm việc trong phiên shell hiện tại.
Thông thường nohup và & được kết hợp để khởi chạy chương trình chạy sau khi đăng xuất của người dùng và cho phép tiếp tục làm việc tại phiên shell hiện tại.


13

Thông thường tôi sử dụng &khi tôi muốn chạy trong nền một lệnh sẽ không mất nhiều thời gian để chạy hoặc một lệnh mà tôi sẽ không thực sự quan tâm nếu chương trình bị chấm dứt nếu tôi bất ngờ đăng xuất khỏi phiên.

xcalc &
rdesktop 1.2.3.4 & 
./this_only_takes_a_few_seconds_but_i_want_my_shell_back.py &

Khi làm việc qua VPN hoặc kết nối từ xa tinh ranh, tôi có xu hướng sử dụng nohupđể chạy bất cứ thứ gì sẽ mất một lúc để chạy. Ví dụ, khi chạy nhập dữ liệu lớn trên máy chủ từ xa, bạn có thể muốn sử dụng nohupđể đảm bảo rằng việc ngắt kết nối sẽ không khiến bạn bắt đầu lại khi kết nối lại.

nohup ./do_data_load.py mydatafile.txt &

Nó cũng được sử dụng khi nhà phát triển không thực hiện đúng dịch vụ, do đó bạn phải sử dụng nohupđể đảm bảo dịch vụ không bị giết khi bạn đăng xuất.

nohup sillyd &

Nếu bạn quên sử dụng nohupkhi chạy một cái gì đó như hai ví dụ trước, bạn có thể sử dụng bash hoặc zsh dựng sẵn disownđể có hiệu lực tương tự.

$ sillyd &
[1] 12345            # Whoops!
$ disown %1

Rất hiếm khi sử dụng nohupmà không có &, vì bạn không thể thực sự gắn kết lại với phiên nohup'd nếu bạn đã đăng xuất. Điều này khá nhiều loại bỏ tính hữu ích của nó cho các lệnh tương tác. Trong trường hợp bạn có một lệnh tương tác mà bạn muốn duy trì qua các phiên hoặc tránh ngắt kết nối phức tạp, bạn có thể sử dụng screen. Hỏa lực của một screenphiên vũ trang đầy đủ và hoạt động nằm ngoài phạm vi của bài này, vì vậy bạn nên kiểm tra nó chi tiết hơn .


Tôi thấy tmux dễ cấu hình và sử dụng hơn màn hình. Ngoài ra, BSD được cấp phép.
Kristaps

1
Bạn cũng có thể sử dụng byobuthêm một số tính năng hay cho màn hình. Nó có sẵn trong hầu hết các repos apt và trong các repos EPEL cho Red Hat.
James

0

nohup: đăng xuất người dùng hiện tại, quá trình sẽ không dừng lại

&: với biểu tượng này, sẽ không có đầu ra trong thiết bị đầu cuối hiện tại, quá trình chạy nền


4
vẫn có đầu ra, vì & không loại bỏ luồng đầu ra và lỗi lỗi. bạn phải sử dụng chuyển hướng luồng, như lệnh này (trong bash)> / dev / null 2> 1
Kristaps
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.