kingsmasher1 kingsmasher1 - 1 month ago 6
Linux Question

Invoking subshells from script does not work if run in background

I have a script running in background, like:

su - insite1 -c "invokeTest.sh" &


Now this script, invokeTest.sh has contents:

while [ 1 ]
do
echo "Hello World from invokeTest" >> /tmp/invokeTest
( exec "/tmp/test.sh" )
done


Although it prints, "Hello World from invokeTest" it does not call test.sh.

My question:
Is there any way to call test.sh in infinite while loop directly from
su - insite1 -c" "
so that we can totally skip
invokeTest.sh
itself (but test.sh needs to run in background"?

If no, how to make sure test.sh is called from
invokeTest.sh
?

Answer

To answer your question about running the command without a script, you can put any shell commands into the -c argument, including a while loop. So you can write:

su - insite1 -c 'while :; do echo "Hello World" >> /tmp/invokeTest; /tmp/test.sh; done' &
Comments