giảm giá 50% tất cả các kế hoạch, thời gian có hạn. Bắt đầu lúc $2.48/mo
còn 8 phút
Máy chủ & Hệ điều hành

Lệnh nohup hoạt động như thế nào trong Linux – Cú pháp, trường hợp sử dụng & ví dụ

Ada Lovegood By Ada Lovegood đọc 8 phút Cập nhật ngày 14 tháng 7 năm 2024
lệnh nohup

Nếu bạn là nhà phát triển Linux, bạn biết tầm quan trọng của tính nhất quán và độ tin cậy trong các phiên của mình. Các quy trình chạy dài trong Linux cần tiếp tục ngay cả sau khi bạn đăng xuất khỏi phiên. May mắn thay, Linux có một lệnh chức năng cho mục đích này. các lệnh nohup cho phép bạn giữ các lệnh chạy không bị gián đoạn trong nền. Bằng cách này, nó ngăn ngừa mất dữ liệu và tiết kiệm thời gian quý báu. Hướng dẫn này sẽ hướng dẫn bạn mọi điều bạn cần biết về lệnh Nohup của Linux, từ cú pháp và các tùy chọn cho đến các ví dụ thực tế và cách khắc phục các lỗi phổ biến.

Tìm hiểu cú pháp nohup của Linux

Lệnh Nohup rất dễ sử dụng và đơn giản. Nó cho phép bạn chạy các lệnh hoặc tập lệnh ở chế độ nền để bạn chắc chắn rằng chúng tiếp tục thực thi ngay cả sau khi bạn đăng xuất khỏi thiết bị đầu cuối. Đây là cách sử dụng nó:

nohup [command] [arguments] &

Bạn nên thay thế [yêu cầu] bằng lệnh hoặc tập lệnh bạn muốn chạy. Và [lý lẽ] là bất kỳ đối số hoặc tùy chọn nào được lệnh yêu cầu. các & biểu tượng gửi lệnh để chạy ở chế độ nền. Hãy xem một ví dụ:

nohup myscript.sh &

Trong ví dụ này, myscript.sh là một tập lệnh bash sẽ tiếp tục chạy ngay cả khi bạn đóng thiết bị đầu cuối. Đầu ra sẽ được chuyển hướng đến một tệp có tên nohup.out theo mặc định trừ khi bạn chỉ định một đường dẫn khác.

Khám phá các tùy chọn Nohup

Mặc dù bản thân lệnh Nohup không có nhiều tùy chọn nhưng việc hiểu cách sử dụng nó hiệu quả với các lệnh và kỹ thuật chuyển hướng khác nhau có thể nâng cao hiệu suất của lệnh. Trước tiên, hãy xem cách chúng ta có thể lấy thông tin về lệnh Nohup:

nohup –-help 
nohup --version

Hai lệnh này cung cấp cho bạn một số thông tin hữu ích bằng cách hiển thị thông báo trợ giúp và phiên bản Nohup.

Chạy một tiến trình bằng lệnh Nohup

Nếu bạn muốn chạy một tiến trình bằng lệnh Nohup, bạn có thể làm theo cấu trúc tương tự như tôi đã giải thích ở phần trước:

nohup [command]

Nếu bạn muốn chạy một tiến trình ở chế độ nền, chỉ cần thêm & đến cuối lệnh của bạn.

Chạy nhiều tiến trình trong nền bằng lệnh nohup

Bây giờ, nếu bạn muốn chạy nhiều tiến trình trong nền bằng lệnh Nohup thì sao?

nohup bash -c '[command A] && [command B]' &

Thay thế [lệnh A][lệnh B] với các lệnh bạn muốn chạy trong nền. Hãy tưởng tượng trước tiên bạn muốn cập nhật các gói hệ thống của mình, sau đó dọn sạch các tệp không cần thiết và bạn muốn thực hiện việc này bằng lệnh Nohup:

nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &

Trong ví dụ này, không có gì cho phép cả quá trình cập nhật và dọn dẹp tiếp tục chạy ở chế độ nền. Vì vậy, nhiệm vụ bảo trì hệ thống của bạn được hoàn thành mà không cần bạn phải mở thiết bị đầu cuối.

Chuyển hướng đầu ra tùy chỉnh

Đầu ra của quá trình này sẽ được chuyển hướng đến nohup.out theo mặc định. Nhưng nếu bạn muốn nhận đầu ra theo đường dẫn khác thì sao? Đây là cách bạn có thể làm điều đó:

nohup [command] > [/path/to/new/output.txt]

Hãy nhớ thay thế các giá trị trong [] với đường dẫn lệnh và tệp mong muốn của bạn.

Kết hợp nohup với các lệnh khác

Nohup có thể được kết hợp với các lệnh và đường ống khác để tạo ra chuỗi lệnh mạnh mẽ. Hãy xem một ví dụ về điều này:

nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &

Ở đây, tìm thấy lệnh được sử dụng để tìm kiếm các tập tin nhật ký và grep được sử dụng để tìm kiếm cụm từ “ERROR”. Đầu ra kết hợp được chuyển hướng đến error_logs.txt.

