Hướng dẫn sử dụng nohup trong Linux

không

Hãy tưởng tượng nếu một quá trình quan trọng đang chạy trên hệ thống của bạn trong một thời gian dài. Bỗng một ngày bạn cần đăng xuất khỏi hệ thống của mình. Nếu bạn đăng xuất, quy trình của bạn sẽ bị dừng ngay lập tức và bạn chắc chắn không muốn điều này xảy ra, phải không? Nếu bạn muốn các tiến trình đang chạy được tiếp tục mà không bị gián đoạn, thì bạn sẽ cần phải sử dụng chúng lệnh nohup.

Xem thêm: Quá trình là gì

Noups (viết tắt của từ không cúp máy) là một lệnh bỏ qua tín hiệu HUP. Bạn có thể tự hỏi tín hiệu HUP là gì. Cụ thể, đó là tín hiệu được gửi đến một quá trình khi lớp vỏ được liên kết với nó bị chấm dứt. Thông thường, khi chúng ta đăng xuất, thì tất cả các chương trình và quy trình đang chạy sẽ bị treo hoặc dừng. Nếu chúng ta muốn tiếp tục chạy tiến trình ngay cả sau khi đăng xuất hoặc ngắt kết nối khỏi trình bao hiện tại, thì chúng ta có thể sử dụng lệnh nohup. Nó làm cho các tiến trình miễn nhiễm với tín hiệu HUP để giữ cho chương trình chạy ngay cả sau khi bạn đăng xuất. Với nohup, bạn sẽ không cần phải đăng nhập vào hệ thống trong một thời gian dài để chờ quá trình chạy cho đến khi hoàn tất.

Trong bài viết này, tôi sẽ giải thích cách sử dụng lệnh nohup trong các trường hợp khác nhau khi sử dụng Linux.

>>> Xem thêm:  Hướng dẫn kill process trên Linux

Cú pháp lệnh Nohup

Để sử dụng lệnh nohup, chúng tôi sử dụng cú pháp sau:

$ nohup command arguments

Hoặc là

$ nohup options

Để xem thêm thông tin về lệnh nohup, chúng ta có thể sử dụng lệnh

$ nohup --help

Hoặc để kiểm tra phiên bản nohup, bạn có thể sử dụng lệnh:

$ nohup --version

Chạy tiến trình bằng lệnh nohup

Nếu bạn muốn duy trì quá trình chạy ngay cả khi bạn đã thoát khỏi trình bao, hãy sử dụng lệnh nohup với lệnh sau để chạy quy trình:

$ nohup command

Khi bạn đã chạy lệnh trên, tất cả đầu ra cùng với thông báo lỗi sẽ được thêm vào File nohup.out trong thư mục chính hoặc trong thư mục hiện tại bạn đang đứng để chạy lệnh trên. Bây giờ, nếu shell được đóng hoặc bạn đăng xuất khỏi hệ thống, lệnh được thực hiện ở trên sẽ không bị chấm dứt.

Chuyển hướng đầu ra sang tập tin khác

Theo mặc định, ouput của lệnh nohup được thêm vào File nohup.out. Để chuyển hướng đầu ra này sang File khác, hãy sử dụng toán tử chuyển hướng “>Tiếp theo là một tên tập tin cụ thể. Ví dụ: bạn sử dụng lệnh sau để lưu đầu ra của lệnh nohup vào một File mới có tên “quangvu.sh”.

$ sudo nohup ./vu.sh > quangvu.sh &

Xem thêm: Mô tả tập tin là gì

Chạy tiến trình bằng cách sử dụng noup trong nền

Để chạy và đặt các tiến trình trong nền, bạn cần sử dụng lệnh nohup như sau:

$ nohup command &

Nhân vật & Nói với shell rằng nó cần chạy lệnh trong nền. Tương tự như lệnh nohup ở trên ngoại trừ khi phiên kết thúc, nó sẽ ngay lập tức trở về dấu nhắc shell. Để đưa nó trở lại bàn chân trước, hãy sử dụng lệnhfg“.

lap60267@lap60267:/tmp$ sudo nohup ./test &
[1] 4000921

Đầu ra của tất cả các lệnh bạn thực hiện sẽ được thêm vào File nohup.out. Bạn có thể xem File này bằng lệnh nohup trong Terminal. Số 4000921 ở trên là PID (Số nhận dạng quy trình) của quy trình đang chạy trong nền.

>>> Xem thêm:  Hướng dẫn cài đặt Minio trên Ubuntu 20.04

Chạy trong nền nhiều quá trình sử dụng nohup

Bạn có thể chạy nhiều lệnh trong nền bằng lệnh nohup. Trong các lệnh sau, mkdir, ping và ls được thực thi trong nền bằng cách sử dụng lệnh nohup.

$ nohup bash -c 'mkdir files &&
ping -c 1 google.com && ls'> output.txt

Kết thúc quá trình chạy trong nền

Để chấm dứt một quá trình đang chạy trong nền, sử dụng lệnh kill như sau:

$ kill -9 PID

Bạn sẽ thấy PID của quá trình khi sử dụng nohup với “&”. Một cách khác để tìm PID là thông qua lệnh “pgrep -a”. Ví dụ: nếu bạn chạy lệnh ping với nohup, nó sẽ giữ quá trình chạy ở chế độ nền ngay cả khi bạn đóng vỏ. Ở đây, trong trường hợp này, để tìm ra PID của quá trình Ping đang chạy trong nền, hãy sử dụng lệnh sau:

$ pgrep –a ping

Nó sẽ liệt kê tất cả các quy trình liên quan đến lệnh Ping.

lap60267@lap60267:~$ nohup ping 192.168.1.123 &
[2] 3996966
lap60267@lap60267:~$ nohup: ignoring input and appending output to 'nohup.out'
lap60267@lap60267:~$  pgrep -a ping
3996966 ping 192.168.1.123

Bây giờ, để kết thúc quá trình Ping đang chạy trong nền, hãy sử dụng lệnh kill như sau:

$ kill -9 3996966

Xem thêm nhiều bài khác tại : https://excel-cracker.com/he-dieu-hanh

Comments are closed.