Как я могу предотвратить создание файла ~ / nohup.out nohup?

16

Я использую команду $ nohup ...для запуска приложения в фоновом режиме, чтобы потом закрыть окно терминала.

После выполнения он создает файл ~/nohup.out.

Пример:

orschiro@x230:~$ nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py"
nohup: ignoring input and appending output to 'nohup.out'

Как я могу предотвратить nohupсоздание nohup.out?

orschiro
источник
2
Вы могли бы также рассмотреть byobu. :)
Андреа Лаззаротто
Спасибо, @AndreaLazzarotto! Можете ли вы дать мне пример, как его использовать?
Орширо
2
Ну, я предлагаю вам посмотреть видео здесь: byobu.co В основном, для того, что вы хотите сделать, вы просто запускаете byobu, запускаете все, что хотите, затем нажимаете, F6и все готово. Вы можете вернуться к нему, запустив byobuснова.
Андреа Лаззаротто
Отлично! Вы можете добавить это в качестве официального ответа?
Орширо
Технически мое предложение вообще не отвечает на ваш вопрос, это просто альтернатива. : D
Андреа Лаззаротто

Ответы:

20

Вы можете перенаправить вывод куда угодно, например:

nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1

перенаправление предотвращает nohup.outсоздание выходного файла по умолчанию . /dev/nullзабвение, так что если вы вообще не хотите получать данные, отправьте их туда.

В Баш вы можете сократить >/dev/null 2>&1до&>/dev/null

Для часто используемых программ я создаю псевдоним (и добавляю его к своему .bashrc), например

alias show_state='nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1'

Теперь все, что я должен напечатать, show_state

Занна
источник
2
@orschiro: Через несколько лет это не будет загадочным, и вы запомните это;) Я предлагаю придерживаться этого, потому что использование псевдонимов означает, что вы не получите этот опыт, и зная, как операторы перенаправления BASH работают с самого верха вашей головы является ключевым навыком.
Легкость гонок с Моникой
Не лучше ли это как функция? Что то типа show_state () { /bin/bash -c "$@" &>/dev/null }? (Предупреждение: плохой синтаксис и, вероятно, не будет работать! Это просто пример!). Один придира: почему, show_stateкогда вы выбрасываете выходные данные nohup?
Исмаэль Мигель
Я не знаю, что делает скрипт @IsmaelMiguel, но я предполагаю, что это индикатор со значком в трее, а не для вывода «state» (каким бы он ни был) на стандартный вывод. Конечно, функция может быть веселее, чем псевдоним ^. ^
Zanna
О, я понял! Извините, не увидел название .pyфайла. И да, функция веселее. У меня это плохо функция , написанная на столе Debian: shutup() { source "$@" >/dev/null 2>&1 & }. И это работает. Может быть, вы могли бы предложить что-то похожее, но намного лучше?
Исмаэль Мигель
Я никогда не знал, что это &>сработало (и, на мой взгляд, это похоже на фон плюс перенаправление stdout). Я всегда учился этому как >&. Это стандарт?
Random832