
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:
systemctlis the command-line utility that is used to manage system services. It is part of thesystemdsuite, which is an init system used in many Linux distributions.startis the argument that tellssystemctlto initiate a service.atdspecifies 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
batchis 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 + Dwill 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:
echois 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 theechocommand and feeds it as input to thebatchcommand. batchtakes 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.
