ghost-bot 971d1ecf90
All checks were successful
Upload Assets / upload-assets (arm64, linux) (release) Successful in 1m31s
Upload Assets / upload-assets (amd64, linux) (release) Successful in 1m34s
chore(changelog): update changelog for v0.5.1
2025-06-15 14:52:14 +00:00
2025-05-21 03:09:40 +02:00
2025-06-15 16:52:05 +02:00

systemd-timer

A simple CLI tool for quickly generating systemd .service and .timer units — as a replacement or modern supplement to classic cron jobs.


🚀 Features

  • Generates .service and .timer files via CLI
  • Supports --user timers (for ~/.config/systemd/user/)
  • Optional logging (StandardOutput/StandardError)
  • Supports:
    • --calendar: Timer schedule (systemd OnCalendar)
    • --exec: Command to execute (ExecStart)
    • --description: Description for the unit
    • --after: After= dependencies in the service unit
    • --environment: Arbitrary Environment=KEY=VALUE entries
    • --output: Target directory for the generated unit files
    • --run-as: Sets User= in the service unit (only for system-level timers)
    • --home: Sets Environment=HOME=…
    • --cwd: Working directory for the process (WorkingDirectory)
    • --dry-run: Outputs unit content without writing to disk
  • Tested and fully typed with Deno + Cliffy
  • Inputs are validated and checked for errors;
    • e.g., --calendar must be a valid systemd OnCalendar expression
  • Multilingual (English, German)

🛠️ Installation

You can install systemd-timer directly via shell script:

curl -fsSL https://git.0xmax42.io/maxp/systemd-timer/raw/branch/main/scripts/install.sh | sh

The script automatically detects your platform (Linux amd64 or arm64) and installs the appropriate binary to /usr/local/bin, if permitted (possibly using sudo).

Note:

  • A working internet connection is required for installation.
  • The integrity of the binary is verified using a SHA256 checksum.
  • You can manually inspect the script before execution:
curl -fsSL https://git.0xmax42.io/maxp/systemd-timer/raw/branch/main/scripts/install.sh -o install.sh
less install.sh

Additional options and manual installation methods are available under scripts/install.sh.


📦 Example

./systemd-timer create \
  --exec "/usr/local/bin/backup.sh" \
  --calendar "Mon..Fri 02:00" \
  --description "Backup Job" \
  --user \
  --logfile "/var/log/backup.log"

This creates:

  • ~/.config/systemd/user/backup.service
  • ~/.config/systemd/user/backup.timer

Activate afterwards:

systemctl --user daemon-reload
systemctl --user enable --now backup.timer

🧪 Running Tests

deno task test

🧰 Development

deno task start create --exec "/bin/true" --calendar "daily" --dry-run

🔒 Permissions / Flags

The tool requires the following permissions when running or compiling:

  • --allow-env (for $HOME)
  • --allow-write (to write .service/.timer files)

During development, usually -A (allow all) is used.


📝 License

MIT License

Description
A simple CLI tool for quickly generating systemd .service and .timer units — as a replacement or modern supplement to classic cron jobs.
Readme MIT 221 KiB
2025-06-15 16:52:14 +02:00
Languages
TypeScript 86%
Shell 14%