Trong phần này, chúng tôi đã đề cập đến các tùy chọn và trường hợp sử dụng phổ biến nhất của lệnh Nohup. Bằng cách nắm vững các hướng dẫn này, bạn có thể sử dụng Nohup một cách hiệu quả để chạy các tiến trình Linux trong nền.

Các lỗi thường gặp và cách khắc phục sự cố

Việc sử dụng lệnh Nohup nói chung là đơn giản nhưng bạn có thể gặp phải một số lỗi phổ biến trong quá trình này. Hiểu những lỗi này và biết cách khắc phục chúng có thể giúp bạn tiết kiệm thời gian và giảm bớt sự thất vọng. Vì vậy, hãy xem những lỗi phổ biến này là gì và cách xử lý chúng:

Quyền bị từ chối

Lỗi này xảy ra khi tập lệnh hoặc lệnh bạn đang cố chạy không có quyền thực thi. Đầu ra của lỗi trông như thế này: Nohup: không chạy được lệnh 'myscript.sh': Quyền bị từ chối

Để giải quyết vấn đề này, bạn cần đảm bảo rằng tập lệnh hoặc lệnh có quyền chính xác. Bạn có thể thêm quyền thực thi bằng cách sử dụng chmod yêu cầu:

chmod +x myscript.sh 
nohup ./myscript.sh &

Lệnh không tìm thấy

Lỗi này xảy ra nếu không tìm thấy lệnh hoặc tập lệnh ở vị trí đã chỉ định hoặc không có sẵn trong PATH của bạn. Đầu ra của lỗi trông như thế này: Nohup: không chạy được lệnh 'myscript.sh': Không có tệp hoặc thư mục như vậy

Để giải quyết lỗi này, bạn nên xác minh rằng lệnh hoặc tập lệnh tồn tại và nằm trong đúng thư mục. Bạn có thể cần cung cấp đường dẫn tuyệt đối cho tập lệnh:

nohup /path/to/myscript.sh &

Đồng thời đảm bảo rằng lệnh đã được cài đặt và có sẵn trong PATH của bạn.

Không có đầu ra

Đôi khi, bạn có thể nhận thấy rằng không có đầu ra trong thiết bị đầu cuối hoặc trong tệp đầu ra. Nếu lệnh tạo ra đầu ra nhưng bạn không thấy nó thì có thể lệnh đó đã được chuyển hướng đến một đường dẫn khác với tệp mặc định hoặc có thể có vấn đề với quyền truy cập tệp. Để khắc phục sự cố này, bạn cần chỉ định rõ ràng tệp đầu ra để đảm bảo nó được chuyển hướng chính xác:

nohup myscript.sh > output.log 2>&1 &

Ví dụ: lệnh này chuyển hướng cả đầu ra tiêu chuẩn và lỗi tiêu chuẩn sang một tệp có tên output.log.

Tập lệnh không chạy trong nền

Đôi khi, tập lệnh hoặc lệnh của bạn có vẻ như đang chạy nhưng không ở chế độ nền. Lý do thường đơn giản. Có thể bạn đã quên thêm & biểu tượng ở cuối lệnh để chạy nó ở chế độ nền. Giải pháp cũng đơn giản, chỉ cần đảm bảo rằng bạn đã thêm nó và sẵn sàng sử dụng.

Quá trình treo hoặc không phản hồi

Quá trình bắt đầu bằng Nohup có thể bị treo hoặc không phản hồi. Điều này có thể xảy ra nếu quá trình đang chờ đầu vào hoặc nếu có vấn đề với tài nguyên mà nó đang cố truy cập. Có hai giải pháp cho vấn đề này:

  • Kiểm tra đầu vào bắt buộc: Đảm bảo lệnh không yêu cầu bất kỳ đầu vào tương tác nào.
  • Vấn đề về nguồn lực: Xác minh rằng lệnh có quyền truy cập vào các tài nguyên cần thiết (ví dụ: tệp, mạng).

Ghi đè nohup.out

Nếu bạn đang chạy nhiều tiến trình trong nền bằng lệnh Nohup, bạn có thể vô tình ghi đè lên nohup.out tài liệu. Để tránh vấn đề này, bạn có thể chọn một đường dẫn cụ thể cho từng quy trình. Bằng cách này, mỗi tiến trình có tệp đầu ra duy nhất và đường dẫn mặc định không bị ghi đè.

Bằng cách tìm hiểu về lỗi Nohup phổ biến và cách giải quyết chúng, bạn có thể sử dụng lệnh Nohup mà không gặp bất kỳ rắc rối nào.

Phần kết luận

