Чи можу я змінити ім'я `nohup.out`?


254

Коли я запускаю nohup some_command &, вихід переходить до nohup.out; man nohupкаже, щоб подивитися, info nohupщо в свою чергу говорить:

Якщо стандартний вихід є терміналом, стандартний вихід команди додається до файлу 'nohup.out'; якщо цього неможливо записати, він додається до файлу '$ HOME / nohup.out'; і якщо цього неможливо записати, команда не виконується.

Але якщо у мене вже є одна команда, що використовує nohupвихід, /nohup.outі я хочу запустити іншу, nohupкоманду, чи можу я переспрямувати вихід nohup2.out?

Відповіді:


416
nohup some_command &> nohup2.out &

і вуаля.


Старіший синтаксис для версії Bash <4:

nohup some_command > nohup2.out 2>&1 &

4
@ismail, якщо я розумію, це спрямовує вихід із stdout та nohup.out, у nohup2.out. Тоді що 2>&1&робити?
Девід Лебоуер

12
2>&1переспрямовує stderrна той самий вихідний файл, stdoutщо і в цьому випадкуnohup2.out
ismail

17
У Bash 4 два перенаправлення можна скоротити як один &> nohup2.out.
ефемія

1
Я спробував &> nohup2.out, і це працює, але як ви можете сказати свою версію bash?
monkut

9
@monkut bash --version
ismail

58

Чомусь наведена відповідь не спрацювала для мене; Я не повернувся до командного рядка після його запуску, як я очікував із затримкою &. Натомість я просто спробував

nohup some_command > nohup2.out&

і працює так, як я цього хочу. Залишаючи це тут, якщо хтось інший опинився в тій же ситуації. Запуск Bash 4.3.8 для довідки.


12

Оскільки обробники файлів вказують на i-вузли (які зберігаються незалежно від імен файлів) у системах Linux / Unix, Ви можете перейменовувати за замовчуванням nohup.outбудь-яке інше ім'я файлу будь-коли після запускуnohup something& . Тому також можна зробити наступне:

$ nohup something&
$ mv nohup.out nohup2.out
$ nohup something2&

Тепер somethingдодає рядки до nohup2.outта something2до nohup.out.


10

Наведені вище методи видалятимуть дані вихідних файлів щоразу, коли ви запустите команду над nohup.

Щоб додати вихід у визначений користувачем файл, ви можете використовувати >>в команді nohup.

nohup your_command >> filename.out &

Ця команда додасть весь вихід у файл, не видаляючи старі дані.

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