已编辑!!!!
我使用了这个单元文件,这是输出,但它不会创建任何日志文件。
[Unit]
Description=PY-KMS
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/py-kms-master/server.py 192.168.1.100 1688 -v
StandardOutput=/usr/local/py-kms-master/kms.log
StandardError=/usr/local/py-kms-master/kms-error.log
[Install]
WantedBy=multi-user.target
地位:
[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:26:44 IRST; 3s ago
Main PID: 2705 (server.py)
CGroup: /system.slice/pykms.service
└─2705 /usr/bin/python2.7 /usr/local/py-kms-master/server.py 192.168.1.100 1688 -v
Nov 24 20:26:44 static.clients.your-server.de systemd[1]: Starting PY-KMS...
Nov 24 20:26:44 static.clients.your-server.de systemd[1]: Started PY-KMS.
答案1
首先,没有必要(而且看起来很糟糕)使用 shell 脚本来启动 systemd 单元中的进程。如果您的 Python 脚本顶部有正确的行,也没有必要显式调用 Python 解释器。
首先清理单元文件:
[Service]
#...
ExecStart=/usr/local/py-kms-master/server.py 192.168.1.100 1688 -v
StandardOutput=/usr/local/py-kms-master/kms.log
StandardError= (whatever you want)
其次,查看正确的文件。您的服务正在登录,kms.log
但您一直在查看kms-server.txt
。请查看其他文件,或更改目标。
答案2
尝试(覆盖):
StandardOutput=file:/usr/local/py-kms-master/kms.log
StandardError=file:/usr/local/py-kms-master/kms-error.log
或(附加)
StandardOutput=append:/usr/local/py-kms-master/kms.log
StandardError=append:/usr/local/py-kms-master/kms-error.log
如果你有 systemd > 240,并且因为它是一个 python 脚本,请设置 -u 标志,或者设置:
Environment="PYTHONUNBUFFERED=1"
在单元文件中,这样 python 就不会在将其刷新到 systemd 进行记录之前长时间缓冲其输出。