Cách sử dụng lệnh nohup trong tập lệnh shell
2024-10-23 13:02:29
tin tức
tiyusaishi
Trong Unix và Linux, chúng ta thường cần chạy các 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 hoặc đóng phiên. Trong trường hợp này, chúng ta có thể sử dụng lệnh nohup. Bài viết này sẽ trình bày chi tiết cách sử dụng lệnh nohup trong tập lệnh shell.
1. Giới thiệu về lệnh nohup
Lệnh nohup là chữ viết tắt của "nohangup", và vai trò của nó là chạy lệnh hoặc tập lệnh và bỏ qua tất cả các tín hiệu gác máy. Điều này có nghĩa là ngay cả khi bạn đóng thiết bị đầu cuối hoặc thoát khỏi phiên, lệnh hoặc tập lệnh sẽ tiếp tục chạy trong nền. Lệnh này rất hữu ích khi xử lý các tập lệnh hoặc chương trình cần chạy trong một thời gian dài.
2. Cách sử dụng lệnh nohup
Cú pháp cơ bản là:
''Ầm ầm
nohupcommand>/dev/null2>&1&
```
Trong đó:
'command' là lệnh hoặc tập lệnh bạn muốn chạy.
'>/dev/null' là chuyển hướng đầu ra đến một thiết bị trống, có nghĩa là bạn sẽ không thấy bất kỳ đầu ra nào. Nếu bạn muốn xem đầu ra, bạn có thể chuyển hướng đầu ra đến một tệp như 'command>output.log2>&1'. Bằng cách này, bạn sẽ có thể xem tất cả thông tin đầu ra trong tệp output.log.
'2>&1' là chuyển hướng lỗi tiêu chuẩn (filedescriptor2) sang đầu ra tiêu chuẩn (filedescriptor1). Điều này đảm bảo rằng tất cả các đầu ra, bao gồm cả đầu ra lỗi, được chuyển hướng đến tệp hoặc thiết bị được chỉ định. Đây là tùy chọn, nhưng bạn có thể cần tùy chọn này nếu lệnh của bạn có đầu ra lỗi.
'&' ở cuối chỉ ra rằng lệnh được chạy trong nền. Đây là tùy chọn, nhưng hữu ích nếu bạn muốn quay lại thiết bị đầu cuối ngay sau khi khởi chạy lệnh. Nếu bạn không sử dụng tùy chọn này, lệnh cũng sẽ bị chấm dứt khi bạn đóng thiết bị đầu cuối. Sử dụng '&' sẽ làm cho lệnh tiếp tục chạy ngay cả khi thiết bị đầu cuối đã đóng.
Ví dụ: nếu bạn muốn chạy tập lệnh có tên 'myscript.sh' trong nền và bỏ qua tất cả đầu ra, bạn có thể thực hiện việc này:
''Ầm ầm
nohup./myscript.sh>/dev/null2>&1&
```
3. Sử dụng lệnh nohup trong tập lệnh shell
Bạn có thể sử dụng lệnh nohup trong tập lệnh shell để chạy các tập lệnh hoặc lệnh khác. Ví dụ: bạn có thể tạo một tập lệnh có tên 'run_scripts.sh' chứa nhiều lệnh hoặc tập lệnh chạy với nohup. Đây là một ví dụ đơn giản:
''Ầm ầm
!/bin/bash
nohup./script1.sh>/dev/null2>&1&
nohup./script2.sh>/dev/null2>&1&
```
Khi bạn chạy tập lệnh này, nó sẽ bắt đầu hai tập lệnh và chạy chúng trong nền, điều này sẽ không dừng chúng ngay cả khi bạn đóng thiết bị đầu cuối. Lưu ý rằng trước khi bạn chạy tập lệnh này, bạn cần đảm bảo rằng nó có quyền thực thi (bạn có thể sử dụng 'chmod+xrun_scripts.sh' để thêm quyền thực thi vào tệp này).
Tóm tắt: Sử dụng lệnh nohup là một cách hiệu quả để quản lý các tác vụ chạy dài và các tác vụ nền. Bằng cách hiểu cách thức hoạt động và cách áp dụng nó một cách chính xác, bạn có thể quản lý tài nguyên hệ thống của mình hiệu quả hơn và chạy các tác vụ dài mà không phải lo lắng về các phiên đầu cuối bị gián đoạn.