2012-11-12 27 views
40

Tôi là quản trị viên hệ thống và tôi đã được yêu cầu chạy tập lệnh linux để xóa hệ thống."&" ở cuối lệnh linux có nghĩa là gì?

Lệnh là thế này:

perl script.pl > output.log & 

do đó, lệnh này được kết thúc bằng một dấu &, là có bất kỳ ý nghĩa đặc biệt của nó?

Tôi có kiến ​​thức cơ bản về trình bao nhưng tôi chưa bao giờ thấy điều này trước đây.

+0

Gắn cờ cho unix se –

+0

Bước đầu tiên, "man bash". –

+0

xin lỗi tôi xấu, tôi đã biết về những thứ cơ bản như vậy – Dude

Trả lời

73

& làm cho lệnh chạy dưới nền.

Từ man bash:

Nếu một lệnh được chấm dứt bởi các nhà điều hành kiểm soát &, vỏ thực thi lệnh trong nền trong một subshell. Vỏ không không chờ lệnh đến cuối, và tình trạng trả lại là 0.

8

Bên cạnh đó, bạn có thể sử dụng "&" đăng ký để chạy nhiều quá trình thông qua một (1) kết nối ssh để để giữ số lượng thiết bị đầu cuối tối thiểu. Ví dụ, tôi có một quá trình nghe tin nhắn để trích xuất các tập tin, quá trình thứ hai lắng nghe các tin nhắn để tải lên các tập tin: Sử dụng "&" Tôi có thể chạy cả hai dịch vụ trong một thiết bị đầu cuối, thông qua kết nối ssh duy nhất đến máy chủ của tôi .


***** Tôi vừa nhận ra rằng các quá trình này chạy qua "&" cũng sẽ "vẫn hoạt động" sau khi phiên ssh bị đóng! khá gọn gàng và hữu ích nếu kết nối của bạn với máy chủ bị gián đoạn **

+0

'nohup' sẽ giữ cho quá trình còn sống quá. –

2

Khi không được yêu cầu các lệnh khác tiếp quản nền trước. Bạn chỉ có một tiến trình "tiền cảnh" chạy trong một phiên trình bao duy nhất. Biểu tượng & chỉ thị các lệnh chạy trong tiến trình nền và ngay lập tức trở lại dòng lệnh cho các lệnh bổ sung.

sh my_script.sh & 

Một quá trình nền sẽ không sống sót sau khi phiên vỏ được đóng lại. SIGHUP chấm dứt tất cả các tiến trình đang chạy. Mặc định theo mặc định. Nếu lệnh của bạn là dài chạy hoặc chạy vô thời hạn (ví dụ: microservice), bạn cần phải pr-pend nó với nohup nên nó vẫn chạy sau khi bạn ngắt kết nối từ phiên:

nohup sh my_script.sh & 

EDIT: Có không xuất hiện để là một khu vực màu xám liên quan đến việc đóng các quy trình nền khi sử dụng &. Chỉ cần lưu ý rằng vỏ có thể đóng quá trình của bạn tùy thuộc vào hệ điều hành và cấu hình cục bộ của bạn (đặc biệt là trên CENTOS/RHEL): https://serverfault.com/a/117157.

Các vấn đề liên quan