Nightly yum update is enabled: [ OK ]
Of course, the GUI tools mentioned earlier also have the functionality to start and stop specific services in your current runlevel. The tool you choose is a matter of personal preference; a good system administrator is aware of them all.
Relevant Fedora Commands
Here are some of the commands you learned so far:
► chkconfig
— Fedora's text-only command-line runlevel configuration utility
► ntsysv
— Fedora's text-based system services configuration tool for the command line
► setup
— Actually a bash script, it is a menu to all the individual ncurses-based
configuration tools, including ntsysv
► system-config-services
— Fedora's GUI runlevel configuration tool, named Configure Services
► telinit
— Changes the current runlevel
There are three ways to schedule commands in Fedora, all of which work in different ways. The first is the at
command, which specifies a command to run at a specific time and date relative to today. The second is the batch
command, which is actually a script that redirects you to the at
command with some extra options set so that your command runs when the system is quiet. The last option is the cron
daemon, which is the Linux way of executing tasks at a given time.
Using at
and batch
to Schedule Tasks for Later
If there is a time-intensive task you want to run, but you do not want to do it while you are still logged in, you can tell Fedora to run it later with the at
command. To use at
, you need to tell it the time at which you want to run and then press Enter. You then see a new prompt that starts with at>
, and everything you type there — until you press Ctrl+D — comprises the commands you want at
to run.
When the designated time arrives, at
performs each action individually and in order, which means later commands can rely on the results of earlier commands. In this next example, run at just after 5 p.m., at is used to download and extract the latest Linux kernel at a time when the network should be quiet:
[paul@caitlin ~]$ at now + 7 hours
at> wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.bz2
at> tar xvfjp linux-2.6.10.tar.bz2
at>
job 2 at 2005-01-09 17:01
Specifying now + 7 hours
as the time does what you would expect: at
was run at 5 p.m., so the command runs just after midnight that night. When your job finishes, at
sends you mail with a full log of your job's output; type mail
at the console to bring up your mailbox and then press the relevant number to read at's
mail.
If you have a more complex job, you can use the -f
parameter to have at
read its commands from a file, like this:
echo wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.bz2; \
tar xvfjp linux-2.6.10.tar.bz2 > myjob.job
at -f myjob.job tomorrow
As you can see, at
is flexible about the time format it takes; you can specify it in three ways:
► Using the now
parameter, you can specify a number of minutes, hours, days, or weeks relative to the current time — for example, now + 4 weeks
would run the command one month from today.
► You can also specify several special times, including tomorrow
, midnight
, noon
, or teatime
(4 p.m.). If you do not specify a time with tomorrow
, your job is set for precisely 24 hours from the current time.
► You can specify an exact date and time using HH:MM MM/DD/YY
format — for example, 16:40 22/12/05 for 4:40 p.m. on the 22nd of December 2005.
When your job is submitted, at reports the job number, date, and time that the job will be executed; the queue identifier; plus the job owner (you). It also captures all your environment variables and stores them along with the job so that, when your job runs, it can restore the variables, preserving your execution environment.
The job number and job queue identifier are both important. When you schedule a job using at, it is placed into queue a by default, which means it runs at your specified time and takes up a normal amount of resources.
There is an alternative command, batch
, which is really just a shell script that calls at
with a few extra options. These options ( -q b -m now
, if you were interested) set at
to run on queue b ( -q b
), mailing the user on completion ( -m
), and running immediately ( now
). The queue part is what is important: Jobs scheduled on queue b are executed only when the system load falls below 0.8 — that is, when the system is not running at full load. Furthermore, they run with a lower niceness, meaning queue a jobs usually have a niceness of 2, whereas queue b jobs have a niceness of 4.
Because batch
always specifies now
as its time, you need not specify your own time; it simply runs as soon as the system is quiet. Having a default niceness of 4 means that batched commands get fewer system resources than queue jobs ( at's
default) and fewer system resources than most other programs. You can optionally specify other queues using at.
Queue c runs at niceness 6, queue d runs at niceness 8, and so on. However, it is important to note that the system load is checked only before the command is run. If the load is lower than 0.8, your batch job is run. If the system load subsequently rises beyond 0.8, your batch job continues to run, albeit in the background, thanks to its niceness value.
When you submit a job for execution, you are also returned a job number. If you forget this or just want to see a list of other jobs you have scheduled to run later, use the atq
command with no parameters. If you run this as a normal user, it prints only your jobs; running it as a super-user prints everyone's jobs. The output is in the same format as when you submit a job, so you get the ID number, execution time, queue ID, and owner of each job.
If you want to delete a job, use the atrm
command followed by the ID number of the job you want to delete. The next example shows atq
and atrm
being used to list jobs and delete one:
[paul@caitlin ~]$ atq
14 2005-01-20 23:33 a paul
16 2005-02-03 22:34 a paul
17 2005-01-25 22:34 a paul
15 2005-01-22 04:34 a paul
18 2005-01-22 01:35 b paul
[paul@caitlin ~]$ atrm 16
[paul@caitlin ~]$ atq
14 2005-01-20 23:33 a paul
17 2005-01-25 22:34 a paul
15 2005-01-22 04:34 a paul
18 2005-01-22 01:35 b paul
In that example, job 16 is deleted by atrm
, and so it does not show up in the second call to atq
.
The default configuration for at
and batch
is to allow everyone to use it, which is not always the desired behavior. Access is controlled through two files: /etc/at.allow
, and /etc/at.deny
. By default, at.deny
exists but is empty, which allows everyone to use at
and batch.
You can enter usernames into at.deny
, one per line, to stop those users scheduling jobs.
Читать дальше