5510ab74d6dc4cf803ec69c6c9b08c3fc5c1ec2e
- Introduce functions to validate CLI inputs like paths, identifiers, and environment variables - Add error messages for invalid inputs to support user feedback - Include unit tests to ensure correctness and robustness of validation logic
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
.serviceand.timerfiles via CLI - Supports
--usertimers (for~/.config/systemd/user/) - Optional logging (
StandardOutput/StandardError) - Supports:
--calendar: Timer schedule (systemdOnCalendar)--exec: Command to execute (ExecStart)--description: Description for the unit--after:After=dependencies in the service unit--environment: ArbitraryEnvironment=KEY=VALUEentries--output: Target directory for the generated unit files--run-as: SetsUser=in the service unit (only for system-level timers)--home: SetsEnvironment=HOME=…--cwd: Working directory for the process (WorkingDirectory)--dry-run: Outputs unit content without writing to disk
- Tested and fully typed with Deno + Cliffy
🛠️ 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/.timerfiles)
During development, usually -A (allow all) is used.
📝 License
Releases
9
Release v0.5.1
Latest
Languages
TypeScript
86%
Shell
14%