Voraussetzungen und Informationen zum Erstellen eigener Unit-Files: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „=Eigener Service= *Eigene Services werden in /etc/systemd/system abgelegt, und sind einfache INI-Dateien, in denen die Anweisungen für systemd stehen. *Dieses…“) |
|||
| Zeile 3: | Zeile 3: | ||
*Dieses generiert aus der Datei eine Service-Unit, die mittels systemctl verwaltet werden kann. | *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. | *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 | ||
| + | <pre> | ||
| + | #!/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_server('0.0.0.0', 8000, hello_world_app) | ||
| + | httpd.server_forever() | ||
| + | </pre> | ||
| + | |||
| + | =Service File= | ||
| + | cat /etc/systemd/system/webserver.service | ||
| + | <pre> | ||
| + | [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 | ||
| + | </pre> | ||
Version vom 9. Januar 2023, 11:55 Uhr
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_server('0.0.0.0', 8000, hello_world_app)
httpd.server_forever()
Service File
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