Estou tentando executar um script python (/home/user/Desktop/file.py) na inicialização fazendo um script bash (/etc/init.d/file.bash) que executa o script python
#!/bin/bash
case "$1" in
start)
echo "Starting"
/home/user/Desktop/file.py
;;
stop)
echo "Stopping"
killall python3.5
;;
*)
echo "Usage: service file.bash{start|stop}"
exit 1
;;
esac
exit 0
e fiz um link simbólico de file.bash e o coloquei em /etc/rc5.d/S{NN}file.bash mas, por alguma razão, quando o serviço é iniciado, recebo um erro
● file.service
Loaded: loaded (/etc/init.d/file.bash; bad; vendor preset: enabled)
Active: active (exited) since Mon 2017-12-11 14:49:45 EET; 29min ago
Docs: man:systemd-sysv-generator(8)
Process: 1285 ExecStart=/etc/init.d/file.bash start (code=exited, status=0/SUCCESS)
Dec 11 14:49:45 ****-PC file.bash[1285]: protocol_display.Display.__init__(self, *args, **keys)
Dec 11 14:49:45 ****-PC file.bash[1285]: File "/usr/local/lib/python3.5/dist-packages/Xlib/protocol/display.py", line 85, in __init__
Dec 11 14:49:45 ****-PC file.bash[1285]: name, host, displayno, screenno = connect.get_display(display)
Dec 11 14:49:45 ****-PC file.bash[1285]: File "/usr/local/lib/python3.5/dist-packages/Xlib/support/connect.py", line 72, in get_display
Dec 11 14:49:45 ****-PC file.bash[1285]: return mod.get_display(display)
Dec 11 14:49:45 ****-PC file.bash[1285]: File "/usr/local/lib/python3.5/dist-packages/Xlib/support/unix_connect.py", line 61, in get_display
Dec 11 14:49:45 ****-PC file.bash[1285]: raise error.DisplayNameError(display)
Dec 11 14:49:45 ****-PC file.bash[1285]: Xlib.error.DisplayNameError: Bad display name ""
Dec 11 14:49:45 ****-PC systemd[1]: Started file.service.
quando eu inicio o arquivo .bash ( $ /etc/init.d/file.bash start
) Eu não recebo nenhum erro
Estou usando o Ubuntu 16.04.1 e o python3.5
o erro está em ( from pynput.keyboard import Key, Listener
)
#!/usr/bin/python3.5
import socket
import subprocess
import time
import os
from pynput.keyboard import Key, Listener # <
mas o script funciona corretamente quando eu o chamo no terminal