Android

Lệnh nohup Linux

nohup - Run Commands in the Background - Linux CLI

nohup - Run Commands in the Background - Linux CLI

Mục lục:

Anonim

Lệnh nohup thực thi một chương trình khác được chỉ định làm đối số của nó và bỏ qua tất cả các SIGHUP (gác máy). SIGHUP là tín hiệu được gửi đến một quy trình khi thiết bị đầu cuối điều khiển của nó bị đóng.

Thông thường, khi bạn chạy một chương trình qua SSH, nếu kết nối của bạn bị rớt hoặc bạn đăng xuất, phiên bị chấm dứt và tất cả các quy trình được thực hiện từ thiết bị đầu cuối sẽ dừng lại. Đây là nơi lệnh nohup có ích. Nó bỏ qua tất cả các tín hiệu gác máy, và quá trình sẽ tiếp tục chạy.

Cách sử dụng lệnh nohup

Cú pháp của lệnh nohup như sau:

nohup COMMAND

Lệnh không chấp nhận bất kỳ tùy chọn nào khác ngoại trừ --help --version tiêu chuẩn.

Hãy xem ví dụ sau:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup chạy lệnh mycommand ở nền trước và chuyển hướng đầu ra lệnh đến tệp nohup.out . Tập tin này được tạo ra trong thư mục làm việc hiện tại. Nếu người dùng đang chạy lệnh không có quyền ghi vào thư mục làm việc, tệp sẽ được tạo trong thư mục chính của người dùng.

Nếu bạn đăng xuất hoặc đóng thiết bị đầu cuối, quá trình không kết thúc.

Chạy lệnh trong nền

Sử dụng nohup trong foreground không hữu ích lắm vì bạn sẽ không thể tương tác với shell cho đến khi lệnh hoàn thành.

Để chạy lệnh trong nền, nối thêm biểu tượng & ở cuối lệnh:

nohup mycommand &

Đầu ra bao gồm ID công việc shell (được bao quanh bằng dấu ngoặc) và ID tiến trình:

25177

Bạn có thể sử dụng ID công việc để đưa lệnh vào nền trước bằng lệnh fg .

Nếu vì lý do nào đó bạn muốn chấm dứt quá trình, hãy sử dụng lệnh kill theo sau là ID tiến trình:

kill -9 25132

Chuyển hướng đầu ra vào một tập tin

Theo mặc định, nohup chuyển hướng đầu ra lệnh đến tệp nohup.out . Nếu bạn muốn chuyển hướng đầu ra sang một tệp khác, hãy sử dụng chuyển hướng shell tiêu chuẩn.

Ví dụ: để chuyển hướng đầu ra tiêu chuẩn và lỗi tiêu chuẩn sang mycommand.out bạn sẽ sử dụng:

nohup mycommand > mycommand.out 2>&1 &

Để chuyển hướng đầu ra tiêu chuẩn và lỗi tiêu chuẩn sang các tệp khác nhau:

nohup mycommand > mycommand.out 2> mycommand.err &

Lựa chọn thay thế

Có một số chương trình thay thế mà bạn có thể sử dụng để tránh lệnh bị chấm dứt khi bạn đóng thiết bị đầu cuối hoặc bị ngắt kết nối.

Màn

Màn hình hoặc GNU Màn hình là một chương trình ghép kênh đầu cuối cho phép bạn bắt đầu một phiên màn hình và mở bất kỳ số lượng cửa sổ (thiết bị đầu cuối ảo) nào trong phiên đó. Các quy trình đang chạy trong Màn hình sẽ tiếp tục chạy khi cửa sổ của chúng không hiển thị ngay cả khi bạn bị ngắt kết nối.

Tmux

Tmux là một thay thế hiện đại cho màn hình GNU. Với Tmux, bạn cũng có thể tạo một phiên và mở nhiều cửa sổ bên trong phiên đó. Các phiên Tmux vẫn tồn tại, có nghĩa là các chương trình đang chạy trong Tmux sẽ tiếp tục chạy ngay cả khi bạn đóng thiết bị đầu cuối.

Từ chối

disown là một phần mềm dựng sẵn để loại bỏ một công việc shell khỏi kiểm soát công việc của shell. Không giống như nohup , bạn cũng có thể sử dụng disown trên các tiến trình đang chạy.

Phần kết luận

nohup cho phép bạn ngăn chặn các lệnh bị chấm dứt khi bạn đăng xuất hoặc thoát khỏi thiết bị đầu cuối.

thiết bị đầu cuối nohup