- How do I execute a command in the foreground?
- 3 Answers 3
- You must log in to answer this question.
- Related
- Hot Network Questions
- Subscribe to RSS
- How to Work with Foreground and Background Process in Linux
- Linux Foreground Process
- Linux Background Process
- How to Bring a Background Linux Process to The Foreground
- How to Run a Linux Process in the Background
- How to Send Foreground Linux Processes to Background
- How To Show Background Processes
- How to Send Background Processes to the Foreground
- Conclusion
- About the author
- John Otieno
- Running Linux Commands in Background and Foreground
- Start a Linux process in the background directly
- Send a running Linux process to the background
- See all processes running in the background
- Bring a Process to Foreground in Linux
How do I execute a command in the foreground?
If you’re happy with one or several of the answers, upvote them. If one is solving your issue, accepting it would be the best way of saying «Thank You!» Accepting an answer also indicates to future readers that the answer actually solved the problem.
3 Answers 3
If you drop the & the command will run in the foreground:
If you want to bring a background command to the foreground, run
You can specify a “jobspec”, for example
will bring job number 2 to the foreground ( jobs will list the job table).
The & tells it to run in the background. Remove it.
The command with & brings it in background. if you type a command without &, you can bring it in background with:
If you want to go back to foreground, type
You must log in to answer this question.
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.17.43537
Linux is a registered trademark of Linus Torvalds. UNIX is a registered trademark of The Open Group.
This site is not affiliated with Linus Torvalds or The Open Group in any way.
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
How to Work with Foreground and Background Process in Linux
An important concept to understand when working with the Linux process is what is the foreground and background process and how to control them. In Linux, if you execute any programs a process will be created with a unique ID (PID) and by default, the process runs in the foreground.
Let’s take a simple curl command – when you send a request to download a zip file over the internet, curl will run as a foreground process and all the outputs will be displayed in the terminal.
There are two important keystrokes that you have to understand before working with the background and foreground process.
- CTRL+Z – This keystroke will stop the running process.
- CTRL+C – This keystroke will kill the running process and free up memory in RAM.
Linux Foreground Process
A process when you start from the terminal by default runs as a foreground process. The foreground process will not allow you to use the terminal unless the process is completed. In this case, if you need access back to your terminal then you have to open a new terminal window or stop the running process or kill it.
It is also important to note, any process that is created via the terminal is attached to the terminal session and the process will be terminated once the terminal is closed. This is because bash is the parent process and any command you run in the terminal will be the child process to the bash so when you close the terminal parent process (bash) will automatically terminate all its child processes and its own.
Below is an example of the foreground process. This is just a simple sleep command that will return the prompt to the user only after it is completed.
Now I have few options to gain control back to the terminal prompt. Either I have to cancel or stop the process or open a new terminal tab. When you stop a running process by pressing (CTRL+Z) you will get output as shown in the below image.
To get the list of jobs either in running or stopped state you can run the below command.
From the above image, you can see the jobs command gives you the process ID, what command you submitted, what is the status of it. You will also get a job ID for every process that you submit ( [1], [2] [3], etc..).
To start a job that is in the stopped state or bring the background job to the foreground run the following command.
Where %4 denotes the job ID that you can get from the “jobs -l” command.
Linux Background Process
Background process runs your process in the background and will not take control of your terminal prompt. You can start a session and you are free to use your terminal. To submit a command as a background process you have to add & symbol at the end of the command.
Run jobs command to get the list of jobs.
From the below image you can see Job ID [5] is assigned to the job and & symbol tells it is submitted and running as a background job.
You can start any stopped job in the background directly by running the following command.
Where %2 denotes the job ID that you can get from the “jobs -l” command.
That’s it for this article. If there is any feedback or suggestion leave it in the comment box.
How to Bring a Background Linux Process to The Foreground
A process is an instance of a running program. Any program you execute in a Linux shell spawns a new process that’s identifiable using a process name and a Unique Process ID. As a system administrator, you will need to be familiar with the command for managing processes in a Linux system
This article will focus on job control commands, allowing you to send processes in the background and bringing background processes to the foreground.
How to Run a Linux Process in the Background
To run a process in the background in Linux, use the ampersand symbol &. For example, to start the calculator in the background:
Executing the process in the background gives an output with two values. The first value, enclosed in square brackets, shows the Job ID, and the second value indicates the process ID.
How to Send Foreground Linux Processes to Background
We can also send a foreground process to the background using the CTRL + Z shortcut. This shortcut will suspend the process; then, you can use the command bg to send it to the background.
For example, let us start GParted in the foreground (this will prevent the shell from executing other commands until we terminate the process).
While the process is running, press CTRL + Z to suspend the process. That will return our shell prompt, enter the command bg, and this will send the process in the background as shown:
How To Show Background Processes
To show the processes in the background, use the jobs command.
The jobs -l command will show the Job ID, Process ID, process state, and the process name.
How to Send Background Processes to the Foreground
We can also bring a background process to the foreground using the fg command followed by the %[job id]
Let us start by listing the process in the background:
To bring a process such as GParted, with Job ID, 2 to the foreground, we use the command:
As you can see from the command above, this brings the command to the foreground.
Conclusion
In this tutorial, we discussed how to manage jobs, send process to the background and bring background processes to the foreground.
About the author
John Otieno
My name is John and am a fellow geek like you. I am passionate about all things computers from Hardware, Operating systems to Programming. My dream is to share my knowledge with the world and help out fellow geeks. Follow my content by subscribing to LinuxHint mailing list
Running Linux Commands in Background and Foreground
Learn how to run commands in background in Linux. You’ll also learn how to bring the background jobs back to foreground.
If you have a long-running task, it’s not always wise to wait for it to finish. I mean why keep the terminal occupied for a particular command? In Linux, you can send a command or process to the background so that the command would be running but the terminal will be free for you to run other commands.
In this tutorial, I’ll show you a couple of ways to send a process in the background. I’ll also show you how to bring the background processes back to the foreground.
Start a Linux process in the background directly
If you know that the command or process is going to take a long time, it would be a better idea to start the command in the background itself.
To run a Linux command in the background, all you have to do is to add an ampersand (&) at the end of the command, like this:
Let’s take a simple bash sleep command and send it to the background.
When the command finishes in the background, you should see information about that on the terminal.
Send a running Linux process to the background
If you already ran a program and then realized that you should have run it in the background, don’t worry. You can send a running process to the background as well.
What you have to do here is to use Ctrl+Z to suspend the running process and then use ‘bg‘ (short for background) to send the process in the background. The suspended process will now run in the background.
Let’s take the same example as before.
[email protected]:~$ sleep 60 ^Z [1]+ Stopped sleep 60 [email protected]:~$ bg [1]+ sleep 60 &
See all processes running in the background
Now that you know how to send the processes in the background, you might be interested in knowing which commands are running in the background.
For this purpose, you can enter this command in the terminal:
Let’s put some commands in the background first.
Now the jobs command will show you all the running jobs/processes/commands in the background like this:
jobs [1] Running firefox & [2]- Running gedit & [3]+ Stopped vim
Do you notice the numbers [1], [2] and [3] etc? These are the job ids. You would also notice the – and + sign on two of the commands. The + sign indicates the last job you have run or foregrounded. The – sign indicates the second last job that you ran or foregrounded.
Bring a Process to Foreground in Linux
Alright! So you learned to run commands in the background in Linux. But what about bringing a process running in the background to the foreground again?
To send the command to the background, you used ‘bg’. To bring the background process back, use the command ‘fg’.
Now if you simply use fg, it will bring the last process in the background job queue to the foreground. In our previous example, running ‘fg’ will bring Vim editor back to the terminal.
If you want to bring a certain process to the foreground, you need to specify its job id. The job id is the number you see at the beginning of each line in the output of the ‘jobs’ command.
Where n is the job id as displayed in the output of the command jobs.
This was a quick one but enough for you to learn a few things about running commands in the background in Linux. I would advise learning nohup command as well. This command lets you run commands in the background even after you log out of the session.
If you have questions or suggestions, please leave a comment below.