Details
-
New Feature
-
Status: Open
-
Major
-
Resolution: Unresolved
-
Gump3-alpha-7
-
None
Description
As discussed on the mailing list:
Naïve line-based schedule file using simple commands together with cron could be real nice.
Creating schedules
------------------
We should have something like
gump schedule-run --profile=public --official
gump schedule-run --profile=public
gump schedule-run --profile=kaffe
Which writes a file $GUMP_HOME/schedule looking like this
gump run --profile=public --official
gump run --profile=public
gump run --profile=kaffe
The code would be along the lines of
schedule_run()
{ local schedulefile="$GUMP_HOME/schedule" echo gump run $* >> $schedulefile }You would also want to schedule runs immediately
gump schedule-run-first --profile=custom --debug
Which would be something like
schedule_run_first()
{ local schedulefile="$GUMP_HOME/schedule" echo gump run $* >> $schedulefile.new cat $schedulefile >> $schedulefile.new rm $schedulefile mv $schedulefile.new $schedulefile }And of course there's more options like
schedule_run_when_idle()
{ local pidfile="$GUMP_HOME/pygump/pygump.pid" if [[ ! -f "$pidfile" ]]; then schedule_run fi }The next bit is to have calls to those "schedule-run" commands in the
crontab:
- the next run after midnight will be the "official" one
0 0 * * * . /home/gump/.bash_profile; gump schedule-run-first \
--profile=public --official
0 6 * * * . /home/gump/.bash_profile; gump schedule-run \
--profile=kaffe
0 12 * * * . /home/gump/.bash_profile; gump schedule-run \
--profile=jdk15
0 3,9,15,18 * * * . /home/gump/.bash_profile; gump schedule-run-when-idle \
--profile=public
Keeping schedules
-----------------
And then have something like
gump try-to-invoke-run
Which checks to see if gump is running, and if not, takes a line from
$GUMP_HOME/schedule and executes it. Along the lines of
try_to_invoke_run()
{ local pidfile="$GUMP_HOME/pygump/pygump.pid" if [[ ! -f "$pidfile" ]]; then line=remove_first_line_from_schedule `$line` fi }And we run that real often from the crontab:
60/12 * * * * . /home/gump/.bash_profile; gump try-to-invoke-run
Why
—
This would ensure gump would be running just about continuously, but you
could also easily interrupt using
gump kill
gump schedule-run-first --profile=custom --debug
To manually change the schedule if you wanted to try something.