Как перенаправить журналы к системному журналу для приложения, которое еще не поддерживает системный журнал?

Угадайте, что это то, что вы хотите (заимствовал какой-то код из @ Mr.Spuratic)

Примечание. Это не мешает вам нажатию вкладку, используя полный путь (например, VIM / Directory / Contital / Lots / файлы < Tab>

function cd() {
  builtin cd "$@"
  local NOCOMPLETION=( "/" "/lib" )
  local IS_NOCOMPLETION=0
  for dir in "${NOCOMPLETION[@]}"
  do
    echo $dir
    if [[ $(pwd) == "$dir" ]]
    then
      echo "disable completion"
      bind "set disable-completion on"
      IS_NOCOMPLETION=1
      return
    fi                                                                                                                                                                                              
  done
  if [[ $IS_NOCOMPLETION -eq 0 ]]
  then
    echo "enable completion"
    bind "set disable-completion off"
  fi
}  
1
19.01.2015, 11:02
1 ответ

Обоснование , приведенное в спецификации POSIX:

Принятый синтаксис «-exec... {} +» был результатом интерпретации IEEE PASC 1003.2 # 210. Следует отметить, что это несовместимое изменение стандарта ISO/IEC 9899:1999. Например, следующая команда печатает все файлы с именем '-' после их имени, если они являются обычными файлами, и '+' в противном случае:

 find/-type f -exec echo {} - ';' -o -exec echo {} + ';'

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

Интерпретация PASC 1003,2 # 210 более подробно описывает историю -exec... {} + . Он существовал на нескольких Unix-системах до того, как был принят POSIX; отчет о дефекте отслеживает его до SVR4 (где он был в значительной степени недокументирован). Отчет о дефектах обосновывает несовместимое изменение как незначительное воздействие на практике:

Обратите внимание, что «+» рассматривается как специальное, только если оно немедленно следует «{}». Это сводит к минимуму вероятность возникновения проблем с существующие использования «+» в качестве аргумента с «-exec».

Хотя добавление поддержки для -exec... {} + приведет к разрыву некоторых соответствующих приложений, таких как приведенный выше пример, их меньше, чем если бы было разрешено -exec... {}... + .

Возможно, другой причиной ограничения {} в качестве последнего аргумента является простота реализации. Если бы {} было разрешено в любом месте аргумента, перечислять -exec , то программе find пришлось бы создавать командную строку, копируя статические аргументы, затем переменную часть, а затем другую статическую часть. Сложность минимальна, но реализаторам нравится резать углы. Поддержка нескольких замещаемых экземпляров {} (если будет работать -exec {} foo + , можно логически ожидать, что также будет значительно сложнее -exec {} foo {} + ).

-121--38598-

Избавиться от и . Это заставляет его уходить на второй план, Upstart думает, что процесс умер, а затем порождает новый. Просто получите exec-линию без амперсанда.

-121--161406-

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

Судя по документации rsyslog, можно определить модуль ввода для выполнения желаемого. Я видел подробности об этом здесь:

http://www.rsyslog.com/doc/master/configuration/modules/imfile.html

Он даже приводит несколько мизерных примеров.

0
28.01.2020, 01:48

Теги

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