Enviar notificação do systemd

0

No final de um script que escrevi, desejo enviar uma notificação para saber quando termina. O conteúdo do script não é importante, exceto a parte de notificação.

Aqui está a parte importante do script:

#!/bin/bash

USER=<username>
USERID='id -u $USER'

sudo -u $USER bash -c "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$USERID/bus notify-send -t 5000 -u normal -i /usr/share/icons/Adwaita/32x32/devices/drive-removable-media.png 'Ah! the element of surprise'"

Quando eu o executo no meu terminal, funciona bem.

Eu criei um arquivo de serviço em /etc/systemd/system com o seguinte conteúdo:

[Unit]
Description=Test notification
Requires=home.mount
After=home.mount

[Service]
ExecStart=/home/alexis/Personnalisation/Scripts/test.notification.sh
Type=oneshot

[Install]
WantedBy=graphical.target

Quando executo o sudo systemctl start test.notification , funciona bem.

O problema surge quando o systemd é executado depois que eu corro systemd enable test.notification .

Se eu adicionar outras coisas ao script, elas serão concluídas.

A descrição do meu serviço está errada? Minha instrução de notificação está faltando alguma coisa?

    
por A.D. 02.07.2017 / 17:33

1 resposta

1

O problema é que o systemd é executado com um ambiente mínimo e nem todos os envvar são conhecidos durante a execução do script. Para fazer isso funcionar, eu mudei bash por /bin/bash .

Descobri o que estava errado executando o script sem o ambiente:

env -i /path/to/script

Ele retornou o seguinte erro:

sudo: bash: command not found

Esse erro é auto-explicativo e me ajudou a encontrar o problema.

    
por 04.07.2017 / 22:39