Cách chuyển hướng đầu ra của một ứng dụng trong nền đến / dev / null


100

Tôi muốn chuyển hướng đầu ra được tạo từ một ứng dụng nền trong Linux sang / dev / null.

Tôi đang sử dụng trình soạn thảo văn bản kate và nó in tất cả các thông báo gỡ lỗi trên thiết bị đầu cuối mà tôi muốn chuyển hướng đến / dev / null.

Bất kỳ ý tưởng làm thế nào để làm điều đó?

Cảm ơn


Câu trả lời:


230

Bạn sử dụng:

yourcommand  > /dev/null 2>&1

Nếu nó chạy trong Nền, hãy thêm một &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1có nghĩa là chuyển hướng stdoutđến /dev/nullAND stderrđến nơi stdoutchỉ vào thời điểm đó

Nếu bạn muốn stderrđể xảy ra trên giao diện điều khiển và chỉ stdoutđi để /dev/nullbạn có thể sử dụng:

yourcommand 2>&1 > /dev/null

Trong trường hợp stderrnày được chuyển hướng đến stdout(ví dụ: bảng điều khiển của bạn) và sau đó bản gốc stdoutđược chuyển hướng đến/dev/null

Nếu chương trình không kết thúc, bạn có thể sử dụng:

nohup yourcommand &

Không có bất kỳ tham số nào, tất cả đầu ra sẽ được đưa vào nohup.out


cả hai công việc, nhưng có một khác biệt nhỏ, nhưng không hãy nhớ
evildead

ah ok, đã nhận và thêm phiên bản khác
evildead

Nếu đây là lệnh cuối cùng trong tệp bash, một điều mà tôi nhận thấy là nó rời khỏi bảng điều khiển lệnh gọi tệp mà không có dấu nhắc.
Dennis

@elig chuyển hướng đầu ra của một ứng dụng đã chạy là không thể imo, hoặc ít nhất là không dễ dàng như vậy, vì chuyển hướng qua dup2()xảy ra ngay sau đó fork()nhưng trước đó exec*(). Khi exec*()đã thực thi chương trình, trình bao không có khả năng chuyển hướng đầu ra của quá trình đó. Hãy sửa cho tôi nếu tôi sai, nhưng tôi không biết về một trình bao đã triển khai chức năng như vậy.
evildead

3

Những điều này cũng sẽ chuyển hướng cả hai:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

mặc dù hướng dẫn sử dụng bash nói rằng cái đầu tiên được ưu tiên hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.