Як перенаправити вихід програми у фоновому режимі на / dev / null


100

Я хотів би перенаправити вихідний результат, створений з фонової програми в Linux, на / dev / null.

Я використовую текстовий редактор kate, і він друкує всі повідомлення про налагодження на терміналі, які я хотів би перенаправити на / dev / null.

Будь-яка ідея, як це зробити?

Дякую


Подивіться цю сторінку. xaprb.com/blog/2006/06/06/what-does-devnull-21-mean
richard.g

Відповіді:


230

Ти використовуєш:

yourcommand  > /dev/null 2>&1

Якщо він повинен працювати у фоновому режимі, додайте &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1означає перенаправлення stdoutна /dev/nullІ stderrна місце, де stdoutв цей час вказуються точки

Якщо ви хочете stderrз’являтися на консолі і лише stdoutпереходите до /dev/nullвас, ви можете використовувати:

yourcommand 2>&1 > /dev/null

У цьому випадку stderrпереспрямовується на stdout(наприклад, вашу консоль), а потім оригінал stdoutпереспрямовується на/dev/null

Якщо програма не припиняється, ви можете використовувати:

nohup yourcommand &

Без жодних параметрів усі вихідні дані в nohup.out


обидва працюють, але є незначна різниця, але не пам’ятайте
пам’ятайте

ах добре дісталося і додав іншу версію
evildead

Якщо це остання команда у файлі bash, я помітив одне, що вона залишає командну консоль, яка викликала файл без запиту.
Денніс

@elig перенаправлення виводу вже запущеної програми неможливо imo або, принаймні, не так просто, тому що перенаправлення через dup2()відбувається безпосередньо після, fork()але раніше exec*(). Після exec*()виконання програми оболонка не має можливості перенаправляти вихід цього процесу. Виправте мене, якщо я помиляюся, але я не знаю про оболонку, яка реалізувала таку функціональність.
злий мертвий

3

Вони також переспрямують обидва:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

хоча інструкція з bash говорить, що перша є кращою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.