Biểu tượng ký hiệu (&) có nghĩa gì với 'nohup`?


11

Tôi đã thấy hàng tấn ví dụ trong đó một &đoạn kết thúc chuỗi lệnh, nhưng dường như tôi không thể tìm thấy lời giải thích về những gì nó làm. Đó không phải là ngay cả trong nohupcủa mantrang. Đây có phải là một điều vỏ?

Dù sử dụng &hay không, tôi thấy rằng bất kỳ quá trình nào chạy với nohupdường như thể hiện khả năng miễn dịch với bất kỳ tín hiệu gác máy nào.


1
"Tôi thấy rằng bất kỳ quá trình nào chạy với nohup dường như thể hiện khả năng miễn dịch với bất kỳ tín hiệu gác máy nào." Đó là những gì nohup dành cho.
Phường Samuel Edwin

Ok, vì vậy hãy để tôi làm rõ: các ví dụ duy nhất tôi thấy sử dụng &, vì vậy tôi không chắc liệu đó có phải &là một loại sửa đổi hoặc tranh luận nào đó có nohuphành vi khác đi không.
Chad Harrison

1
Đó là một điều hợp lý để nghi ngờ. Trong thực tế, nó không sửa đổi hành vi nohup (nohup thậm chí không thể nhìn thấy nó) mà sửa đổi hành vi của shell.
Phường Samuel Edwin

nohup & -> Không Hangup và nền nó. Từ những ngày xưa tốt đẹp của modem và thiết bị đầu cuối nối tiếp. Khi thiết bị đầu cuối và modem của tôi ngoại tuyến, hãy tiếp tục xử lý phần này trong nền để công việc được hoàn thành khi tôi tiếp tục trực tuyến.
Phòng thí nghiệm Fiasco

Câu trả lời:


19

Từ trang bash :

Nếu một lệnh bị chấm dứt bởi toán tử điều khiển &, shell sẽ thực thi lệnh trong nền trong một lớp con. Shell không chờ lệnh kết thúc và trạng thái trả về là 0.

Vì vậy, có, nó là một thứ vỏ, và có thể được sử dụng với bất kỳ lệnh nào. Nó về cơ bản trả lại quyền điều khiển cho bạn ngay lập tức và cho phép lệnh hoàn thành trong nền. Điều này hầu như luôn được sử dụng với nohupvì bạn thường muốn thoát khỏi shell sau khi bắt đầu lệnh.


4
Gần đây tôi đã thấy bạn đăng một loạt các câu trả lời hay và bộ não của tôi luôn dịch tên người dùng của bạn sang McGuyver. Không chắc chắn tại sao tôi cảm thấy cần phải nói với bạn điều này.
MDMarra

1
@MDMarra Tôi sẽ coi đó là một lời khen ;-)
mgorven

1
@MDMarra Ít nhất bạn không nghĩ: "McGruber"
Ward - Tái lập Monica

7

Sử dụng ký hiệu (&) sẽ chạy lệnh trong tiến trình con (con đến phiên bash hiện tại). Tuy nhiên, khi bạn thoát phiên, tất cả các tiến trình con sẽ bị giết.

sử dụng nohup + ampersand (&) sẽ làm điều tương tự, ngoại trừ khi phiên kết thúc, cha mẹ của quá trình con sẽ được đổi thành "1", đó là quá trình "init", do đó bảo vệ trẻ khỏi bị giết.


3

Vâng, đó là một điều vỏ - nó chạy lệnh trong nền để bạn không phải đợi lệnh hiện tại quay trở lại trước khi ban hành thêm lệnh.

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.