Làm cách nào để chuyển hướng đầu ra Nohup sang tệp khác?

Vấn đề của bạn nằm ở quyền truy cập tệp [hoặc hệ thống tệp chỉ đọc]. Việc đặt trước sudo vào lệnh của bạn không thể khắc phục điều này, bởi vì chỉ nohup dotnet application.dll được thực thi với quyền root bởi sudo, việc chuyển hướng đầu ra được thực hiện bằng cách bash với các đặc quyền người dùng thông thường của bạn. Bạn có thể giải quyết vấn đề này bằng cách gọi một shell riêng với quyền root

Đối với cả Attempt1 và Attempt2 , quá trình chuyển hướng sẽ ghi lại kết quả đầu ra một cách chính xác vào tệp đầu ra. Nhưng tôi gặp lỗi "bỏ qua đầu vào và chuyển hướng thiết bị xuất chuẩn sang thiết bị xuất chuẩn" trong trình bao ngay sau khi lệnh nohup được ban hành

Tôi đã thử Attempt3 với 2>&1. Cái này cũng được ghi vào tệp đầu ra. Lần này tôi không gặp lỗi "bỏ qua đầu vào và chuyển hướng thiết bị xuất chuẩn sang thiết bị xuất chuẩn". Nhưng tôi đã nhận được "nohup. bỏ qua đầu vào" là dòng đầu tiên trong nhật ký lỗi

Làm cách nào tôi có thể chuyển hướng tệp đầu ra Nohup không gặp lỗi?

Tôi đang tạo một tài liệu chính thức nêu chi tiết các bước cho một hoạt động quan trọng. Mặc dù các cách thực thi dưới đây hoạt động tốt, nhưng tôi muốn loại bỏ những lỗi khó hiểu đó. Bất kỳ ý tưởng làm thế nào tôi có thể thoát khỏi những lỗi đó?

Theo mặc định, tất cả các quy trình Linux chạy trên nền trước của thiết bị đầu cuối. Nhưng khi bạn đóng thiết bị đầu cuối và thoát phiên, tất cả các quy trình đó sẽ bị trình bao giết. Đôi khi bạn có thể cần chạy một số quy trình và tác vụ trong nền trong Linux. Nohup [viết tắt của No Hangup] là lệnh để chạy một quy trình và bỏ qua tín hiệu hủy do người dùng hoặc thiết bị đầu cuối gửi, cho dù đó là lệnh, phần mềm hay tập lệnh. Khi bạn chạy một quy trình bằng Nohup, quy trình sẽ tiếp tục chạy ngay cả khi bạn đóng thiết bị đầu cuối hoặc kết thúc phiên. Vì vậy, đôi khi bạn có thể cần xem đầu ra và thông báo lỗi của các quy trình Nohup. Trong những trường hợp như vậy, bạn có thể chuyển hướng đầu ra của Nohup sang tệp. Trong bài viết này, chúng ta sẽ xem xét cách chuyển hướng đầu ra Nohup sang tệp


Cách chuyển hướng đầu ra của Nohup sang tệp

Đây là cú pháp cơ bản cho lệnh Nohup

nohup [command] [ARGS]

Đây là một ví dụ để chạy tập lệnh trong nền

$ nohup /home/ubuntu/test.sh
nohup: ignoring input and appending output to nohup.out

Xin lưu ý, trong ví dụ trên, tập lệnh của chúng tôi sẽ tiếp tục chạy ở nền trước, ngay cả khi bạn đóng thiết bị đầu cuối hoặc kết thúc phiên. Nếu bạn muốn chạy nó ở chế độ nền, bạn cần thêm toán tử dấu và '&' sau lệnh

$ nohup /home/ubuntu/test.sh &

Theo mặc định, lệnh Nohup sẽ gửi đầu ra của các lệnh tới Nohup. out tập tin trong thư mục làm việc hiện tại của bạn. Bạn có thể xem nội dung của nó trong bất kỳ trình chỉnh sửa tệp nào

