Cross-platform command-as-service manager for Windows, Linux systemd, and macOS launchd.
Project description
py-simple-service-manager
py-simple-service-manager lets you manage a one-line command as a service on
Linux, Windows, and macOS.
The same Python runner handles command execution, retry attempts, status files, and stdout/stderr logs. Platform backends only register and control the runner:
- Linux:
systemdunits controlled bysystemctl - Windows: Task Scheduler tasks controlled by
schtasksand PowerShell - macOS:
launchdagents/daemons controlled bylaunchctl
Install
python -m pip install -e .
Administrator relaunch support uses
py-admin-launch for Windows UAC,
Linux pkexec/sudo, and macOS osascript/sudo.
Startup modes
manual: do not start at boot.auto: start once at boot after network components are available.auto-retry: start at boot and retry afterKseconds up toNtimes when the command exits with a non-zero code.
The retry count is handled by this package's runner, so it works consistently across all supported platforms.
pssm logs and the GUI log tabs read the current log files, not only completed
runs. The runner flushes stdout/stderr to disk as bytes arrive, and Python
commands are launched with unbuffered output automatically.
Usage
Register a manual service:
pssm add api -- python -m http.server 9000
Register a boot service:
pssm add api --mode auto -- python -m http.server 9000
Register a boot service with retry:
pssm add worker --mode auto-retry --retry-delay 10 --retry-limit 5 -- python worker.py
Set a per-run timeout, or use None for no time limit:
pssm add api --timeout 30 -- python -m http.server 9000
pssm edit api --timeout None
Change startup mode later:
pssm mode worker manual
pssm mode worker auto-retry --retry-delay 10 --retry-limit 5
Inspect and control services:
pssm list
pssm status worker
pssm logs worker
pssm logs worker --stream stderr --lines 100
pssm start worker
pssm stop worker
pssm remove worker
Edit the same fields exposed by the GUI:
pssm edit worker --command "python worker.py --queue default" --cwd /path/to/app
pssm edit worker --mode auto-retry --retry-delay 10 --retry-limit 5 --timeout 60
pssm edit worker --clear-cwd
Open the GUI:
pssm gui
pssm-gui
The GUI supports listing services, creating services, editing command/startup mode/retry settings/timeout/working directory, deleting services, starting and force-stopping services, viewing stdout/stderr, and viewing start history. The selected service status shows whether the current run is still active and how many seconds it has been running. Anything the GUI can change is also available through the CLI.
Show storage paths and platform details:
pssm doctor
Services are managed in system scope. Commands relaunch with administrator/root privileges automatically when needed.
Platform notes
Linux
Linux requires systemd and systemctl.
- System scope writes units to
/etc/systemd/system. - Boot startup uses
network-online.targetwithWants=andAfter=.
Windows
Windows uses Task Scheduler.
- Services are registered as system tasks:
pssm add name --mode auto -- your-command
System-scope tasks run as SYSTEM with highest available privileges. Make sure
the command and Python environment are available to that account.
macOS
macOS uses launchd.
- System scope writes LaunchDaemons to
/Library/LaunchDaemons. - Boot startup maps to
RunAtLoad=true.
Development
Run tests from source:
PYTHONPATH=src python -m unittest discover -s tests -v
On Windows PowerShell:
$env:PYTHONPATH = "src"
python -m unittest discover -s tests -v
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_simple_service_manager-0.1.17.tar.gz.
File metadata
- Download URL: py_simple_service_manager-0.1.17.tar.gz
- Upload date:
- Size: 168.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.11.15 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
451a098ee57ccd63f9a4a56106216534032cd258a258bcb4a85f8d976604c1d8
|
|
| MD5 |
a3a245c35f7b0d07920e1aec6b9a77a2
|
|
| BLAKE2b-256 |
44e1f7f516a0ae4225ee0725c93fa886d5302d1191a934e4809e58358fe82e14
|
File details
Details for the file py_simple_service_manager-0.1.17-py3-none-any.whl.
File metadata
- Download URL: py_simple_service_manager-0.1.17-py3-none-any.whl
- Upload date:
- Size: 235.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.11.15 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62726d46680bd15a786c1c12fcdd0a76f05699abb101e7c633d2f5a24ec69bce
|
|
| MD5 |
2087677774e48443a9a93ef0131322c6
|
|
| BLAKE2b-256 |
5c889f22ebaff3460fd287bd95b54a5159234c1090d0892f8d7bc03947ca0ad4
|