Skip to main content

Simple API to automate the creation of custom daemons for GNU/Linux.

Project description

Systemd-Service

Simple API to automate the creation of custom daemons for GNU/Linux.

GitHub top language PyPI - License PyPI PyPI - Status PyPI - Python Version GitHub last commit CodeFactor Grade Documentation Status

A daemon is a service process that runs in the background and supervises the system or provides functionality to other processes. Traditionally, daemons are implemented following a scheme originating in SysV Unix. Modern daemons should follow a simpler yet more powerful scheme, as implemented by systemd.

Systemd-Service is a Python module to automate the creation of daemons under GNU/Linux environments.

Install

pip install -U systemd-service

Handle daemons

from systemd_service import Service

daemon = Service("stream_rpyc")

daemon.stop()     # Start (activate) the unit.
daemon.start()    # Stop (deactivate) the unit.
daemon.reload()   # Reload the unit.  
daemon.restart()  # Start or restart the unit.

daemon.enable()   # Enable the unit.
daemon.disable()  # Disable the unit.

daemon.remove()   # Remove the file unit.

This commands are uquivalent to the systemctl calls, for example run in terminal the folowing command: $ systemctl enable stream_rpyc Can be running inside a Python environment with using systemd_service

from systemd_service import Service

daemon = Service("stream_rpyc")
daemon.enable()

Creating services

Similar to the previous scripts, the services can be created using systemd_service:

daemon = Service("stream_rpyc")
daemon.create_service()

If the service must be initialized after other service

daemon = Service("stream_rpyc")
daemon.create_service(after='ntpd')

Creating timers

Defines a timer relative to when the machine was booted up:

daemon = Service("stream_rpyc")
daemon.create_timer(on_boot_sec=15)

Example

This module is useful when is combined with package scripts declaration in setup.py file:

# setup.py

scripts=[
    "cmd/stream_rpyc",
]

The script could looks like:

#!/usr/bin/env python

import sys

if sys.argv[-1] == "systemd":
    from systemd_service import Service
    daemon = Service("stream_rpyc")
    daemon.create_timer(on_boot_sec=10, after='network.target kafka.service')

else:
    from my_module.submodule import my_service
    print("Run 'stream_rpyc systemd' as superuser to create the daemon.")
    my_service()

Then the command can be called as a simple script but with the systemd argument the command will turn into a service.

$ stream_rpyc
# Command executed normally
$ stream_rpyc systemd
# Service created

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

systemd_service-1.8.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

systemd_service-1.8-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file systemd_service-1.8.tar.gz.

File metadata

  • Download URL: systemd_service-1.8.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for systemd_service-1.8.tar.gz
Algorithm Hash digest
SHA256 3c53a0180c7ebe6b62461c3218816d2d3f87050f058c0f3281006e7fac301e19
MD5 453cfb461fb06d9bdc8a488172152857
BLAKE2b-256 8ae92e1753130e184e38750cc6e4c3186f2c7421418e42c012ab25a61c14e704

See more details on using hashes here.

File details

Details for the file systemd_service-1.8-py3-none-any.whl.

File metadata

  • Download URL: systemd_service-1.8-py3-none-any.whl
  • Upload date:
  • Size: 4.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for systemd_service-1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 c818669d3e28188ecbe1911c7651e710eaa2604497a0ba5d943ffe5aa242d9f7
MD5 2b789e30822d6f7503e07a65338619d7
BLAKE2b-256 e52fd8bae2205586aa298439f5a8991f7a245c9ffdd239d1dec20fa3d8c2dcf6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page