$ sudo cat nohup.out

Nếu bạn muốn chuyển hướng đầu ra của lệnh Nohup sang tệp, chỉ cần thêm nó vào cuối lệnh sau > toán tử chuyển hướng. Đây là một ví dụ

$ sudo nohup /home/ubuntu/test.sh > /home/ubuntu/data.txt
nohup: ignoring input and redirecting stderr to stdout

Trong trường hợp này, đầu ra của shell script sẽ được gửi tới /home/ubuntu/data. tập tin txt

Nếu bạn muốn gửi một quy trình Nohup ở chế độ nền nhưng cũng chuyển hướng đầu ra của nó sang tệp, bạn chỉ cần thêm dấu và sau tên tệp mà bạn đang gửi đầu ra Nohup, như minh họa bên dưới

$ sudo nohup /home/ubuntu/test.sh > /home/ubuntu/data.txt &

Nếu bạn cũng muốn gửi đầu ra tiêu chuẩn và lỗi tới tệp, hãy thêm bộ mô tả tệp 1 và 2 như hình bên dưới

$ sudo nohup /home/ubuntu/test.sh > /home/ubuntu/data.txt 2>&1 &

Trong ví dụ trên, tập lệnh shell sẽ được gửi để chạy ở chế độ nền, đầu ra, đầu ra tiêu chuẩn và thông báo tiêu chuẩn của nó sẽ được gửi tới /home/ubuntu/data. txt

Nếu bạn không muốn ghi lại bất kỳ đầu ra Nohup nào, thì chỉ cần chuyển hướng mọi thứ đến /dev/null

$ sudo nohup /home/ubuntu/test.sh > /dev/null 2>&1 &

Trong bài viết này, chúng tôi đã xem xét cách chuyển hướng đầu ra của Nohup sang tệp. Xin lưu ý, lệnh Nohup chỉ tiếp tục chạy quy trình ngay cả sau khi bạn đóng thiết bị đầu cuối hoặc phiên. Nó không gửi quá trình đến nền. Để làm được điều đó, bạn cần thêm toán tử dấu và ở cuối lệnh

2 >& 1 nghĩa là gì?

Biểu thức 2>&1 sao chép bộ mô tả tệp 1 sang vị trí 2 , vì vậy bất kỳ đầu ra nào được ghi vào 2 ["lỗi tiêu chuẩn"] trong .

Làm cách nào để chạy tập lệnh trong nền bằng Nohup?

Để chạy lệnh Nohup trong nền, thêm & [dấu và] vào cuối lệnh . Nếu lỗi tiêu chuẩn được hiển thị trên thiết bị đầu cuối và nếu đầu ra tiêu chuẩn không được hiển thị trên thiết bị đầu cuối cũng như không được gửi đến tệp đầu ra do người dùng chỉ định [tệp đầu ra mặc định là Nohup.

Tập tin Nohup out là gì?

Lệnh Nohup ngăn quá trình nhận tín hiệu này khi đóng hoặc thoát terminal/shell. Khi một công việc được bắt đầu hoặc thực thi bằng lệnh Nohup, stdin sẽ không khả dụng cho người dùng và Nohup. tệp out được sử dụng làm tệp mặc định cho thiết bị xuất chuẩn và thiết bị xuất chuẩn

Việc sử dụng lệnh Nohup trong Linux là gì?

Nohup, viết tắt của no hang up là một lệnh trong hệ thống Linux giữ cho các quy trình chạy ngay cả sau khi thoát khỏi trình bao hoặc thiết bị đầu cuối . Nohup ngăn các quy trình hoặc công việc nhận tín hiệu SIGHUP [Tín hiệu treo lên]. Đây là tín hiệu được gửi đến một quy trình khi đóng hoặc thoát khỏi thiết bị đầu cuối.

Chủ Đề