Есть ли эквивалент выполнения команды zsh для выполнения функции после завершения команды?
Я ищу способ отправить себе уведомление о любом процессе, который занимает более 60 секунд. Zsh имеет прекрасную возможность печатать сводку ресурсов, используемых для каждой команды, если команда занимает больше времени, чем значение, заданное в REPORTTIME секундах. Из того, что я могу сказать, единственный доступный вариант - это распечатать формат в TIMEFMT.
(Более конкретно, я хочу отправить себе уведомление с помощью https://pushover.net/, если какой-либо процесс, запущенный в отдельном сеансе tmux, завершится за 60 секунд.)
notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"
?Ответы:
Вы можете использовать,
preexec
чтобы начать отсчет времени с момента выполнения, а затем,precmd
который запускается после завершения выполнения команды и до появления запроса, чтобы оценить, хотите ли вы уведомление или нет (и отправить его).источник