Дополнительный вывод при выполнении команд из zsh в Guake

Это можно сделать с помощью инструмента с открытым исходным кодом monit !

Давайте добавим следующее в /etc/monit.conf :

check file test with path /path/tp/test
    if changed checksum then exec "/bin/bash /path/to/script.sh" as uid a_user_id and gid a_group_id


Мы должны убедиться, что пользователь с a_user_id as id имеет достаточные привилегии to
/ path / to / test file и
чтение, выполнение привилегий для /path/to/script.sh

Когда мы меняем monit. conf
затем как root:

monit reload 

для получения изменений в демон monit

watch monit status 

может отображать изменения в отчете monit при запуске события

Например, в этом примере
при изменении содержимого файла / path / to / test будет запущен сценарий /path/to/script.sh

По умолчанию monit просыпается каждые 30 секунд и выполняет настроенные проверки.

Чтобы проверить добавление нового файла в каталог или изменение файла в каталоге:

check directory test2 with path /path/to<br/>
      if changed timestamp then exec "/bin/bash /path/to/script.sh" as uid a_user_id and gid a_group_id

Я считаю, что эту конфигурацию можно легко обновить чтобы соответствовать потребностям вашего приложения!

2
19.08.2017, 00:25
1 ответ

Проблемы такого рода возникают, когда что-то выводит данные на стандартный вывод, когда этого делать не следует, и, таким образом, обычно искажает либо приглашение Zsh Line Editor, либо вывод команды. Ошибочная печать, вероятно, выполняется из-за функции ловушки, которую редактор строк запускает при выполнении пользовательской команды. Возможно, вы сможете найти оскорбительный вызов print/echo, выполнив поиск в телах функций-ловушек:

whence -f precmd $precmd_functions preexec $preexec_functions

Это функции-ловушки, задокументированные в http://zsh.sourceforge.net/Doc/Release/Functions.html# Хуки-функции.

Как упоминалось в предыдущих комментариях, некорректный вызов print/echo, вероятно, является неудачной попыткой связаться с терминалом, а не вывести его на стандартный вывод. Обычно я бы "если бы исключил" оскорбительную строку кода примерно так:

if [[ $TERM != guake ]]; then
    print -n "\E]..."
fi

, но кажется, что Гуаке неправильно устанавливает ТЕРМИН. Надеюсь, вы сможете найти другой способ определить, какой терминал работает. Или, возможно, просто очистите/измените эти функции и массивы функций в вашем .zshrc.

1
27.01.2020, 22:18

Теги

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