Salvando a saída do processo em um arquivo no arquivo de unidade do systemd

1

Eu criei uma unidade de arquivo systemd (Centos 7) e queria salvar a saída do Python em um arquivo, mas o serviço não inicia com o código abaixo.

[root@static ~]# cat /etc/systemd/system/pykms.service
[Unit]
Description=PY-KMS
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/python2.7 /usr/local/py-kms-master/server.py 192.168.1.100 1688 -v > /usr/local/py-kms-master/pykmsss.log



[Install]
WantedBy=multi-user.target

OBSERVAÇÃO: se eu excluir a linha depois de ">" acima, então tudo funciona bem, mas eu quero salvar os logs em um arquivo.

statusctl status pykms -l

 [root@static ~]# systemctl status pykms -l
pykms.service - PY-KMS
   Loaded: loaded (/etc/systemd/system/pykms.service; enabled)
   Active: active (running) since Tue 2015-11-24 20:54:28 IRST; 2s ago
 Main PID: 2788 (server.py)
   CGroup: /system.slice/pykms.service
           └─2788 /usr/bin/python2.7 /usr/local/py-kms-master/server.py 192.168.1.100 1688 -v

Nov 24 20:54:28 server.de systemd[1]: Starting PY-KMS...
Nov 24 20:54:28 -server.de systemd[1]: Started PY-KMS.
    
por reza 24.11.2015 / 00:18

1 resposta

1

A página de manual de uma unidade de sistema declara:

Specifically, redirection using "<", "<<", ">", and ">>", pipes using "|", running programs in the background using "&", and other elements of shell syntax are not supported.

Em seguida, ele explica como eles podem ser usados:

ExecStart=/bin/sh -c 'dmesg | tac'

Na sua situação, você pode fazer isso:

ExecStart=/bin/sh -c 'exec /usr/bin/python2.7 /usr/local/py-kms-master/server.py 192.168.1.100 1688 -v > /usr/local/py-kms-master/pykmsss.log'
    
por 24.11.2015 / 00:30