Эта статья должна показать, как работает функция "отладка по требованию" в rsyslog. Она была протестирована и проверена с помощью rsyslog 6.1.0 (v6-Devel) на Fedora 13 (шаги могут отличаться на других ОС). Предполагается, что rsyslog уже работает в системе. Замечания по установке и настройке смотрите в документации. Отладка по требованию доступна с версии 4.5.7.
Чтобы эта опция заработала, ее нужно сначала включить. Для этого нужно включить ее и указать путь для файла журнала отладки. Откройте терминал с правами root и выполните следующие команды:
export RSYSLOG_DEBUG="DebugOnDemand NoStdOut"
export RSYSLOG_DEBUGLOG=/somepath/example.log
Первая опция включает "отладку по требованию" без стандартного вывода. Это необходимо для того, чтобы она была отключена при запуске службы. Вторая опция указывает путь и имя файла журнала.
Теперь нам необходимо остановить службу rsyslog. Используйте следующую команду:
/etc/rc.d/init.d/rsyslog stop
Теперь мы остановили службу и должны запустить ее снова. В текущей конфигурации нам нужно запустить rsyslog как приложение переднего плана. Так как настроить его таким образом намного проще, rsyslog должен быть приложением переднего плана для работы "отладки по требованию", а не фоновой службой. Запустите его снова как приложение переднего плана с помощью следующей команды:
rsyslogd -n
Откройте второй терминал (снова с правами root), чтобы мы могли включить или отключить "отладку по требованию". Используйте эту команду:
kill -USR1 `cat /var/run/rsyslogd.pid`
Использование этой команды один раз включит режим отладки. Повторное использование отключит его. Обратите внимание, что вам обязательно нужен "-USR1″, иначе rsyslog будет действительно убит. Далее убедитесь, что вы используете обратные знаки. Это очень важно.
Вот в принципе и все. Теперь вы можете просмотреть ваши файлы журнала "отладки по требованию".
$PATH
просто оценивает переменную и пытается запустить ее как команду, поскольку нет ни аргументов, ни фактического имени команды, тогда он жалуется как:no such file or directory
.
echo $PATH
явно дает команду для отображения содержимого переменной $PATH
.
Первое слово в простой командной строке — это команда -действие. (Есть более сложные варианты, но пока считайте это достаточной истиной.)
В вашем первом примере «команда» — это значение переменной $PATH
, которая на самом деле не является командой, поэтому bash
жалуется, что не может найти ее для запуска. (Оболочка ищет введенную вами команду в списке каталогов, разделенных двоеточием -, указанном в переменной $PATH
.)
Во втором примере «команда» — это глагол echo
со значением $PATH
в качестве аргумента. Команда echo
выводит свои аргументы в стандартный вывод , так что вы видите значение $PATH
на экране.
Если ввести команду
$ cat food
вы получите сообщение об ошибке
cat: food: No such file or directory
Если ввести команду
$ cp abc def
вы получите сообщение об ошибке
cp: cannot stat ‘abc’: No such file or directory
Это оченьоченьраспространено для сообщений об ошибках в Unix & Linux. начать с названия программы, выдавшей (т. е. написавшей )их. Итак, когда вы набираете
$ abc:def
в оболочку bash, вполне естественно, что сообщение об ошибке
-bash: abc:def: command not found
начинается с имени bash
, потому что bash выдал это сообщение. Одна часть, которая немного сложна заключается в том, что там написано -bash
вместо bash
. Это происходит потому, что bash является оболочкой, и, в частности,оболочка для входа в систему. По соглашению имена команд входа в систему всегда начинаются с -
.
Дополнительные сведения об этом см. в :
..profile
и .bash_profile
игнорируются при запуске tmux из .bashrc
?exec $SHELL -l
?