I am using Ubuntu.
If I am given a job’s PID, how can I bring the paused job to the background/foreground and running state?
I know bg/fg but they require job id not PID.
Also, I pause jobs with
kill -STOP <PID>
and I know that I can resume it with
kill -CONT <PID>
but I do not know how I can use bg and fg commands with this PID.
Edit: I want to make this clear:
Scenario: I have a paused job that I know its PID. How can I bring it back and make it work background?
You cannot use fg and bg with a pid. They are shell builtin-s which require a jobspec, not a pid.
you can use top or ps command to see all of your PID and also you can use pidof command to gain PID
for example I wanna check the PID of bash command so I will write :
pidof bash
or with ps command you can write
ps -C bash
or with ps and grep you can write :
ps aux | grep bash
or just write top and check what ever you need.
for sending a command to bg or background you have to add & at the end of your command for example I wanna send xeyes to bg so I will write :
xeyes &
if you wanna bring it to foreground or fg you will write :
fg xeyes
you can also see all of your jobs with jobs -l command.
for example I want to run xeyes command so I will write :
xeyes
please attention to eyes when you moving your mouse, now if I want send it to bg I can use CTRL+Z on my keyboard.
if you want to check it you can write jobs
you will see xeyes is stopped !
left of each process is a number like this :
[1]- 6331 Running xeyes &
[2]+ Stopped xeyes
for example for me is 2 you can start your PID again like this :
bg %2
or you can find PID with -l in jobs to see PIDs too
[1]- 6331 Running xeyes &
[2]+ 6332 Stopped xeyes
instead of bg %2 I can write bg 6332 to change state to Running !
and also you see + or - in this case, if the + sign was next to that process is stoped you can just write bg without any this like this :
bg # attention to +
if you want to bring your command to fg is exactly like bg, which means you can use one of that ways that I already mentioned !
I think about your question, it means the process has received a STOP signal, and won't do anything much until it receives a CONT signal, not even terminate.
Actually the most common source of STOP signals is the user hitting CTRL+Z while the process is in the foreground, and the common way to send a CONT afterwards is typing fg or bg which continue the process in the foreground and background respectively, another way to send STOP to a process is kill -STOP PID. Similarly, CONT can be sent to a process with kill -CONT PID.
Since you sent TERM signals to the processes, I assume you want them to terminate. For that to happen, the processes must receive CONT signals. You can send those by typing kill -CONT 6331 6332 in a terminal window. please aware that these PIDs is belong to me and you have to change it to yours !
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With