Skip to main content

Licence Gitea Release pre-commit

schedls

schedls logo

Inspect and manage the things Linux runs later.

schedls is a CLI tool for inspecting and managing cron jobs and systemd timers through one transparent interface. It is a management and inspection layer over the operating system's native schedulers — it is not a daemon, not a queue, and not a replacement scheduler.

$ schedls
NAME              SCHEDULE             NEXT              BACKEND  SCOPE   STATUS
backup            daily at 02:00       tomorrow 02:00    systemd  user    waiting
cleanup           0 4 * * 0            —                 cron     user    active
logrotate         daily                —                 systemd  system  waiting

If you uninstall schedls, everything it created keeps working: a timer is an ordinary systemd unit, and a cron job is an ordinary crontab entry.

Install

$ pipx install schedls
# or
$ pip install --user schedls

python -m schedls works too. Zero runtime dependencies; Python 3.11+.

Examples

Discover everything visible to you:

$ schedls
$ schedls --system
$ schedls --backend cron

Explore a native calendar expression without creating anything:

$ schedls calendar 'Mon..Fri 02:30'
$ schedls calendar --next 10 --utc daily

Create a user systemd timer:

$ schedls new backup --timer --daily 02:00 --persistent -- /usr/local/bin/backup /srv/data

Create a cron job:

$ schedls new cleanup --cron --cron-expr '0 4 * * 0' -- /usr/local/bin/cleanup

Create a system cron drop-in as root (runs as root unless --run-as is given):

$ sudo schedls new updates --cron --system --daily 03:00 -- /usr/local/bin/updates

Prefer to be guided? Add -i/--interactive to new or edit and any omitted field is prompted for. Flags you do pass become pre-filled defaults:

$ schedls new backup -i
$ schedls edit backup -i

For new, the wizard asks for the scope (user or system) unless --user or --system was given; a system cron job then asks which user it should run as (default root). Interactive mode is line-based (no external editor or pager), requires a terminal, and cannot be combined with --json. The collected values are shown in the usual preview and still require confirmation before anything is written.

Inspect, change, disable, remove:

$ schedls show backup
$ schedls edit backup --daily 03:00
$ schedls disable backup
$ schedls rm backup
$ schedls logs backup

Check what this host can do:

$ schedls doctor

Every mutating command supports --dry-run, and --yes for scripts. Machine output is available with --json.

Design promises

schedls does not:

  • run a background daemon;
  • listen on a network port;
  • make network requests;
  • automatically invoke sudo;
  • execute discovered scheduled commands;
  • open an editor or pager while managing jobs;
  • use a shell internally for helper commands;
  • modify unmanaged schedules by default.

See SECURITY.md and docs/security-model.md.

Documentation

Development

$ poetry install
$ poetry run pre-commit install      # check hooks on every commit
$ poetry run pre-commit run --all-files
$ poetry run pytest
$ poetry run mypy

Formatting and linting use ruff; security scanning uses Bandit; both run through pre-commit alongside trailing-whitespace, end-of-file, YAML and TOML checks. CI runs the same hooks on every push and pull request, followed by a strict type check, the test matrix (Python 3.11–3.14) and a package build. A scheduled workflow builds an SBOM and scans it with Grype.

Release files for schedls 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for schedls 0.2.0
File Size Uploaded
schedls-0.2.0.tar.gz 56.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for schedls 0.2.0
File Interpreter ABI Platform
schedls-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 122.5 kB

Release files / schedls-0.2.0.tar.gz

Download URL schedls-0.2.0.tar.gz
Size 56.6 kB
Tags Source
SHA-256 checksum
How to use checksums
6713ff6e4d4133116e112ef10e14a43880e5207405aa1da82081f6612c196166
BLAKE2b-256 checksum
How to use checksums
7d692a4bc5cc0716308c940362bae7f4a11a53ade59b4ea4b3364a4cc5a1f8df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.5.0 CPython/3.14.7 Linux/7.2.7-100.fc43.x86_64

Release files / schedls-0.2.0-py3-none-any.whl

Download URL schedls-0.2.0-py3-none-any.whl
Size 65.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
402fbcd177b1993c7308956c50e63ffdb57793197ba1433052d6c14efc747e8a
BLAKE2b-256 checksum
How to use checksums
2e93b168aac80367ac34055bbfbd70512bc3a6db2d3ab2b41ab115c70a4c87f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.5.0 CPython/3.14.7 Linux/7.2.7-100.fc43.x86_64

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page