$ PATH сам по себе vs echo $ PATH

Эта статья должна показать, как работает функция "отладка по требованию" в 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 будет действительно убит. Далее убедитесь, что вы используете обратные знаки. Это очень важно.

Вот в принципе и все. Теперь вы можете просмотреть ваши файлы журнала "отладки по требованию".

8
24.09.2017, 10:28
3 ответа

$PATHпросто оценивает переменную и пытается запустить ее как команду, поскольку нет ни аргументов, ни фактического имени команды, тогда он жалуется как:no such file or directory.

echo $PATHявно дает команду для отображения содержимого переменной $PATH.

4
27.01.2020, 20:08

Первое слово в простой командной строке — это команда -действие. (Есть более сложные варианты, но пока считайте это достаточной истиной.)

В вашем первом примере «команда» — это значение переменной $PATH, которая на самом деле не является командой, поэтому bashжалуется, что не может найти ее для запуска. (Оболочка ищет введенную вами команду в списке каталогов, разделенных двоеточием -, указанном в переменной $PATH.)

Во втором примере «команда» — это глагол echoсо значением $PATHв качестве аргумента. Команда echoвыводит свои аргументы в стандартный вывод , так что вы видите значение $PATHна экране.

15
27.01.2020, 20:08

Если ввести команду

$ 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 является оболочкой, и, в частности,оболочка для входа в систему. По соглашению имена команд входа в систему всегда начинаются с -.

Дополнительные сведения об этом см. в :

.
13
27.01.2020, 20:08

Теги

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