Instalei o servidor de terminal HTTP da borboleta , escrito em python, na minha máquina Arch . Sou novo no systemd, mas estou tendo um problema com um dos parâmetros da linha de comando.
/usr/bin/butterfly.server.py --shell=/usr/fish --unsecure --host="0.0.0.0"
Isso funciona como esperado e eu posso acessar o terminal através de um navegador da Web em outra máquina.
No entanto, quando criei um simples systemd .service para ele:
[Unit]
Description=Butterfly Terminal Server
[Service]
ExecStart=/usr/bin/butterfly.server.py --shell=/bin/fish --host="0.0.0.0" --unsecure
[Install]
WantedBy=multi-user.target
Ele não será iniciado com --host="0.0.0.0"
na linha ExecStart e reportará:
[root@ArchHP sockets.target.wants]# systemctl status butterfly.service -l
● butterfly.service - Butterfly Terminal Server
Loaded: loaded (/usr/lib/systemd/system/butterfly.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2015-01-07 23:08:29 CST; 26s ago
Process: 3203 ExecStart=/usr/bin/butterfly.server.py --shell=/bin/fish --host="0.0.0.0" --unsecure (code=exited, status=1/FAILURE)
Main PID: 3203 (code=exited, status=1/FAILURE)
Jan 07 23:08:28 ArchHP butterfly.server.py[3203]: File "/usr/lib/python3.4/site-packages/tornado/tcpserver.py", line 125, in listen
Jan 07 23:08:28 ArchHP butterfly.server.py[3203]: sockets = bind_sockets(port, address=address)
Jan 07 23:08:28 ArchHP butterfly.server.py[3203]: File "/usr/lib/python3.4/site-packages/tornado/netutil.py", line 106, in bind_sockets
Jan 07 23:08:28 ArchHP butterfly.server.py[3203]: 0, flags)):
Jan 07 23:08:28 ArchHP butterfly.server.py[3203]: File "/usr/lib/python3.4/socket.py", line 530, in getaddrinfo
Jan 07 23:08:28 ArchHP butterfly.server.py[3203]: for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
Jan 07 23:08:28 ArchHP butterfly.server.py[3203]: socket.gaierror: [Errno -2] Name or service not known
Jan 07 23:08:29 ArchHP systemd[1]: butterfly.service: main process exited, code=exited, status=1/FAILURE
Jan 07 23:08:29 ArchHP systemd[1]: Unit butterfly.service entered failed state.
Jan 07 23:08:29 ArchHP systemd[1]: butterfly.service failed.
Se eu remover o --host="0.0.0.0"
, ele será iniciado com êxito, mas só estará acessível na minha máquina local - outros computadores não terão acesso. Em seguida, tentei criar um butterfly.socket para o serviço, mas não tive sucesso em procurar a mensagem de erro.
Por que executá-lo através do ExecStart é diferente de executá-lo em uma linha de comando e como faço para iniciá-lo com esse parâmetro? Como último recurso, posso tentar modificar o script python para, em vez disso, usar como padrão 0.0.0.0
, mas gostaria de entender por que estou obtendo o erro com sudo systemctl restart butterfly.service
, mas não quando estou executando diretamente.