I invoke a script (do_something) in background via another script (do_manythings) as below.
nohup do_something &
How would I know in the parent script (do_manythings) that the job invoked (do_something) has been done?
I invoke a script (do_something) in background via another script (do_manythings) as below.
nohup do_something &
How would I know in the parent script (do_manythings) that the job invoked (do_something) has been done?
If you want to fire off a background job, do some other stuff, then stop and wait for the background job to finish, you can do
nohup do_something & pid=$! ...more stuff... wait $pid
Alternatively, you can test for the job having exited like this:
nohup do_something & pid=$! ...more stuff... ps -p $pid > /dev/null [ $? == 1 ] && echo "it's gone, buddy!"
You can also look for start-stop-daemon
(examples in /etc/init.d/
) if you want to use do_something
as a daemon.
You could check
ps -ef | grep 'do_something
If the result shows up, your script is still running.
you could also run
ps -ef | grep 'your_user_name'
to check all active running jobs on your ID.