Сбрасывание силы вывода в файл, в то время как сценарий удара все еще работает

Я всегда включаю все предупреждения, и затем устанавливаю мой проект прекратить создавать, если существуют какие-либо предупреждения.

, Если существуют предупреждения, то необходимо проверить каждого, чтобы гарантировать, что нет никакой проблемы. Выполнение этого много раз является пустой тратой времени. Не выполнение, которое это подразумевает, приведет к ошибкам, вползающим в Ваш код.

существуют способы удалить предупреждение (например, #pragma argsused).

Позволяют компилятору сделать работу.

71
задан Nic Hartley 15 June 2015 в 13:04
поделиться

5 ответов

Сам bash никогда не будет записывать какие-либо данные в ваш файл журнала. Вместо этого команды, которые он вызывает как часть сценария, будут по отдельности записывать выходные данные и сбрасываться всякий раз, когда им это нравится. Итак, ваш вопрос на самом деле заключается в том, как заставить команды в сценарии bash сбрасываться, и это зависит от того, что они собой представляют.

27
ответ дан 24 November 2019 в 13:02
поделиться

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

Например, в Perl это можно сделать, установив:

$| = 1;

См. perlvar для получения дополнительной информации по этому поводу.

3
ответ дан 24 November 2019 в 13:02
поделиться

Не знаю, сработает ли это, но как насчет вызова sync ?

-2
ответ дан 24 November 2019 в 13:02
поделиться

хочешь нет, перенаправление работает так.

В вашем случае вывод (то есть ваш сценарий завершен) вашего сценария перенаправлен в этот файл.

Вы хотите добавить эти перенаправления в свой сценарий.

-3
ответ дан 24 November 2019 в 13:02
поделиться

У меня была такая проблема с фоновым процессом в Mac OS X с использованием StartupItems. Вот как я ее решил:

Если я сделаю sudo ps aux, то увижу, что mytool запущен.

Я обнаружил, что (из-за буферизации) при выключении Mac OS X mytool не передает вывод команде sed. Однако если я выполню sudo killall mytool, то mytool передаст вывод команде sed. Поэтому я добавил кейс stop в StartupItems, который выполняется при выключении Mac OS X:

start)
    if [ -x /sw/sbin/mytool ]; then
      # run the daemon
      ConsoleMessage "Starting mytool"
      (mytool | sed .... >> myfile.txt) & 
    fi
    ;;
stop)
    ConsoleMessage "Killing mytool"
    killall mytool
    ;;
-2
ответ дан 24 November 2019 в 13:02
поделиться
Другие вопросы по тегам:

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