I built Jobman to combine the simplicity of nohup with features I previously wrote one-off shell scripts for, including: - retries - timeouts - dependencies between jobs - email or webhook notifications on completion or failure - separate stdout and stderr logging with a combined observed-order view
Jobman does this with a small per-job supervisor process; there's no shared daemon to run. It uses SQLite for job and run metadata and plain files for log storage. It's intended to be a local, per-user tool, not a system-wide or distributed scheduler.
Jobman is written in Go and has releases available for Linux, macOS, and Windows.
Here's an example session using Jobman to launch a Python script, examine its logs, and check its status:
$ jobman run --name import-data --retries 3 --run-timeout 30m \
--retry-timeouts -- python3 ./import_data.py
019fddfe-23bb-732d-a869-2aaee43c03d7
$ jobman logs --follow import-data
Starting import...
Imported batch 1/3.
Imported batch 2/3.
^C
$ jobman status import-data
019fddfe-23bb-732d-a869-2aaee43c03d7 import-data running
Above, the Ctrl-C stopped `logs --follow`, while the Python process continued under Jobman.Do you see Jobman replacing any combinations of tools you currently use (nohup, tmux, screen, systemd-run)? If Jobman looks useful to you, let me know what types of jobs you would use it for.
ryancswallace•47m ago
Happy to discuss any design choices here!