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 exemplomate-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:
-
Aqui é apresentada uma implementação do mesmo script sobre SSH: Como executar arquivos de script (.sh) em um novo terminal após conectar-se ao servidor Ubuntu 16.04 via ssh?
-
Aqui são apresentadas mais explicações: O trabalho do Cron para executar o script python na reinicialização não funciona .