Como posso mostrar mensagens de envio de notificação acionadas pelo crontab? [duplicado]

3

test.sh: /usr/bin/notify-send "test"

Os seguintes trabalhos: bash ~/Documents/test.sh

MAS o crontab nunca mostra a notificação. Por quê?

*/1 * * * * bash ~/Documents/test.sh

    
por membersound 20.11.2017 / 12:50

2 respostas

3

Para executar qualquer aplicativo relacionado à GUI do Cron, você deve exportar algumas variáveis de ambiente de área de trabalho. A solução abaixo é com base nesta resposta , onde são fornecidos mais detalhes.

Como iniciar qualquer aplicativo relacionado à GUI de crontab no Ubuntu 16.04, 17.10 e outras distribuições do Ubuntu com o Gnome

Crie um script de inicialização que exportará as variáveis de ambiente da área de trabalho e iniciará seu aplicativo. Vamos chamá-lo de gui-launcher . Seu conteúdo deve ser ( referencias: [1] , [2] e [3] ):

#!/bin/bash -e

# NAME: gui-launcher

# Check whether the user is logged-in
while [ -z "$(pgrep gnome-session -n -U $UID)" ]; do sleep 3; done

# Export the current desktop session environment variables
export $(xargs -0 -a "/proc/$(pgrep gnome-session -n -U $UID)/environ")

# Execute the input command
nohup "$@" >/dev/null 2>&1 &

exit 0
  • Para outros ambientes de desktop, altere gnome-session nesta parte $(pgrep gnome-session -n -U $UID) com o nome do processo do DE em uso, por exemplo mate-session . Uma lista dos mais Ubuntu DE é apresentada aqui . Lubuntu implementação do mesmo script - aqui . O script pode ser usado para iniciar o aplicativo GUI a partir da sessão TTY ou SSH na sessão Desktop do usuário atual.
  • Torne o arquivo executável: chmod +x gui-launcher .
  • O script funcionará até que o usuário esteja conectado, incluindo uma tela bloqueada.
  • Por favor, não modifique e execute o script como root. Pode ser prejudicial para o sistema!

Em seguida, use-o em crontab desta forma:

*/1 * * * * /full/path/to/gui-launcher "/full/path/to/the-targer-application"

Veja como funciona no Ubuntu 17.10 no Wayland:

por pa4080 20.11.2017 / 13:58
1

O ambiente para o cron e seu usuário comum pode ser diferente.

Quando você usa scripts no cron, é melhor colocar o caminho completo para eles.

    
por Anton Shevchuk 20.11.2017 / 12:55