Fwd: Re: parallel bash scripts

Mark LaPierre marklapier at aol.com
Wed Mar 28 21:41:46 UTC 2012


Hi mark.

I have a series of php apps that are async, and modify different tbls
within a mysql db. The php apps also perform other tasks as well.

The process needs to be able to periodically run the php apps. The
shell scripts are used to run the individual php apps. During testing,
I wanted to be able to run the apps, in a background manner, as well
as display the output for debugging.

The system has ~5-10 php apps that will be running.

The overall goal for all of this is part of a targeted web crawler,
where the php apps perform backend processing to manage the data from
the crawling process as it gets stored in the database.

So the process should fire up all of the processes, and they should
then run every X secs... At least thats the way I ultimately want it
to work. But I'm unable to figure out how to do this, and at the same
time, display the output for the debugging process...

Hopefully I've done a better job of explaining some of what this is for..



On Tue, Mar 27, 2012 at 10:23 PM, Mark LaPierre <marklapier at aol.com> wrote:
> I don't understand what you are trying to do.
>
> Do you want to run these commands in series?  Run one, wait for it to
> complete, then start the other?
>
> If that's where you want to go then leave off the trailing ampersand but
> keep the redirection.  The output of the first program will appear in the
> terminal due to the redirection.  When the first program ends the second
> program will start.  That one needs redirection of standard out to standard
> error too so that it's output will appear in the terminal as well.
>
> Solution with trailing ampersand is appropriate for endless loops.
> Solution without trailing ampersand is appropriate for serial operation.
>
> I put the loop counter in the demo program just to stop the thing without
> having to us ps and kill.  Without the loop counter they will continue to
> print inter-twined messages forever.
>
> Does the program webservice_setup.sh start programs itself that you are
> trying to read the output from?  Are they correctly redirected to send their
> standard output to standard error?
>
>
> On 03/27/2012 10:01 PM, bruce wrote:
>>
>> Hi mark.
>>
>> the following is part of what i have tried... and what isn't working.
>> i changed the test shell scripts to no longer have infinite loops.
>> they simply execute the php app one time.
>>
>> however, it still doesn't work.
>>
>> in the initial shell script, it calls a php app that does some mysql
>> processes. the php app has a number of echo/print msgs to track what's
>> going on for testing..  when running as a background process the shell
>> script/php app isn't working.
>>
>> the cmdline sits.. when i select the "return" key.. the process is
>> diplayed as being stopped...
>>
>> if i remove the background "&" the shell script runs...
>>
>> #### -- not working
>> /apps/parseapp2/webservice_setup.sh    1>&2&
>>
>> #### -- works
>> /apps/parseapp2/webservice_setup.sh
>>
>> /apps/parseapp2/webservice_setup.sh
>> -------------------------------
>> echo "starting the osu webservice test"
>> mysql -uroot1 -pfoo<  /apps/parseapp2/setup_tblDb.sql
>> mysql -uroot1 -pfoo<  /apps/parseapp2/webservice/webservice_tbls.sql
>> /apps/parseapp2/parse_tbl_setup.php
>> echo "started the osu webservice test"
>>
>>
>> thoughts???
>>
>> thanks
>>
>>
>>
>>
>>
>> On Tue, Mar 27, 2012 at 9:37 PM, Mark LaPierre<marklapier at aol.com>  wrote:
>>>
>>> Check out the redirection at the end of each command.  1>&2 redirects the
>>> standard out of your child command to the standard error which then
>>> appears
>>> in the parent shell.  At the end the last&  launches your command into a
>>>
>>> background shell and then moves on to launch the next command.  The
>>> redirections don't care if the command ever terminates.
>>>
>>> The result is that both commands are launched and the parent shell
>>> terminates leaving the standard error attached to the terminal that the
>>> parent was launched in.
>>>
>>>
>>> On 03/27/2012 09:08 PM, bruce wrote:
>>>>
>>>>
>>>> marklapier at aol.com
>>>>
>>>> hey mark....
>>>>
>>>> what you have, appears to be pretty close to what i had... except my
>>>> tests never ended... the loops are infinite...
>>>>
>>>> can i do a fpaste and have you take a look at what i have?
>>>>
>>>> -btuce
>>>>
>>>>
>>>> On Tue, Mar 27, 2012 at 9:00 PM, Mark LaPierre<marklapier at aol.com>
>>>>  wrote:
>>>>>
>>>>>
>>>>> On 03/27/2012 05:25 PM, bruce wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> hi.
>>>>>>
>>>>>> got a couple of test bash scripts.
>>>>>>
>>>>>> dog.sh, cat.sh
>>>>>> each script runs the underlying php in an endless loop.
>>>>>>
>>>>>> I'm trying to figure out how to run the scripts in parallel, from the
>>>>>> same parent shell script. something like:
>>>>>>
>>>>>> test.sh
>>>>>>
>>>>>>
>>>>>> where dog.sh would be :
>>>>>> --------------------------------
>>>>>> while true
>>>>>> do
>>>>>>   pgrep dog
>>>>>>   if [ $? -ne 0 ]
>>>>>>   then
>>>>>>     /dog.php
>>>>>>   fi
>>>>>> sleep 5
>>>>>> done
>>>>>>
>>>>>> my current tests, run dog.sh, which runs the dog.php ... but the test
>>>>>> never gets to run cat.sh
>>>>>>
>>>>>> thoughts/comments...
>>>>>>
>>>>>> thanks
>>>>>
>>>>>
>>>>>
>>>>> Hey Bruce,
>>>>>
>>>>> Do you mean to run these subprograms in parallel or in series?
>>>>>
>>>>> cat.sh
>>>>> #! /bin/bash
>>>>>
>>>>> CAT=0
>>>>> until [ $CAT -eq 10 ]
>>>>> do
>>>>> echo "Inside a dog it's too dark to read. $CAT"
>>>>> CAT=$[$CAT + 1]
>>>>> sleep 2
>>>>> done
>>>>>
>>>>>
>>>>> dog.sh
>>>>> #! /bin/bash
>>>>>
>>>>> DOG=0
>>>>> until [ $DOG -eq 10 ]
>>>>> do
>>>>> echo "Next to a dog a book is man's best friend. $DOG"
>>>>> DOG=$[$DOG + 1]
>>>>> sleep 2
>>>>> done
>>>>>
>>>>>
>>>>> test.sh
>>>>> #! /bin/sh
>>>>>
>>>>> /home/mlapier/test/dog.sh 1>&2&
>>>>> /home/mlapier/test/cat.sh 1>&2&
>>>>>
>>>>>
>>>>> [mlapier at mushroom test]$ ./test.sh
>>>>> [mlapier at mushroom test]$ Next to a dog a book is man's best friend. 0
>>>>> Inside a dog it's too dark to read. 0
>>>>> Next to a dog a book is man's best friend. 1
>>>>> Inside a dog it's too dark to read. 1
>>>>> Next to a dog a book is man's best friend. 2
>>>>> Inside a dog it's too dark to read. 2
>>>>> Next to a dog a book is man's best friend. 3
>>>>> Inside a dog it's too dark to read. 3
>>>>> Next to a dog a book is man's best friend. 4
>>>>> Inside a dog it's too dark to read. 4
>>>>> Next to a dog a book is man's best friend. 5
>>>>> Inside a dog it's too dark to read. 5
>>>>> Next to a dog a book is man's best friend. 6
>>>>> Inside a dog it's too dark to read. 6
>>>>> Next to a dog a book is man's best friend. 7
>>>>> Inside a dog it's too dark to read. 7
>>>>> Next to a dog a book is man's best friend. 8
>>>>> Inside a dog it's too dark to read. 8
>>>>> Next to a dog a book is man's best friend. 9
>>>>> Inside a dog it's too dark to read. 9
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> users mailing list
>>>>> users at lists.fedoraproject.org
>>>>> To unsubscribe or change subscription options:
>>>>> https://admin.fedoraproject.org/mailman/listinfo/users
>>>>> Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines
>>>>> Have a question? Ask away: http://ask.fedoraproject.org
>>>
>>>
>>>
>


More information about the users mailing list