Major Tom, This is Job Control
Acting Nice with the Linux System
Job control and scheduling is quickly becoming less and less of an issue for
most Linux users and administrators. Virtually all scheduling is done
(justifiably so) via
cron. However, I have come across many
occasions of late where using job control and processing techniques is quite
handy. This article will look at two aspects of job control: first, priority
scheduling and altering priorities with
renice, respectively; second, batch processing and scheduling
Nice and Renice
Many UNIX users are very familiar with
renice, and as they pertain to job control they deserve mention
within this context. The
nice command is used to alter an initial
job priority. On Linux systems this is fairly simple: the lower the
nice command the higher the priority. The range on a Linux system
is -20 (being the highest) to 19 (the lowest). Using
pretty simple. Let's say we want to make sure that a compile and install for
fetchmail has a pretty high priority. We might do the following:
nice -n 5 make
We have lowered the nice number and raised the job priority initially for this task.
renice command is used to alter the
of a job after it has been started. It is important to note that only
root may alter the
nice value of jobs it does not own, and
non-root users may only alter their
nice values between 0 and 20
(the former is obviously so users may not tamper with other users while the
latter protects the privileged processes of the system). An example of using
renice on a single process might look like so:
renice 5 -p 10023
where we lower the
nice value to 5 of PID 10023. The
renice command can also affect entire group of processes as well.
For instance, let us say we wanted all of jdoe user's processes to have a
nice value of 12. The syntax on Linux would be:
renice 12 -u jdoe
Processing and Scheduling Commands
Many times a user will want to run a large job but not wish to lock up a terminal waiting for it to finish. The fastest way to do this is to simply put it in the background. This will only work well for programs that do not print to STDOUT. For example, if I wanted to move a bunch of directories separately and in the background, I could do this:
mv -f dirname_one new_dirname_one & mv -f dirname_two new_dirname_two &
& is used to put the job in the background so my
terminal is free for me to keep working. The system will inform me when the
jobs are done. It is important not to logout while
background jobs are running. On most systems you will see a warning message
stating that there are running jobs. If this is ignored, the jobs
will be terminated. To see the current jobs running, just type
jobs and a list is printed out to the terminal. This output varies
from shell to shell.
There are instances when putting jobs in the background alone is not enough. You may wish to logout after the job is started. This is where batch processing or scheduling comes in handy.
It is important to note at this point that
batch are related on Linux systems and similarly implemented.
Solid state disks (SSDs) made a splash in consumer technology, and now the technology has its eyes on the enterprise storage market. Download this eBook to see what SSDs can do for your infrastructure and review the pros and cons of this potentially game-changing storage technology.
- 1Linux Top 3: GNOME 3.12 and New Betas for Ubuntu 14.04 and OpenMandriva Lx 2014.0
- 2Linux Top 3: Linus Lashes out, Linux 3.14 Gets PIE and Ubuntu One is Done.
- 3Linux Top 3: Ubuntu 14.04, Debian Gives Squeeze More Life and Red Hat Goes Atomic
- 4Linux Top 3: CoreOS, Oracle Enterprise Linux 7 and Ubuntu 14.10
- 5Linux Top 3: Debian Gives Up on Upstart, Ubuntu and Linux Kernel Updates