Cách chuyển hướng đầu ra của chương trình đang chạy sang / dev / null


19

Tôi biết rằng để chặn đầu ra của một chương trình, tôi có thể chuyển hướng nó tới /dev/null, ví dụ để ẩn tất cả các thông báo lỗi và cảnh báo khỏi chromium, tôi có thể khởi động chương trình như thế này

chromium-browser 2> /dev/null &

Tuy nhiên, nếu tôi quên mất các thông báo lỗi và gõ

chromium-browser &

(điều này khá khó chịu khi chúng xuất hiện ở giữa một lệnh) Tôi không biết phải làm gì ngoại trừ việc dừng ứng dụng và khởi động lại đúng cách.

Tôi có thể bằng cách nào đó chuyển hướng đầu ra lỗi mà không cần khởi động lại ứng dụng?

Câu trả lời:


8

Bạn cũng có thể khởi chạy trình duyệt với nohup và sau đó đóng cửa sổ terminal bằng cách sau:

nohup chromium-browser &

Bằng cách này, trình duyệt sẽ khởi chạy và tách khỏi bảng điều khiển, sau đó có thể được đóng lại một cách lặng lẽ.


2
điều đó có thể chấp nhận được, ngoại trừ thực tế là tôi phải nhớ gõnohup
phunehehe

5
@phu Trên zsh ít nhất bạn có thể đặt setopt nohupvào .zshrcvà nó sẽ không làm hỏng mọi thứ bạn chạy; Tôi không chắc chắn về các loại đạn pháo khác
Michael Mrozek

Vâng, tuyệt, tôi thích nó theo cách này!
phunehehe

3
Hoặc bạn có thể tạo một bí danh ... bí danh chromium = nohup chromium
Pablo Olmos de Aguilera C.

22

Điều này đã được trả lời ở đây: ở đây bởi vladr . Câu trả lời là (trích dẫn):

  • đính kèm vào quy trình được đề cập bằng gdb và chạy:
  • p dup2 (mở ("/ dev / null", 0), 1) (đối với chuyển hướng xuất chuẩn)
  • p dup2 (mở ("/ dev / null", 0), 2) (để chuyển hướng stderr)
  • tách ra
  • bỏ

Tôi đã thử nó trên đoạn script sau:

[phiên bản sau bình luận đầu tiên:]

ngủ 10 # để tôi có thời gian gắn vào quy trình
if ["$ sonorfather" == "cha"] # tránh đệ quy vô hạn 
sau đó 
   sonorfather = con trai ./test & 
fi 

trong khi sự thật 
làm 
   tiếng vang "stdout $ sonorfather" 
   tiếng vang "stderr $ sonorfather"> & 2 
   ngủ 1 
làm xong 

Tôi đã vô hiệu hóa đầu ra stderr trước khi quá trình con trai được tạo, đây là đầu ra:

cha khó tính 
con trai mập mạp 
cha khó tính 
con trai mập mạp 
[và cứ thế ...]. 

Tôi hy vọng câu trả lời này cho câu hỏi của bạn: stderr quá trình con trai cũng được chuyển hướng.


3
điều đó rất tốt, nhưng sau đó tôi có thể gặp vấn đề với crom, vì nó sinh ra một quy trình mới cho mỗi tab trình duyệt, dù sao để giải quyết?
phunehehe

Chỉnh sửa bài viết của tôi để trả lời bạn.
Mike Perdide

Có vẻ như tôi sẽ cần chuyển hướng đầu ra trước khi các tiến trình con được tạo? Cảm ơn về kiến ​​thức, nhưng liên quan đến sự phức tạp mà tôi sẽ đi cùng nohup:)
phunehehe

Về mặt kỹ thuật, điều này rò rỉ mô tả tập tin trùng lặp cho /dev/null, nhưng trong thực tế, điều đó không ảnh hưởng đáng kể đến bất cứ điều gì.
Kevin

6

Bạn cũng có thể thiết lập bí danh chromium-browserđể thay vì chạychromium-browser 2> /dev/null

ví dụ: nếu bạn đang sử dụng bash, hãy chỉnh sửa /home/username/.bashrc và thêm dòng:

chromium-browser='chromium-browser 2> /dev/null'

hoặc tốt hơn

chrome='chromium-browser 2> /dev/null'

và lưu một số tổ hợp phím.

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.