aboutsummaryrefslogblamecommitdiffstats
path: root/doc/info/chap/overview.texinfo
blob: 96445783b6daa62f165f480c5a9904f32dbc20dc (plain) (tree)
1
2
3


                 






















                                                           


                                                      















                                                        


                                                    




                                                 
 







                                                           






                                                      
@node Overview
@chapter Overview

@command{sat} is a simple alternative to @command{at}.
It implements the basic features of at @command{at}
in a sane less harmful way. It is hence by itself
incompatible with @command{at}.

@command{sat} is used to queue jobs for later execution.
It is daemon-based, the deamon being @command{satd}, and
using @command{satq}, @command{satrm}, and @command{satr}
you can list queued jobs, remove queued jobs, and run
queued jobs early, respectively. @command{satd} is launched
automatically and exits automatically when it has nothing
more to do.

If you are using @command{autohaltd}, you should set up
hooks for @command{sat} that pauses @command{autohaltd}
using @code{SIGSTOP} (and resume with @code{SIGCONT})
when there are queued jobs. This would prevent
@command{autohaltd} from shutting down the machine
while there are queued jobs but no logins. @command{sat}
cannot stop @command{autohaltd} by adding login entries,
because @command{autohaltd} will only recognise them if
they are in fact true logins.

@command{sat} stores the job queue in a file. However,
this file does not persist between reboot.

@command{sat} was written because @command{at} is far
too complex and has a lot of issues. @command{at}
sanitises the environment, @command{sat} does not do
this because you can do this with @command{env}, and
you will not lose environment variable that you my
want to keep, which sometimes happens with @command{at}.
@command{at} also do mailing, @command{sat} instead
lets you implement this with hooks, so that it is
less complex and less restrictive. @command{at} does
system load analysis, which @command{sat} does not,
instead you can use an external program for this.
@command{sat} also only has one queue, because you
do not need more than one queue, queues can easily
be emulated. Finally, the authors of @command{at} had
the brave idea to do natural language parsing,
@footnote{Good luck getting that to work properly
for even just English and the Gregorian calendar!}
@command{sat} does however do trivial parsing, but
is designed so that you can use any external parser.

Some think that @command{at} shall be merge into
@command{cron}. The authors of @command{sat} does
not think so because it is two wilding different
kind of job scheduling.

@command{sat} uses two clocks: @code{CLOCK_REALTIME}
for time specified in absolute time, and
@code{CLOCK_BOOTTIME} for time specified in relative
time. Note that this is not @code{CLOCK_REALTIME_ALARM}
and @code{CLOCK_BOOTTIME_ALARM}, if you need those
clocks, you can use the less powerful @command{sleep-until}
which supports all clocks your operating system supports.

@command{sat} is written to waste as little memory
as possible. I hate excessively programs that do not
do anything, if we are going to add more and more
daemons, all wasting more and more memory will we
never be about to get rid of swap and use strict
commit accounting on machines with very little memory.