https://bitbucket.org/sivann/runcached/

Spiros Ioannou 6c143c9c90 README edited online with Bitbucket 9 jaren geleden
Makefile 52ada10ea3 added files 9 jaren geleden
README 6c143c9c90 README edited online with Bitbucket 9 jaren geleden
contributors.txt ca02f81d05 Initial commit with contributors 9 jaren geleden
gittag.sh 0daabffc93 updated readme 9 jaren geleden
runcached 52ada10ea3 added files 9 jaren geleden
runcached.c 52ada10ea3 added files 9 jaren geleden
runcached.py 52ada10ea3 added files 9 jaren geleden
runcached.sh 52ada10ea3 added files 9 jaren geleden

README

runcached (Run Cached)
------------------------------------------------------------------------------
Execute commands while caching their output for subsequent calls.
Command output will be cached for seconds and "replayed" for
any subsequent calls. Original exit status will also be emulated.

After cacheperiod has expired, command will be re-executed and a new result
will be cached.
Caching depends on command and arguments executed and the
path of the runcached executable. Cache results are stored in /tmp

You can use runcached to run resource-expensive commands multiple times,
parsing different parts of its output each time. Those commands will be
run only once for each cacheperiod.

Implementation is provided in 3 languages, python, C, BASH.


Usage:
======
Python:
runcached.py [-c cacheperiod]

C:
runcached [-c cacheperiod]

Bash
runcached.sh



Examples:
========

Example 1) Run the date command. Produce a new "date" every 5 seconds.
runcached.py -c 5 date

Example 2) Zabbix userparameter which can be called multiple times , but actually executes only once every 20 seconds.
Query multiple parameters of mysql at the same time, without re-running the query.

UserParameter=mysql.globalstatus[*],/usr/local/bin/runcached.py -c 20 /usr/bin/mysql -ANe \"show global status\"|egrep '$1\b'|awk '{print $ 2}'

And then define some items like so:


```
#!nolang
Item Name Item Key
-------------- --------------
MySQL DELETES mysql.globalstatus[Com_delete]
MySQL INSERTS mysql.globalstatus[Com_insert]
MySQL UPDATES mysql.globalstatus[Com_update]
MySQL CREATE TABLE mysql.globalstatus[Com_create_table]
MySQL SELECTS mysql.globalstatus[Com_select]
MySQL Uptime mysql.globalstatus[Uptime]
MySQL ALTER TABLE mysql.globalstatus[Com_alter_table]
```