How to Use the Command 'batch' (with Examples)
The batch
command is a utility for scheduling jobs that will be executed when the system is under low load. Similar to the at
command, it allows users to queue commands to be executed at a later time without user intervention, ensuring that tasks do not overwhelm system resources when they are already heavily utilized. The results from these commands are sent to the user’s mail by default, allowing users to check the output once the task is completed. The batch
command is particularly useful in scenarios where system load needs to be managed, and certain tasks can be deferred until resources are more readily available.
Use case 1: Start the atd
daemon
Code:
systemctl start atd
Motivation:
Before using the batch
command, it is necessary to have the atd
(Advanced Task Scheduler Daemon) service running. This daemon is responsible for processing the jobs that are scheduled using the at
, batch
, and related commands. Without atd
, scheduled jobs won’t be executed. Therefore, this command initializes the daemon, making sure the system is ready to handle the queued batch jobs.
Explanation:
systemctl
is the command-line utility that is used to manage system services. It is part of thesystemd
suite, which is an init system used in many Linux distributions.start
is the argument that tellssystemctl
to initiate a service.atd
specifies the Advanced Task Scheduler Daemon service that we want to start.
Example Output:
Running this command won’t produce a visible output if successful, as systemctl
typically gives output only in case of a failure. You might see messages like Job for atd.service failed
if the service fails to start.
Use case 2: Execute commands from stdin
Code:
batch
Motivation:
In some cases, users may want to schedule a batch of commands manually to ensure they run when system load permits. The batch
command allows execution of commands directly entered into the terminal until the end-of-input signal is given (usually by pressing Ctrl + D
). This is advantageous in interactive sessions where commands need to be executed sequentially but should not all run immediately to prevent resource exhaustion.
Explanation:
- When
batch
is executed with no additional arguments, it waits for input fromstdin
—standard input—and allows users to enter the commands that need to be queued. - Upon completion of entering commands, pressing
Ctrl + D
will signal the end of input, and the entered commands will be scheduled for later execution.
Example Output:
No direct output appears upon executing the batch
command until the process is complete. Scheduled commands will run at low system load, and their results are sent to the user’s mail, which could read something like “Output of the batch job commands.”
Use case 3: Execute a command from stdin
Code:
echo "./make_db_backup.sh" | batch
Motivation:
This use case demonstrates how to pipe a single command to batch
for execution once the system is less busy. It is an efficient way to schedule critical maintenance tasks, such as database backups, that do not need to run immediately but should be completed without interfering with peak system performance times.
Explanation:
echo
is a command used to output the string tostdout
, which can then be piped into other commands."./make_db_backup.sh"
is the command/script intended to be executed. This hypothetical script could be responsible for creating database backups.- The pipe
|
takes the output of theecho
command and feeds it as input to thebatch
command. batch
takes this input and schedules it for execution when system load decreases.
Example Output:
Similar to the previous examples, there is no immediate output from executing this command. The batch
job will execute ./make_db_backup.sh
in the background and send any output or results to the user’s mail, providing details about the job execution status.
Conclusion:
The batch
command is invaluable for managing scheduled jobs and ensuring system resources are optimized by deferring non-urgent tasks to times of lower demand. It’s particularly suited for system administrators and users who need to balance the timing of routine tasks without manual intervention. It’s a powerful tool in the toolkit for automation and effective resource management.