Да, можно сделать это.
Необходимо изучить dnsmasq. Это разработано для удовлетворения этой самой потребности.
Сервером DHCP по умолчанию на Linux обычно является ISC dhcpd. Возможно заставить его работать в этой роли также, но немного более трудно настроить, и это должно быть вручную настроено для получения интеграции сервера DNS, которую Вы получаете бесплатно с dnsmasq.
Я получаю то же поведение, которое Вы описываете. На Ubuntu 11.10
top | grep "my_program" > top.log
не производит вывода.
Я полагаю, что причина этого состоит в том, что grep буферизует свой вывод. Чтобы сказать GNU grep выкладывать вывод линию за линией, используйте --line-buffered
опция:
top | grep --line-buffered "my_program" > top.log
См. также это ТАК вопрос для других потенциальных решений.
необходимо использовать:
top -n 1 | grep "blah" > top.log
вершина выполнений "-n 1" для одного повторения и затем выходит вместо того, чтобы постоянно обновить каждые несколько секунд
так как Вы просто ищете одну строку, хотя PS был бы лучшим инструментом для использования.
Хотя обе работы для меня, я думаю, что совет Lev Levitsky является корректным. Используйте -b
аргумент.
Существует хороший шанс, что перенаправление вывода является проблемой и что Вы ничего не получаете через stdout, так попробуйте это вместо этого:
top -b 2>&1 | grep "my_program" > top.log
Действительно обратите внимание, что у Вас могли бы быть проблемы с выводом, буферизующим также. Ваша оболочка не будет постоянно писать в файл, таким образом, это могло требовать времени для top.log
заполниться.
: Мой обходной путь к этой проблеме был:
while :;do top -b -n 1 | grep "my_program" >> top.log;done &
Таким образом, я мог бы иметь работающий монитор в фоновом режиме для моей_программы и хранить все результаты в файле top.log.
--line-buffered
решает проблему. – 26.09.2012, 23:01-b
опция является все еще хорошим советом от Lev Levitsky, также. Это решило некоторые проблемы кодирования с файлом журнала. – 26.09.2012, 23:08