Linux quá trình nền Nohup
2024-10-28 11:39:46
tin tức
tiyusaishi
Các tiến trình Linux chạy trong nền và lệnh nohup được giải thích chi tiết
I. Giới thiệu
Trong Linux, chúng ta thường cần chạy một số tiến trình ở chế độ nền, đặc biệt là khi thực hiện một số tác vụ dài. Bài viết này sẽ giới thiệu cách đặt một tiến trình trong nền trong Linux và tập trung vào cách sử dụng lệnh nohup.
2. Quá trình Linux chạy trong nền
Trong Linux, chúng ta có thể tạm dừng quá trình nền trước bằng cách nhấn Ctrl + Z và sau đó sử dụng lệnh bg để đặt nó đang chạy trong nền. Ngược lại, bạn có thể sử dụng lệnh fg để đưa quy trình nền lên nền trước. Các hoạt động này đều được thực hiện từ dòng lệnh đầu cuối. Điều quan trọng cần lưu ý là khi thiết bị đầu cuối được đóng, quá trình nền cũng bị chấm dứt. Do đó, chúng ta cần sử dụng một số phương pháp đặc biệt để đảm bảo rằng quá trình tiếp tục chạy ngay cả sau khi thiết bị đầu cuối đã đóng.
3. Giới thiệu về lệnh nohup
Lệnh nohup là chữ viết tắt của "nohangup", có thể khiến quá trình chạy tiếp tục chạy sau khi thiết bị đầu cuối tắt, bỏ qua tín hiệu treo máy (tức là tín hiệu tắt thiết bị đầu cuối). Một quá trình bắt đầu với lệnh nohup sẽ chuyển hướng đầu ra đến một tệp có tên nohup.out để tránh mất thông tin đầu ra.
4. Cách sử dụng lệnh nohup
1. Cú pháp cơ bản: nohupCommand>/dev/null2>&1&
Trong số đó, "Command" là lệnh để chạy, "/dev/null" có nghĩa là chuyển hướng đầu ra đến một thiết bị trống, "2>&1" có nghĩa là chuyển hướng đầu ra lỗi tiêu chuẩn sang đầu ra tiêu chuẩn và "&" có nghĩa là đưa tiến trình vào nền đang chạy.
2. Sử dụng ví dụ: Giả sử chúng ta muốn chạy một tập lệnh có tên test.sh trong nền, bạn có thể sử dụng lệnh sau:
nohup./test.sh>/dev/null2>&1&
Bằng cách này, các tập lệnh test.sh sẽ tiếp tục chạy trong nền ngay cả khi thiết bị đầu cuối đã đóng.
5. Biện pháp phòng ngừa
1. Các tiến trình bắt đầu bằng lệnh nohup không được kiểm soát bởi phiên đầu cuối và sẽ tiếp tục chạy ngay cả khi thiết bị đầu cuối bị đóng hoặc người dùng đăng xuất. Do đó, hãy đảm bảo tắt các quy trình không còn cần thiết một cách kịp thời.
2.Lệnh nohup sẽ không lưu đầu ra của tiến trình con vào một tệp, chỉ chuyển hướng đầu ra được tạo trực tiếp bởi shell sang một tệp để giữ lại thông tin đầu ra. Đối với các quy trình đã được bắt đầu, sử dụng nohup không lưu đầu ra của nó vào một tệp. Trong trường hợp này, một công cụ như màn hình hoặc tmux có thể được sử dụng để đạt được điều gì đó tương tự.
3. Các quy trình được bắt đầu bởi lệnh nohup sẽ không bị ảnh hưởng bởi tín hiệu gác máy, nhưng các quy trình này vẫn sẽ bị chấm dứt nếu hệ thống được khởi động lại hoặc tắt. Để đảm bảo rằng các quy trình quan trọng tiếp tục chạy sau khi khởi động lại hệ thống, hãy xem xét sử dụng các dịch vụ hệ thống hoặc daemon.
4. Khi sử dụng lệnh nohup, hãy đảm bảo rằng người dùng hiện tại có quyền thực thi trên tệp thực thi. Nếu không, nó có thể dẫn đến lỗi không đủ quyền. Bạn có thể sử dụng lệnh chmod để thêm quyền thực thi vào tệp. Ví example:chmod+xtest.sh.
6. Tóm tắt
Chủ đề này mô tả các phương pháp và nguyên tắc của các tiến trình chạy nền trên Linux và tập trung vào việc sử dụng lệnh nohup và các biện pháp phòng ngừa. Bằng cách thành thạo các kỹ năng này, chúng ta có thể quản lý các quy trình trong hệ thống Linux linh hoạt hơn và cải thiện việc sử dụng tài nguyên hệ thống và hiệu quả công việc. Trong thực tế, cần phải chọn các công cụ và phương pháp thích hợp để quản lý các quy trình nền theo tình huống cụ thể.