Unix Job processing
I learned something new from my brother the other day about unix job processing. We had written a script to do some specific analysis of the logs for a site I was workign on, and it would take about 30 seconds to a minute for the script to complete.
I had known for quite some time that you can run a script in the background by appending an &
to the end of your command, for instance:
$> ./some_slow_script.pl &
I often run scripts that take a while, but forget to append the &
so they run in the background. Well it turns out you can hit Ctrl+Z
this will pause the process that is currently running, and give you a shell. Now you can type bg
to send that process into the background. Now you can use the jobs
command to see how its doing, or the fg
command to send it back into the foreground.
So for example you might do something like this:
$> ./some_slow_script.pl hits Ctrl+Z [1]+ Stopped ./some_slow_script.pl $> $> bg [1]+ ./some_slow_script.pl & $> jobs [1]+ Running ./some_slow_script.pl & $> jobs [1]+ Done ./some_slow_script.pl
Like this? Follow me ↯
Tweet Follow @pfreitagUnix Job processing was first published on November 28, 2005.
If you like reading about unix, shell, bash, jobs, bg, or fg then you might also like:
- The 15 Essential UNIX commands
- Bash Loop To Wait for Server to Start
- Recursively Counting files by Extension on Mac or Linux
- Why is my cron.daily script not running?
- Shell Script for backpack todo lists
Want Security Advisories via Email?
Advisory Week is a new weekly email containing security advisories published by major software vendors (Adobe, Apple, Microsoft, etc).
Comments
http://linuxreviews.org/man/screen/
Basically you can use it to start processes in different virtual terminals and detach from them to new terminals or just logout altogether. I used to use screen way back when to run IRC bots... I could start one in a screen, detach from it, and logout of my shell and it would still be running.
Actually, IIRC, you can also start background processes which will still run after you logout by prepending a 'nohup' in front of them. ie: 'nohup ./script &'. However screen gives you the ability to reattach to the process if you need to interact with it, check it's progress, etc.
Stuff like this can certainly come in handy.
hits Ctrl+Z
[1]+ Stopped ./some_slow_script.pl
hits Ctrl+Z on another process
[2]+ Stopped ./another_slow_script.pl
Now you can recover them individually
$ fg 1
or
$ fg 2