O local em que trabalho possui comandos que levam muito tempo para serem executados.
Existe um comando / utilitário que eu possa usar para me notificar quando a execução do comando terminar? Pode ser uma janela pop-up ou talvez um pouco de som.
command-line
unix
process
notifications
Utkarsh Sinha
fonte
fonte
fg;say "Job finished"
funcionaria. Mas ... existe alguma maneira de automatizar ainda mais - por exemplo, tocar a campainha ou notificar após a conclusão de qualquer trabalho que leva mais do que um limiar como um minuto? Existe uma variável de shell, por exemplo, no bash, que é o tempo decorrido do último comando?Respostas:
Geralmente, se você sabe disso antes de executar o comando, basta iniciá-lo com:
Isso executará
command-after
após a saída do comando anterior (independentemente do seu código de saída). O&
iniciará em segundo plano.Se você se preocupa com uma saída bem-sucedida ou com falha, use respectivamente:
Se o comando já foi iniciado, você pode usar o controle de tarefas para suspendê-lo, retorne-o ao primeiro plano com o
fg
acorrentado com sua notificação:Agora ... o que você quer fazer depois disso depende do seu ambiente.
Em qualquer sistema , você pode "tocar" a campainha do terminal . Depende do seu sistema exato, o que realmente funciona (BSD vs. GNU Linux, etc.), mas
tput bel
deve funcionar. Eu não poderia testá-lo com confiabilidade no momento, no entanto. Pesquise "campainha" para descobrir mais.No Mac OS X , você pode usar o AppleScript para abrir uma caixa de diálogo do Finder:
Você poderia dizer algo para você:
Ou você pode usar o sistema de notificação do Mountain Lion:
No GNOME ,
zenity
pode mostrar uma caixa de diálogo GTK, chamada na linha de comando. Veja também esta questão do Stack Overflow: mostrando uma caixa de mensagem de um script bash no linux . Pode ser instalado através do seu gerenciador de pacotes favorito.Algumas distribuições podem ter
xmessage
. Especificamente para ambientes GTK, existegxmessage
.Em ambientes de desktop que implementam a Especificação de notificações da área de trabalho , como Ubuntu e GNOME , existe um sistema de notificação que você pode acionar
notify-send
(parte delibnotify
).O KDE usa
kdialog
, por exemplo:fonte
(command; command-after) &
?Em sistemas tipo Unix, você pode tocar a campainha audível:
fonte
tput bel
Criei uma ferramenta simples, para o MacOS X, que faz exatamente isso. https://github.com/vikfroberg/brb
Instalação
Instruções
fonte
Para obter uma notificação sonora, você pode usar
spd-say "Some text"
. Exemplo:fonte
sudo apt-get install speech-dispatcher
. Ou use alternativas askubuntu.com/questions/501910/…Comecei a usar o notifu para notificações da Cygwin na área de trabalho. É um aplicativo de notificação de linha de comando para Windows.
Exemplo:
fonte
Eu escrevi
ntfy
exatamente para esse fim. É multiplataforma e pode enviar notificações automaticamente quando os comandos de execução longa terminam.Se você possui o Python
pip
(a maioria das distribuições Linux e MacOS possui), veja como instalá-lo e ativar as notificações automáticas:Confira em http://ntfy.rtfd.io
Além disso, também pode:
fonte
Para o Linux, há um truque bacana para fazer isso automaticamente, sem a necessidade de digitar um comando para notificação sempre.
Primeiro instale o autokey. Isso ajuda a definir ações para diferentes pressionamentos de tecla.
Agora, defina uma nova frase na tecla automática e atribua a tecla de atalho como Alt + Enter. Adicione esta frase:
Observe que uma nova linha após a primeira é importante.
Além disso, adicione um filtro de janela. Eu uso guake e terminal. Inclua qualquer outro terminal que você use.
Você Terminou!!
Agora, sempre que precisar receber notificações para um comando, execute-o usando Alt + Enter em vez de Enter / Return.
Fonte: http://dotpad.blogspot.in/2014/12/notification-when-command-finished.html
fonte
Embora outras respostas já abranjam a maioria das maneiras de obter notificações de um trabalho concluído, quero dar meus dois centavos desde que você fez sua pergunta no seguinte formato:
Eu tenho o mesmo problema. Às vezes, algo pode durar 15 minutos.
Eu tenho a seguinte função no meu .bashrc:
Isso usa o aplicativo Pushover para enviar uma notificação para o meu telefone. Dessa forma, posso almoçar ou entrar em uma reunião e ainda ser notificado sobre os trabalhos que iniciei no computador antes de sair.
Eu o uso da seguinte maneira:
Portanto, se o comando retornar um código de saída correto, o primeiro push será executado. Em caso de erro, o segundo será executado.
Ofc, você precisa criar um usuário no Pushover e registrar um aplicativo para enviar notificações em https://pushover.net/
espero que isso tenha ajudado!
fonte
Se você usar csh ou tcsh como seu shell interativo, poderá usar o
notify
comando:Você pode obter um efeito semelhante ao bash com
set -b
ouset -o notify
.Provavelmente isso não atende aos seus requisitos, pois tudo o que faz é imprimir uma mensagem; Acho que não pode ser configurado para abrir uma janela ou tocar a campainha.
fonte
Em sistemas com tentativa 'awk'
foi o único a trabalhar para mim.
fonte
\a
( resposta de trinth ).Se você estiver usando
npm
, o node-notifier fornece uma solução de plataforma cruzada .Pré-visualização
fonte
Gostaria de ter notado essa discussão anos atrás. Minha solução era essencialmente a mesma que a do slhck, mas escrevi um script. Eu uso isso o tempo todo. Postando aqui para compartilhá-lo.
Uma pequena explicação: a sequência
"\x1b]0;$msg\a"
é a sequência de escape ANSI para colocar a mensagem na barra de título da janela da qual foi executada. Às vezes, acho bastante útil ver de qual janela foi a origem da mensagem.fonte
Portanto, isso é bastante tarde, mas comecei a usar um sistema para fazer isso: Eu tenho um script bash que executa qualquer comando que for passado posteriormente a ele
http://somesh.io/2017/02/19/get-notified-when-long-commands-are-done-executing-on-ubuntu/
e então eu simplesmente prefixo n
fonte
Outra possibilidade é usar o
alert
Works on Linux.Dá uma notificação como na imagem. notificação de alerta
fonte
Eu criei um aplicativo que enviará uma notificação para o seu telefone Android quando um processo terminar, para que você não precise estar conectado ao seu computador.
Instale e adicione
;notifier.sh
ao final do seu comando.Por exemplo, se o seu comando fosse
make install
, você faria o seu comando:make install; notifier.sh
https://notifier.sh
https://play.google.com/store/apps/details?id=sh.notifier
fonte