I have put out some new patches for Linux Process Aggregates (PAGG) and
Linux Jobs. Also, I have produced a new package release of the
You can pick up the new bits at:
The new files are:
README-2 The README file (install info)
job-1.0.0-2.src.rpm The source rpm file (i386 & ia64)
job-1.0.0-2.i386.rpm The i386 commands package
job-1.0.0-2.ia64.rpm The ia64 commands package
linux-2.4.2-pagg.patch The PAGG patch (apply first)
linux-2.4.2-pagg-job.patch The Job patch (apply second)
What is new...
Version 1.0.0 of Linux Jobs is released. The kernel patches have been
updated - now the loadable kernel module can be built into the the
or it can be modularized.
The kernel module source now resides in linux/drivers/misc. The options
for building the module are included in the linux config
The Linux Jobs user commands, PAM module and man pages are now available
as an RPM package for both i386 and ia64 systems. Two new commands were
added: jsethid and jdetach. The jsethid command is a configuration
command, normally used by startup scripts. The jdetach command is an
administrative command, allowing root to detach processes from jobs -
handy when you accidentally start a daemon process from within a job.
The README-2 file is attached:
Linux Jobs v1.0.0 February 15, 2001
The following packages and tarballs are required to set up a system to
use Linux jobs. The Job commands and PAM modules have compile time
dependencies upon the pagg and the pagg-job feature patches for the
kernel. So, you will need to first read the "KERNEL PATCH INSTALLATION"
section before proceeding.
(There are various 2.4 patches available, so we refer to the kernels
using 2.4.#, where the # character represents the specific patchlevel
of the kernel.)
KERNEL PATCH INSTALLATION
The kernel must have been patched using the pagg and pagg-job
linux kernel patches. These patches can be downloaded from
linux-2.4.#-pagg.patch PAGG kernel patch (apply first)
linux-2.4.#-pagg-job.patch Job kernel patch (apply second)
1. Apply the kernel patch to a Linux 2.4.# kernel. For example:
patch -p1 < /tmp/linux-2.4.#-pagg.patch
patch -p1 < /tmp/linux-2.4.#-pagg-job.patch
2. Configure the kernel to include the appropriate support:
The config variables:
via menuconfig or xconfig:
"General setup"->"Support for process aggregates (PAGGs)"
"General setup"->" Process aggregate based jobs"
3. Build a new kernel
In this example we use the build directory of
/usr/src/linux. Often there are links in /usr/include
that point to directories in /usr/src/linux. In addition,
/usr/src/linux is usually a link to the source for the
kernel that is running. This ensures that you will have
the same include files available as were used to build
So, you will want to ensure that /usr/src/linux is
redirected to reference the source directory for your
new kernel before you attempt the next step.
4. Decide if you want to install the RPM files or build the user
(PAM/commands/docs) yourself using the tarball. For RPM
see the "RPM INSTALLATION" section. If you want to build the the
software yourself, proceed to the "SOURCE INSTALLATION" section.
1. To install the PAM module, user commands, manual pages, and job-1.0.0
a. i386 systems:
rpm -i job-1.0.0-1.i386.rpm
b. ia64 systems:
rpm -i job-1.0.0-1.ia64.rpm
2. To install the source code RPM that contains a copy of the source
for the PAM module, user commands, manual pages, and package
(i386 and ia64 systems):
rpm -i job-1.0.0-1.src.rpm
NOTE: The source code for the i386 package and the ia64 package is
same. It was build using v3 RPM. It should install correctly when
either the v3 or v4 RPM tool.
3. Proceed to the section labeled "SETUP".
1. Unpack the source.
tar zxvf job-1.0.0-1.tar.gz
2. Build the commands, libraries and PAM module.
make ARCH=i386 (set ARCH=ia64 for ia64 systems)
If the ARCH paramter is not specified, the build will default to
3. Install the commands, PAM module, man pages, and package documents
(you must have root privilege to install to perform the
a. Install relative to root "/" directory:
b. Install reletive to an arbitrary directory:
make INSTDIR=$YOUR_CHOICE install
4. Proceed to the section labeled "SETUP".
1. Edit the PAM configuration files to enable job creation:
cd /etc/pam.d (directory where PAM config files reside)
su root (if not already root)
vi login (to enable job creation for logins)
While editing the login configuration file, the following line would
session optional /lib/security/pam_job.so
It is suggested that the creation of jobs via PAM be listed as an
optional operation until such time as you feel comfortable with
their operation. Then you can change 'optional' to 'required'.
This example shows the 'login' configuration file being changed.
You will need to add the session line to all of the PAM entry points
that you want to have create jobs. For example: gdm, kde, login,
rlogin, rsh, su, and xdm are currently set on my system.
Not all services use session management. As a result, the PAM job
module also has the capability to create jobs at the account
module level. Whenever possible, it is best to use session
However, if a particular service, such as ftp, does not invoke
modules you can use the account management feature. When using the
account management feature, you should specify the pam_job.so module
as the last acct entry. Such an entry would appear as follows:
acct optional /lib/security/pam_job.so
The only service I have encountered that does not use session
management modules is ftp.
What are the differences between using the session entry point and
the account management entry point? When using the session entry
point, the creation of the job is recorded via syslog. Also, when
point-of-entry process (the one that caused the creation of the job)
exits, another notice is posted via syslog. These syslog entries
provide another history mechanism for tracking the status of a job.
When using the account management entry point, a message concerning
creation of the job is reported via syslog. However, no additional
messages concerning exit notification for the point-of-entry process
2. If you installed the RPM package, the chkconfig variable "job" was
created for you. If you went through the SOURCE INSTALLATION, you
do this manually. The chkconfig variable will determine if the Linux
Job kernel feature is initialized (and loaded if it is a loadable
This operation must be done as root (SOURCE INSTALLATION ONLY):
chkconfig --add job
3. Reboot the system with the new kernel.
4. Now, when a user gains access to the system through a PAM entry point
that is configured, a new job should be created to contain all the
processes for that user.
5. The job-1.0.0 package user commands are installed in /usr/local/bin
and the manual pages are installed into /usr/local/man (by default).
Those directories must be in your PATH and MANPATH to access the
and manual pages.
/lib/security/pagg_job.so -- PAM session module
2. header files:
/usr/include/paggctl.h -- To include for paggctl system call
3. command files:
/usr/local/bin/jkill -- command to signal job processes
/usr/local/bin/jstat -- command to get job status
/usr/local/bin/jwait -- command to wait on job completion
/usr/local/bin/jsethid -- Set the hid segement for jid
/usr/local/bin/jdetach -- Detach process(es) from a job
4. man pages:
Sam Watters <watters@xxxxxxx>
Sam Watters Resource Mgmt Team SGI watters@xxxxxxx