nohup - Run Commands in the Background - Linux CLI
Mục lục:
- Cách sử dụng lệnh nohup
- Chạy lệnh trong nền
- Chuyển hướng đầu ra vào một tập tin
- Lựa chọn thay thế
- Màn
- Tmux
- Từ chối
- Phần kết luận
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
và
--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:
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.
Nắm bắt dòng lệnh bằng lệnh Take
Tích hợp dấu nhắc lệnh, GUI và một ngôn ngữ hàng loạt mạnh mẽ với bộ công cụ Take Command mạnh.
Khắc phục: Tập lệnh thường an toàn không. Bạn có muốn cho phép các tập lệnh chạy
Nếu bạn nhận được thông báo bật lên Các tập lệnh thường an toàn. Bạn có muốn cho phép tập lệnh chạy không? trong Internet Explorer nhiều lần, sửa lỗi.
Cách sử dụng lệnh ngủ linux để tạm dừng tập lệnh bash
Ngủ là một tiện ích dòng lệnh cho phép bạn tạm dừng quá trình gọi trong một thời gian nhất định. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng lệnh ngủ Linux.