上一篇
Linux chạy tác vụ trong nền và sử dụng lệnh nohup
Trong Linux, chúng ta thường cần chạy các tác vụ ở chế độ nền, đặc biệt là khi thực thi một số chương trình chạy dài. Để đạt được điều này, chúng ta thường sử dụng lệnh nohup. Chủ đề này mô tả cách sử dụng lệnh nohup để chạy một tác vụ trong nền Linux.
1. Sự cần thiết của việc chạy các tác vụ trong nền
Trong nhiều trường hợp, chúng tôi có thể cần phải rời khỏi máy tính để làm việc khác, nhưng đồng thời chúng tôi không muốn các chương trình đang chạy bị gián đoạn bằng cách thoát khỏi thiết bị đầu cuối hoặc hệ thống đang ngủ. Để giải quyết vấn đề này, chúng ta có thể di chuyển tác vụ để chạy trong nền. Điều này đặc biệt quan trọng đối với các chương trình chạy dài, chẳng hạn như tải xuống tệp, biên dịch mã, v.v.
2. Hiểu lệnh nohup
Nohup là chữ viết tắt của "nohangup", được sử dụng để chạy các lệnh trong nền 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 thiết bị đầu cuối bị tắt hoặc mất kết nối mạng, các lệnh do nohup khởi tạo vẫn sẽ tiếp tục chạy. Điều này đặc biệt hữu ích cho các tác vụ trên các máy chủ từ xa. Khi bạn chạy một lệnh với nohup, nó sẽ tạo một tệp có tên nohup.out để lưu thông tin đầu ra của lệnh.
3. Cách sử dụng lệnh nohup
Cú pháp cơ bản để sử dụng lệnh nohup như sau:
nohupcommand>/dev/null2>&1&
Trong đó:
Lệnh là một lệnh hoặc chương trình mà bạn muốn chạy trong nền.
/dev/null 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ỳ thông tin đầu ra nào. Nếu bạn muốn lưu thông tin đầu ra, bạn có thể chuyển hướng nó đến một tệp.
2>&1 có nghĩa là lỗi tiêu chuẩn (bộ mô tả tệp 2) được chuyển hướng đến đầu ra tiêu chuẩn (bộ mô tả tệp 1). Điều này có nghĩa là thông báo lỗi cũng sẽ được lưu vào tệp.
Biểu tượng & chỉ ra rằng lệnh được chạy trong nền.
Ví dụ: để tải xuống tệp trong nền và lưu thông tin đầu ra bằng nohup, bạn có thể thực hiện lệnh sau:
nohupwgethttp://example.com/file.zip> xuống.log2>&1&
Thao tác này sẽ bắt đầu tải xuống tệp và chạy trong nền trong khi lưu tất cả thông tin đầu ra vào tệp download.log. Ngay cả khi bạn đóng thiết bị đầu cuối hoặc ngắt kết nối Internet, quá trình tải xuống vẫn sẽ tiếp tục.
4. Xem và quản lý các tác vụ nền
Để xem các tác vụ nền, bạn có thể sử dụng lệnh sau:
jobs: Xem các tác vụ nền trong shell hiện tại. Chỉ có thể được sử dụng trong shell hỗ trợ các công việc (ví dụ: bash).
psaux|grep<进程名或关键词>: tìm kiếm trạng thái tiến trình theo tên tiến trình hoặc từ khóa.
top hoặc htop: Xem mức sử dụng tài nguyên hệ thống trong thời gian thực, bao gồm cả các quy trình đang chạy.
Để quản lý các tác vụ nền, bạn có thể sử dụng Ctrl+C để chấm dứt quá trình hoặc sử dụng lệnh kill để kết thúc quá trình. Ví dụ: để kết thúc một quá trình có tên "example", bạn có thể thực hiện lệnh sau: kill-9example. Hãy cẩn thận khi sử dụng lệnh kill để đảm bảo rằng các tiến trình quan trọng không vô tình bị giết.
5. Tóm tắt
Lệnh nohup là một công cụ rất hữu ích trong Linux cho phép chúng ta chạy các tác vụ ở chế độ nền và bỏ qua tín hiệu gác máy. Điều này đặc biệt hữu ích cho các chương trình chạy dài và để thực hiện các tác vụ trên các máy chủ từ xa. Bằng cách sử dụng Nohup, chúng tôi có thể đảm bảo rằng tác vụ tiếp tục chạy ngay cả khi thiết bị đầu cuối bị hỏng hoặc mất kết nối mạng. Khi sử dụng Nohup, hãy đảm bảo bạn hiểu cách sử dụng các lệnh để xem và quản lý các tác vụ nền.