Cách chạy tập lệnh với nohup trong Linux

2024-10-12 15:34:54 tin tức tiyusaishi
Phần 1: Lệnh nohup là gì? Trong Linux, khi chúng ta khởi động một chương trình hoặc tập lệnh trong một thiết bị đầu cuối, nếu thiết bị đầu cuối đó bị đóng, chương trình hoặc tập lệnh cũng sẽ ngừng chạy. Tuy nhiên, chúng tôi muốn chương trình tiếp tục chạy ngay cả khi chúng tôi đóng thiết bị đầu cuối trong một số trường hợp. Tại thời điểm này, chúng ta có thể sử dụng lệnh nohup để khởi động chương trình hoặc tập lệnh. Nói một cách đơn giản, nohup là một lệnh cho phép bạn thực hiện các lệnh chạy trong nền mà không cần đóng thiết bị đầu cuối. Nó có thể được sử dụng để bắt đầu bất kỳ lệnh hoặc tập lệnh nào và đảm bảo rằng nó không ngừng chạy do bị treo. Nó đặc biệt hữu ích cho các tác vụ thực thi tập lệnh dài. Phần 2: Làm thế nào để chạy một kịch bản với nohup? Đầu tiên, mở thiết bị đầu cuối. Sau đó nhập định dạng lệnh sau: lệnh nohup& "Lệnh" là tập lệnh hoặc chương trình bạn muốn chạy và "&" có nghĩa là lệnh sẽ chạy trong nền. Ví dụ: nếu bạn muốn chạy tập lệnh có tên là "myscript.sh", bạn có thể thực hiện việc này: nohup./myscript.sh& Lưu ý rằng "./" chỉ ra rằng tập lệnh được thực thi trong thư mục hiện tại và nếu tập lệnh của bạn nằm trong một thư mục khác, bạn cần cung cấp đường dẫn đầy đủ. Ngoài ra, bạn cần đảm bảo rằng tập lệnh của bạn có quyền thực thi. Nếu bạn không có quyền thực thi, bạn có thể sử dụng các lệnh chmod, chẳng hạn như :chmod+xmyscript.sh. Ngoài ra, bạn cần chú ý đến vấn đề không gian trong đường dẫn, nếu đường dẫn chứa khoảng trắng, bạn cần bọc đường dẫn trong dấu ngoặc kép. Ví dụ: "nohup./mydirectory/myscript.sh&". 3. Các tùy chọn khác cho lệnh nohup Ngoài lệnh nohup cơ bản, có một vài tùy chọn hữu ích khác mà bạn có thể sử dụng. Chẳng hạn: 1.                               Sau khi chạy lệnh trong nền, một tệp có tên nohup.out được tạo tự động để ghi lại thông tin đầu ra (theo mặc định, nó được tạo trong thư mục hiện tại). Bạn có thể tránh điều này bằng cách chuyển hướng đầu ra đến tệp được chỉ định. Ví dụ: nohup./myscript.sh>myoutput.log2>&1&1&, trong đó ">myoutput.log" có nghĩa là chuyển hướng đầu ra tiêu chuẩn đến tệp có tên "myoutput.log", "2>&1" cho biết rằng đầu ra lỗi được chuyển hướng đến đầu ra tiêu chuẩn (tức là tệp được chỉ định trước đó). Điều này cho phép bạn xem thông tin đầu ra ngay cả khi bạn đóng cửa sổ đầu cuối. Nếu bạn muốn tiếp tục chạy tập lệnh của mình trong nền ngay cả khi thiết bị đầu cuối đã đóng, bạn cần sử dụng lệnh disown hoặc công cụ màn hình. Đây là tất cả các chủ đề liên quan đến môi trường kết thúc. Điều quan trọng cần lưu ý là các chương trình được khởi chạy với nohup sẽ không chạy do kết thúc phiên đầu cuối, vì vậy bạn sẽ cần phải dừng chương trình theo cách thủ công khi bạn không cần nó chạy nữa. Bạn có thể tìm thấy nó và quản lý nó bằng cách xem ID quy trình và sau đó giết nó hoặc bằng cách sử dụng các công cụ như ps và pgrep.


Cuối cùng, để tránh các vấn đề quản lý phiên gây ra bởi các yếu tố như đăng xuất hoặc đăng nhập trong khi thực thi các chương trình nền, chúng ta cũng có thể sử dụng các công cụ khác như màn hình hoặc tmux để đạt được hoạt động nền ổn định hơn.


Nhìn chung, lệnh nohup là một công cụ rất hữu ích trong Linux để giúp chúng ta chạy các chương trình hoặc tập lệnh trong nền và đảm bảo chúng không ngừng chạy vì chúng bị gác máy. Khi chúng ta đã nắm vững cách sử dụng nó, chúng ta có thể dễ dàng thực hiện tất cả các loại tác vụ tự động hóa dài hạn trong môi trường Linux.