Monday, December 31, 2012

In unix, if we run a process(a shell script).It will not return to the terminal untill the script ends.
lets say there is a script temp.sh
>cat temp.sh
#!/bin/sh
for i in 2 3 3 3 45
do
sleep 10
echo $i
done
This process will sleep for 10 seconds for every iteration and prints the value opf $i.
if i run the process as below:
> ./temp.sh
2
3
3
3
45
>
 If you see above ,you can observer that the script took 50 seconds to return to the terminal.
so better for us to run the process in the background.so how do you do it?see below:
> ./temp.sh &
[1] 20323
>
The number which is present in teh square braces is the job id and the number outside the square braces is the process id(pid)
Now if you see ps output you can see the process as running or also in the output of jobs
Yes,the command jobs will return all the backgropund processes that were stared by you.
>jobs
[1] + Running ./temp.sh
[2] - Running ./temp.sh
[3] Running ./temp.sh
[4] Running ./temp.sh
fg is the command to bring it back to the foreground as shown below.
>fg 1
[CTRL -c]
As seen above i have ended the process and it no longer exists. now if i again run jobs
>jobs
[2]  + Running                       ./temp.sh
[3]    Running                       ./temp.sh
[4]  - Running                       ./temp.sh
>

0 comments:

Post a Comment