Scope

The functions for terminating task processes for the JobScheduler Master and Universal Agent have been extended to allow the use of both SIGTERM and SIGKILL signals on Unix servers:

SIGTERM is sent first and allows an orderly termination of task processes to take place within a limited period of time.

If the time allowed has been exceeded and the processes are still running then SIGKILL will be sent.

The information contained in this article draws together detailed information contained in a range of issues and should primarily be of interest to persons in engineering and to a lesser extent persons in operating functions.

Feature History

FEATURE AVAILABILITY STARTING FROM RELEASE 1.9

Change Management References

Use Case

Users who schedule programs and scripts that are aware of SIGTERM signals can implement clean-up procedures on receipt of the signal. Clean-up includes e.g. removal of temporary files, disconnect from a database and similar tasks.

The use of both SIGTERM and SIGKILL signals on Unix servers has the following advantages:

The use of SIGTERM before SIGKILL means that there is a greater chance of data being saved after the signal has been issued.

The SIGTERM signal can - in contrast with SIGKILL - be monitored, i.e. a post-processing Script can be carried out.

The implementation of SIGTERM allows post-processing methods such as spooler_process_after().

The time allowed between the SIGTERM and SIGKILL signals can be specified in the command using the timeout attribute (the default is 15 sec): <kill_task … timeout=".."/>

This feature can also be applied for:

remote processes, i.e. processes started by SSH and those started by an Agent,

Delimitation

This feature is intended for Unix platforms that implement the SIGTERM and SIGKILL signals. It is not intended for Windows platforms for which exclusively the kill Immediately command applies.

When using traps then please consider that the process created by the <script ... language="shell"/> element receives the signal. Subsequent scripts that are called within the <script ... language="shell"/> element will not receive the signal. You could therefore:

configure traps directly within the <script ... language="shell"/> element. The shell process will then receive and handle the signal.

configure traps in a shell script that is added by an <include> element instead of being stated within the <script ... language="shell"/> element. The included shell script will receive and handle the signal.

forward signals to subsequent shell scripts that are called within a <script ... language="shell"/> element.

This feature has been fully implemented for the Universal Agent and for the Classic JobScheduler Agents (
JS-1420
-
Getting issue details...STATUS
).

Implementation Summary

The implementation of the different termination operations available for the JobScheduler Master and Universal Agent is summarized in the table below.

The links lead to the issues relevant to the implementation of the feature.

Task Termination in JOC

The following screenshot shows how a task can be terminated using the Task menu in JOC's Task pane. This pane is shown in the Jobs tab when the task is running and the task can be terminated either with timeout or immediately.

Examples

Using a SIGTERM trap to show the difference between the kill and terminate commands