Lệnh Nohup là một công cụ tuyệt vời cho bất kỳ người dùng Linux nào cần chạy các tiến trình ở chế độ nền vì nó đảm bảo các tiến trình của bạn tiếp tục chạy ngay cả sau khi đăng xuất. Trong hướng dẫn này, chúng tôi đã đề cập đến cú pháp cơ bản, khám phá các tùy chọn khác nhau và thảo luận về các lỗi phổ biến cùng với các mẹo khắc phục sự cố. Việc thành thạo lệnh Nohup cho phép bạn quản lý các tác vụ chạy dài một cách hiệu quả, giúp nâng cao năng suất và kỹ năng quản lý hệ thống của bạn.

Nếu bạn là nhà phát triển Linux đang tìm cách tối đa hóa trải nghiệm Linux của mình, hãy cân nhắc nâng cấp lên phiên bản đáng tin cậy VPS Linux. Dịch vụ VPS dựa trên đám mây của chúng tôi cung cấp hỗ trợ 24/7 và đảm bảo thời gian hoạt động 99,95%, nghĩa là ứng dụng của bạn luôn chạy trơn tru và bạn có thể nhận trợ giúp bất kỳ lúc nào trong ngày. Với cơ sở hạ tầng mạnh mẽ và tài nguyên đáng tin cậy, VPS của chúng tôi được thiết kế để đáp ứng nhu cầu của các lập trình viên Linux. Ngoài ra, bạn có thể cài đặt sẵn bản phân phối Linux ưa thích của mình, giúp việc thiết lập nhanh chóng và dễ dàng. Đưa các dự án Linux của bạn lên một tầm cao mới với VPS cung cấp sức mạnh và tính linh hoạt mà bạn cần.

Câu hỏi thường gặp

Sự khác biệt giữa không có gì&?

không có gì ngăn quá trình bị chấm dứt khi người dùng đăng xuất, trong khi & chạy một quá trình trong nền. sử dụng không có gì đảm bảo quá trình tiếp tục sau khi đăng xuất và kết hợp nó với & cho phép nó chạy ở chế độ nền.

Tại sao nohup được sử dụng?

không có gì được sử dụng để đảm bảo rằng lệnh hoặc tập lệnh tiếp tục chạy ngay cả sau khi người dùng đăng xuất hoặc đóng thiết bị đầu cuối. Nó rất cần thiết cho các quy trình chạy dài cần duy trì hoạt động mà không cần sự can thiệp của người dùng.

Tập tin nohup out là gì?

các nohup.out file là tệp đầu ra mặc định trong đó Nohup chuyển hướng đầu ra tiêu chuẩn và lỗi tiêu chuẩn của lệnh. Nếu không có tệp đầu ra nào khác được chỉ định, đầu ra của lệnh sẽ được lưu trong nohup.out trong thư mục hiện tại.

Chia sẻ

Thêm từ blog

Hãy tiếp tục đọc.

Các ứng dụng tự lưu trữ tốt nhất bạn có thể chạy với ảnh bìa Cosmos Cloud với các bảng ứng dụng xung quanh bảng điều khiển Cosmos.
Máy chủ & Hệ điều hành

Các ứng dụng tự lưu trữ tốt nhất bạn có thể chạy với Cosmos Cloud: Tệp, Phương tiện, Mật khẩu, Tự động hóa, v.v.!

Có thể bạn đã thiết lập Cosmos Cloud và bây giờ muốn xem ứng dụng nào phù hợp với nó hoặc có thể bạn thậm chí chưa quyết định chọn Cosmos và chỉ muốn xem nó phù hợp với công việc của bạn như thế nào

Nick bạcNick bạc đọc 16 phút
Portainer vs Cosmos Cloud để quản lý ứng dụng Docker bao gồm sơ đồ thiết lập kết hợp và các hoạt động neon so với các khối truy cập.
Máy chủ & Hệ điều hành

Portainer vs Cosmos Cloud: Phù hợp nhất để quản lý ứng dụng Docker

Nếu bạn đã biết Docker và chỉ muốn một cách rõ ràng hơn để chạy một ngăn xếp ứng dụng đang phát triển thì đây là câu trả lời ngắn gọn cho Portainer vs Cosmos Cloud. Portainer là sự lựa chọn mạnh mẽ hơn cho Direc

Nick bạcNick bạc đọc 14 phút
Đồ họa nổi bật của Cosmos Cloud vs CasaOS vs Umbrel hiển thị ba đường dẫn tự lưu trữ bên trong một thế giới mạng đám mây trừu tượng.
Máy chủ & Hệ điều hành

Cosmos Cloud vs CasaOS vs Umbrel: Nền tảng tự lưu trữ nào phù hợp với thiết lập của bạn?

Câu trả lời ngắn gọn là CasaOS vẫn là nơi dễ bắt đầu nhất, Umbrel có cảm giác được quản lý rõ ràng nhất và Cosmos Cloud sẽ hợp lý hơn khi bạn muốn kiểm soát chặt chẽ hơn đối với doma

Nick bạcNick bạc đọc 11 phút

Sẵn sàng triển khai? Từ $2,48/tháng.

Đám mây độc lập, kể từ năm 2008. AMD EPYC, NVMe, 40 Gbps. Hoàn tiền trong 14 ngày.