| Crates.io | stampiotic |
| lib.rs | stampiotic |
| version | 1.0.0 |
| created_at | 2023-01-31 23:01:17.564146+00 |
| updated_at | 2023-01-31 23:01:17.564146+00 |
| description | A flyweight tool for checking stampfile freshness |
| homepage | https://github.com/SeanGeb/stampiotic |
| repository | https://github.com/SeanGeb/stampiotic |
| max_upload_size | |
| id | 773076 |
| size | 7,244 |
A flyweight tool for checking stampfile freshness.
Install from source with
$ cargo install stampiotic
You can build optimised binaries using Nightly's build-std feature, saving around 200 KiB.
$ 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.
$ stampiotic max-age stampfile [...]
e.g.
$ 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 |