A flyweight tool for checking stampfile freshness.
Install from source with
bash
$ cargo install stampiotic
You can build optimised binaries using Nightly's build-std feature, saving around 200 KiB.
bash
$ cargo +nightly build --release
-Z build-std=std,panic_abort
-Z build-std-features=panic_immediate_abort
--target x86_64-unknown-linux-gnu
Spinning up a shell (or worse, a Python or Perl script) takes substantially
longer than invoking a small binary, so why bother? Some containers might not
even include a shell by default. stampiotic
has exactly one dependency: libc.
stampiotic
is a particularly useful tool for implementing a watchdog timer in
Kubernetes. Legacy services can just touch a stampfile periodically, which can
then be checked using stampiotic
as a periodic Kubernetes health check.
bash
$ stampiotic max-age stampfile [...]
e.g.
bash
$ stampiotic 60s /run/foo/foo-server.stamp 60s
$ stampiotic '30 min' make.stamp
$ stampiotic 1d long-process-1.stamp long-process-2.stamp
File "long-process-2.stamp" is too old (12345s > 86400s)
$ echo $?
1
Durations are parsed by humantime
.
| Unit | Supported suffixes | Definition |
|--------------|------------------------------|-------------------------------|
| nanoseconds | nsec
/ns
| 10−9 s |
| microseconds | usec
/us
| 10−6 s |
| milliseconds | msec
/ms
| 10−3 s |
| seconds | seconds
/second
/sec
/s
| 1 s |
| minutes | minutes
/minute
/min
/m
| 60 s |
| hours | hours
/hour
/hr
/h
| 3600 s = 60 minutes |
| days | days
/day
/d
| 86,400 s = 24 hours |
| weeks | weeks
/week
/w
| 604,800 s = 7 days |
| months | months
/month
/M
| 30.44 days = 2630016 s |
| years | years
/year
/y
| 365.25 days = 31557600 s |