Eigener Service
- Eigene Services werden in /etc/systemd/system abgelegt, und sind einfache INI-Dateien, in denen die Anweisungen für systemd stehen.
- Dieses generiert aus der Datei eine Service-Unit, die mittels systemctl verwaltet werden kann.
- Das Verhalten wird von journald geloggt und kann über journalctl eingesehen werden.
Beispiel
- Im folgenden wird anhand eines Beispiels gezeigt, wie man eine eigene Service Unit für systemd anlegt und aktiviert.
- Das Programm, welches ausgeführt werden soll, ist ein simpler, in Python geschriebener Webserver.
- Dieser machtnichts anderes, als auf localhost und Port 8000 zu lauschen und beim Zugriff "Hello World" und die aktuelle Uhrzeit auszugeben.
Python Script
- /usr/local/bin/webserver.py
#!/usr/bin/env python3
from wsgiref.simple_server import make_server
from datetime import datetime
def hello_world_app(environ, start_response):
status = '200 OK'
headers = [('Content-type', 'text/plain; charset=utf-8')]
start_response(status, headers)
text = 'Hello World @ {}'.format(datetime.now())
return [text.encode('utf-8')]
httpd = make_serve('0.0.0.0', 8000, hello_world_app)
httpd.server_forever()
- Diese müssen wir nun ausführbar machen.
- chmod +x /usr/local/bin/webserver.py
Service File
- .service Datei anlegen
- Man muss nun eine .service Datei unter /etc/systemd/system anlegen.
- cat /etc/systemd/system/webserver.service
[Unit]
Description=Simple WSGI Server
[Service]
Type=simple
ExecStart=/usr/local/bin/webserver.py
ExecStartPost=/bin/echo "Server gestartet"
User=www-data
[Install]
WantedBy=multi-user.target