disown command is a part of the Unix ksh, bash, and zsh shells and is used to remove jobs from the current shell. Like
pwd, it is a shell built-in command, and doesn’t require root privileges.
This tutorial will cover different ways you can use the
disown command in Linux to both terminate jobs and keep them running after you log off.
- A system running Linux
- Access to the command line / terminal window
disown Command Syntax
The basic syntax for the
disown command is:
disown [options] jobID1 jobID2 ... jobIDN
Using the disown Command in Linux
disown command in Linux is used to remove jobs from the job table. You can also use it to keep a longer and more complex job running in the background even after you log out of the server.
Review Ongoing Jobs
In order to use the
disown command, you first need to have jobs running on your Linux system.
In this example, we will start up a couple of jobs running in the background:
cat /dev/random > /dev/null & ping google.com > /dev/null &
jobs command to list all current jobs:
You should get a similar output to the one seen below:
ping command is denoted by ‘+’, which means it’s a currently active job.
cat command is denoted by ‘-’, meaning it will become the active job if the
ping command is terminated.
Remove All Jobs
To remove all jobs from the job table, use the following command:
Remove Specific Jobs
If you want to remove a specific job from the job table, use the
disown command with the appropriate job ID. The job ID is listed in brackets on the job table:
In our example, if we want to remove the
ping command, we need to use the
disown command on job 2:
disown command without any options or job IDs removes the last job on the job table:
Note: Job IDs always begin with the
% character. To select a specific job from the list, use
%n, where n is the job number. Using
%% selects the currently active job.
Remove Currently Running Jobs
To remove only the jobs currently running, use the following command:
In our example, the above-mentioned command clears the job table, since both jobs are currently running in the background:
Keep Jobs Running After You Log Out
Once you exit your system’s terminal, all currently running jobs are automatically terminated. To prevent this, use the
disown command with the
disown -h jobID
In our example, we want to keep the
cat command running in the background. To prevent it from being terminated on exit, use the following command:
disown -h %1
After you use the
disown command, close the terminal:
Any jobs you used the
disown -h command on will keep running.
After following this tutorial, you have learned to use the
disown command to remove jobs from the job list or keep them running even after you close the terminal window.
For more Linux commands, take a look at our Linux Commands Cheat Sheet.