Cách sử dụng Nohup trong Bash Script
2024-10-23 13:26:37
tin tức
tiyusaishi
Cách sử dụng nohup trong tập lệnh bash
I. Giới thiệu
Trong Linux, chúng ta thường cần chạy một số tác vụ dài trong nền, ngay cả sau khi chúng ta thoát khỏi thiết bị đầu cuối. Tại thời điểm này, chúng ta có thể sử dụng một trong các lệnh bash - nohup. Bài viết này sẽ trình bày chi tiết cách chạy các tác vụ nền trong tập lệnh bash bằng nohup.
2. Hiểu lệnh nohup
Nohup là chữ viết tắt của "nohangup", có nghĩa là để tránh cúp máy. Đó là một lệnh rất thiết thực cho phép chúng ta tiếp tục chạy các chương trình trong nền sau khi thoát khỏi vỏ hoặc đóng thiết bị đầu cuối. SỬ DỤNG LỆNH NÀY ĐỂ CHO PHÉP QUÁ TRÌNH BỎ QUA CÁC TÍN HIỆU TREO MÁY (CHẲNG HẠN NHƯ SIGINT VÀ SIGHUP) VÀ TIẾP TỤC CHẠY TRONG NỀN. Khi bạn chạy lệnh này, bạn thường sử dụng định dạng sau:
nohupcommand>/dev/null2>&1&
"lệnh" là lệnh hoặc tập lệnh bạn muốn chạy, ">/dev/null2>&1" là chuyển hướng đầu ra tiêu chuẩn và đầu ra lỗi sang /dev/null (tức là bỏ qua đầu ra) và "&" cuối cùng có nghĩa là đặt lệnh ở chế độ nền để chạy.
3. Sử dụng nohup trong tập lệnh bash
Sử dụng nohup trong tập lệnh bash về cơ bản giống như sử dụng nó trên dòng lệnh. Tất cả những gì bạn cần làm là gọi lệnh hoặc tập lệnh bạn muốn chạy trong tập lệnh và tiền tố nó bằng nohup. Chẳng hạn:
''Ầm ầm
!/bin/bash
nohupyour_command>/dev/null2>&1&
```
"your_command" là lệnh hoặc tập lệnh bạn muốn chạy. Khi chạy tập lệnh, bạn không cần phải bắt đầu lệnh hoặc tập lệnh thông qua thiết bị đầu cuối. Khi hệ thống bắt đầu thực thi tập lệnh này, tất cả các tác vụ sẽ bắt đầu chạy ở chế độ nền. Khi tác vụ được bắt đầu thành công, các tập lệnh và thiết bị đầu cuối của bạn có thể được đóng một cách an toàn và tác vụ sẽ tiếp tục chạy trong nền. Hãy cẩn thận để đảm bảo bạn có đủ quyền để chạy các tác vụ này. Ngoài ra, bạn có thể sử dụng lệnh ps để kiểm tra trạng thái của các tác vụ nền. Nếu bạn cần kết thúc một tác vụ nền, bạn có thể sử dụng lệnh kill để nối PID (Process Identifier) của tiến trình. Để có được PID của một tiến trình, bạn có thể sử dụng lệnh pgrep với tên lệnh của bạn để tìm PID và sau đó giết nó. Đây là một ví dụ: đầu tiên lấy ID tiến trình thông qua pgrep và sau đó kết thúc quá trình: 'pgrepyour_command|xargskill'. Hãy chắc chắn thận trọng khi sử dụng hai lệnh này để tránh hoạt động sai, kết thúc các quy trình quan trọng và gây ra các vấn đề và rắc rối không cần thiết! Ví dụ: buộc chấm dứt có thể dẫn đến quá trình buộc chấm dứt các tệp quan trọng của bạn chưa được lưu và các hoạt động khác có tác động lớn hơn, vì vậy bạn phải chú ý đến quy trình trong quá trình vận hành và kiểm soát hợp lý các thông số khác nhau để giảm thiểu tổn thất do hoạt động sai! Ngoài ra, khi sử dụng nohup, bạn cũng nên chú ý đến các vấn đề về quyền, đảm bảo bạn có đủ quyền để thực thi các lệnh hoặc tập lệnh của mình, nếu không bạn có thể gặp sự cố về quyền trong quá trình thực thi, dẫn đến tác vụ không hoạt động đúng! Khi sử dụng nohup, bạn cũng nên chú ý đến việc sử dụng tài nguyên hệ thống để tránh các vấn đề như suy giảm hiệu suất hệ thống do chiếm dụng quá nhiều tài nguyên hệ thống! Tóm lại, khi sử dụng nohup, bạn phải chú ý sử dụng hợp lý để tránh những rắc rối, sự cố không đáng có nhé! Đó là cách sử dụng nohup trong các tập lệnh bash, tôi hy vọng nó sẽ giúp!