Как перезаписать nohup.out?

Я использую nohup для выполнения команды на удаленном сервере в фоновом режиме и использую файл nohup.out для проверки хода выполнения. Могу ли я настроить nohup на перезапись nohup.out , поскольку он содержит только одну строку (последний стандартный вывод)?

0
29.01.2017, 00:15
3 ответа

Нет варианта того, что вы просите, ни во внешней nohup , ни во внешней реализации оболочки. Пара альтернативных идей:

  • Обрезать файл с перенаправлением. Примерно так: nohup firefox 2> & 1> nohup.out & . Обычно то же самое, но только вручную.

  • rm перед запуском новой команды. Примерно так: rm nohup.out; nohup firefox 2> & 1 &

0
28.01.2020, 02:46

Из комментариев кажется, что пользователь хочет иметь возможность проверить выходной файл, а затем очистить его перед повторной проверкой.

Для этого запустите программу с >>перенаправлением на выходной файл:

$ somecommand >>logfile &

Затем прочтите logfileкак хотите. Если вы хотите очистить файл, просто выполните

$ >logfile

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

Мы используем >>, чтобы открыть файл в «режиме добавления». Это означает, что любая новая запись в файл всегда будет происходить в (текущем )конце файла.

Если бы мы использовали >, а затем усекли файл, новые записи в файл произошли бы в той точке файла, где они были первоначально размещены. Это означает, что область между началом файла и новым содержимым была бы заполнена нулевыми -байтами.

2
28.01.2020, 02:46

Просто используя nohupбез перенаправления файл nohup.outзаписывается в append mode.

Поэтому усечение файла после проверки командой

> nohup.out

устанавливает нулевую длину файла, а последующий вывод программы записывается в nohup.outв начале файла.

Это именно то, о чем говорится в приведенном выше ответе на вопрос -, и это работает. Это может быть полезно для длительного вывода, когда после проверки текущего состояния прогона содержимое файла больше не представляет интереса.

Как указывалось в вопросе, вывод программы - это всего одна строка, поэтому rm nohup.outперед следующим вызовом дает тот же результат, что и > nohup.out, с той лишь разницей, что файл не существует после его удаления, пока он существует. в противном случае остается файлом нулевой длины -.

1
14.03.2020, 08:49

Теги

Похожие вопросы