Forum: Cfengine Help
Subject: Re: Controlling Module Calls
Author: nima
Link to topic: https://cfengine.com/forum/read.php?3,18383,18469#msg-18469

Hi Seva,

A reasonable suggestion again, but doesn't work - I must say, some things in 
cfengine do not follow any natural set of rules.  Anyway, I've ended up writing 
such modules as follows:

sc_run_already 3
if [ $? -eq 0 ]; then 
    ...code...
fi


Where the sc_run_already function takes the minimum age that must have passed 
since the last run for the module to run again - it is then defined as follows:


SC_MOD_LOCK=/var/lock/cf3.$(basename $0)
function sc_run_already() {
    run_already=0
    if [ -f ${SC_MOD_LOCK} ]; then 
        stat=$(sc_stat ${SC_MOD_LOCK})
        delta=$((${SC_NOW_EPOCH}-${stat}))
        if [ ${delta} -le ${1-9} ]; then 
            run_already=1
        fi   
    fi   
    test ${run_already} -ne 0 || touch ${SC_MOD_LOCK}
    return ${run_already}
}


_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to