7 votes

Existe-t-il un moyen de faire en sorte que zsh exécute une commande après REPORTTIME ?

Si un processus prend plus de temps que REPORTTIME, zsh imprime l'heure à laquelle il se termine. Existe-t-il un moyen de lui faire exécuter une commande personnalisée en plus de celle-ci (j'aimerais utiliser notify send pour m'informer de la fin de l'exécution du processus) ?

5voto

smoku Points 61

Je viens de penser la même chose. J'ai fait une recherche rapide sur Google et j'ai trouvé こん ; je l'ai un peu adapté. Mettez ça dans votre zshrc :

if [[ -x `which notify-send` ]]; then
    notify-preexec-hook() {
        zsh_notifier_cmd="$1"
        zsh_notifier_time="`date +%s`"
    }

    notify-precmd-hook() {
        local time_taken

        if [[ "${zsh_notifier_cmd}" != "" ]]; then
            time_taken=$(( `date +%s` - ${zsh_notifier_time} ))
            if (( $time_taken > $REPORTTIME )); then
                notify-send "task finished" \
                    "'$zsh_notifier_cmd' exited after $time_taken seconds"
            fi
        fi
        zsh_notifier_cmd=
    }
fi

[[ -z $preexec_functions ]] && preexec_functions=()
preexec_functions=($preexec_functions notify-preexec-hook)

[[ -z $precmd_functions ]] && precmd_functions=()
precmd_functions=($precmd_functions notify-precmd-hook)

J'en suis plutôt satisfait ! :)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X