<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: arial,helvetica,sans-serif; font-size: 12pt; color: #000000'>Actually, I misunderstood your question on that one. Those options do what I said on read, but I guess I missed the part where it didn't work without the read. Phil Turmel had the right answer. The disown command is a bash builtin, so you look in the bash docs for it. The called commands can do what they like with the signals bash sends, though. xterm seems to ignore the signal--I don't have the same problem when I start xterms in the background as you do with mate-terminal. I believe it may make a difference if you have job control enabled, but I'd have to read up to remember the details on that one.<div><br></div><div>Scott<br><br><hr id="zwchr"><div style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><b>From: </b>"Ron Frazier (ALE)" <atllinuxenthinfo@techstarship.com><br><b>To: </b>"Atlanta Linux Enthusiasts" <ale@ale.org><br><b>Sent: </b>Thursday, April 18, 2013 10:34:40 AM<br><b>Subject: </b>Re: [ale] how do I - icon starts script starts 4 scripts<br><br>
Hi Scott,<br>
<br>
Thanks again. I may have to try those additional read options or maybe
the sleep command that Jim mentioned. Not sure how I'm going to
proceed on that yet, but it's good to have some options.<br>
<br>
Sincerely,<br>
<br>
Ron<br>
<br>
<br>
On 4/17/2013 10:25 PM, Scott Plante wrote:
<blockquote cite="mid:76B89711-735F-42A0-83BA-12DE118283E9@insightsys.com">
<div>You're very welcome. I'm glad my reply was helpful.</div>
<div><br>
</div>
<div>In one of your other emails you were wondering about the # being
used for comments and the shell for the start of the script. It goes to
backwards compatibility. Way, way back in the day, the original Unix sh
didn't have an option for that, so it was added as #! at the very start
of the script. The original sh just ignored it as a comment so it
didn't break earlier shells. </div>
<div><br>
</div>
<div>The "read" command is a shell builtin, so you have to check bash
man pages for it's options. It has a -t option for the number of
seconds to wait for a response. So you could change your line to:</div>
<div><br>
</div>
<div>read -t 30 junk</div>
<div><br>
</div>
<div>and the script would end after 30 seconds if you didn't hit
return. You could also add "-n 1" for a "press any key" functionality.</div>
<div><br>
</div>
<div>Scott <br>
<br>
<br>
<br>
Sent from my tablet</div>
<div><br>
On Apr 17, 2013, at 9:35 PM, "Ron Frazier (ALE)" <<a href="mailto:atllinuxenthinfo@techstarship.com" target="_blank">atllinuxenthinfo@techstarship.com</a>>
wrote:<br>
<br>
</div>
<blockquote>
<div>
Scott,<br>
<br>
I want to thank you for the very detailed response you gave. This gave
me enough information to solve the problem. I thought I'd share the
solution in case others might benefit from it. What I think is useful,
is the way I've stacked multiple scripts together and attached them to
an icon. This can be handy whether you're mining or not.<br>
<br>
Here is a simplified version of the MINER1 script that runs the
specific process for graphic card 1. There will be a MINER2, 3, and 4.<br>
<br>
#!/bin/bash -eu<br>
# script to start litecoin mining on the first graphic card<br>
cd ~/cgminer<br>
export -task-specific-stuff-<br>
./cgminer -lots-of-special-parameters-for-gpu1-only-<br>
echo "Press enter to continue."<br>
read junk<br>
<br>
I got the -eu part on the bash line from a book, which adds in some
special error checking for bash.<br>
The last two lines force the script to pause before closing its window
until you press enter.<br>
<br>
For MINER2, 3, and 4, I've temporarily commented out all lines except
the last two, so I can use them for testing.<br>
<br>
Here is the START-MINERS script, which starts each individual miner
script, in its own separate window, with it's own separate geometry and
title.<br>
<br>
#!/bin/bash -eu<br>
# program to start all mining scripts<br>
cd ~/mining-scripts<br>
# commands to start the first miner<br>
mate-terminal --geometry=70x4+1800+100 -t "Miner 1" -e ./miner1 &<br>
# commands to start the second miner<br>
mate-terminal --geometry=70x4+1800+250 -t "Miner 2" -e ./miner2 &<br>
# commands to start the third miner<br>
mate-terminal --geometry=70x4+1800+400 -t "Miner 3" -e ./miner3 &<br>
# commands to start the fourth miner<br>
mate-terminal --geometry=70x4+1800+550 -t "Miner 4" -e ./miner4 &<br>
echo "Press enter to continue."<br>
read junk<br>
<br>
I have to use mate-terminal to activate Mint's terminal emulator. The
--geometry option (mentioned by both you and Brian) sets the window
size for each MINERx script as well as a location so they all stack up
on the right of my monitor. The -t option specifies a unique title for
each window. Each MINERx program is started with the "&" command
(also mentioned by you and Brian) so the master script keeps on going
without waiting. For some reason, I had to put the read command at the
end of the START-MINERS script or the sub scripts never kick off. I
have no idea why.<br>
<br>
I'd rather have a delay in the START-MINERS script so it would
terminate without me pressing a key. I haven't found out how to do
that.<br>
<br>
Finally, here's how I created an icon in GNOME to kick off the whole
enchilada.<br>
<br>
Right click on the desktop, click create launcher, select type:
application, name: Start Miners, command: mate-terminal -e
/home/ron/mining-scripts/start-miners, click OK.<br>
<br>
Now, upon clicking this icon, it starts the start-miners script, which
in turn starts MINER1, 2, 3, and 4, which in turn post 4 terminal
windows on the screen and run the processes I want them to.<br>
<br>
Very cool.<br>
<br>
Thanks again for the help.<br>
<br>
Sincerely,<br>
<br>
Ron<br>
<br>
<br>
On 4/17/2013 3:36 PM, Scott Plante wrote:
<blockquote cite="mid:362490885.2420.1366227399582.JavaMail.root@insightsys.com">
<div style="font-family: arial,helvetica,sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">(answers
inline)<br>
<div>
<div><br>
</div>
<div><font face="Helvetica, Arial, sans-serif">> So, my first
question is how do I set up a basic script file </font></div>
<div><font face="Helvetica, Arial, sans-serif">> with these
commands in it. I can fill in all the details later.</font></div>
<div><font face="Helvetica, Arial, sans-serif">> </font></div>
<div><font face="Helvetica, Arial, sans-serif">> cd ~/cgminer</font></div>
<div><font face="Helvetica, Arial, sans-serif">> export .....</font></div>
<div><font face="Helvetica, Arial, sans-serif">> ./cgminer
.....</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">Yes, you can do
that.
You'll need to set the execute bit using "chmod +x miner1" or "chmod
755 miner1" or similar.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">Usually you'll
want to
put this as the first line of your script:</font></div>
<div><font face="Helvetica, Arial, sans-serif">#!/bin/bash</font></div>
<div><font face="Helvetica, Arial, sans-serif">But it's not
strictly
necessary. It comes into play usually when you're in one shell and the
script is written for another, but it's a good habit to get into.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">> Also, how do
I
put comments in the file?</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">bash and most
Linux
shells use # to start comments. Anything after the pound on a line is a
comment.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">> Now, as I
said,
the command for each graphics card </font></div>
<div><font face="Helvetica, Arial, sans-serif">> is unique.
So, I
need to set up a MINER2, MINER3, </font></div>
<div><font face="Helvetica, Arial, sans-serif">> and MINER4
scripts, which are customized for the </font></div>
<div><font face="Helvetica, Arial, sans-serif">> individual
graphics cards.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">Well, you could
make
one script that takes a parameter and use something like:</font></div>
<div><font face="Helvetica, Arial, sans-serif">if [ "$1" = 1 ];
then</font></div>
<div><font face="Helvetica, Arial, sans-serif"> #miner1 specific
commands...</font></div>
<div><font face="Helvetica, Arial, sans-serif">elif [ "$1" = 2 ];
then</font></div>
<div><font face="Helvetica, Arial, sans-serif"> #miner2 specific
commands...</font></div>
<div><font face="Helvetica, Arial, sans-serif">#and so on...</font></div>
<div><font face="Helvetica, Arial, sans-serif">elif [ "$1" =
--all ]</font></div>
<div><font face="Helvetica, Arial, sans-serif"> #I'll come back
to
this</font></div>
<div><font face="Helvetica, Arial, sans-serif">else</font></div>
<div><font face="Helvetica, Arial, sans-serif"> echo "USAGE: $0
[--all|miner-num]" 1>&2; exit 1</font></div>
<div><font face="Helvetica, Arial, sans-serif">fi</font></div>
<div><br>
</div>
<div><font face="Helvetica, Arial, sans-serif">You could also use
"case" instead of if/elif/else/fi and that might be cleaner. As always,
there's more than one way to skin the cat.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">> Finally, I
want
to create a master script to start all the other </font></div>
<div><span style="font-family: Helvetica,Arial,sans-serif;">></span><span style="font-family: Helvetica,Arial,sans-serif;"> </span><font face="Helvetica, Arial, sans-serif">4. Here's the trick. I want the
master script to start each of </font></div>
<div><span style="font-family: Helvetica,Arial,sans-serif;">></span><span style="font-family: Helvetica,Arial,sans-serif;"> </span><font face="Helvetica, Arial, sans-serif">the sub scripts in its own window
and continue executing </font></div>
<div><span style="font-family: Helvetica,Arial,sans-serif;">></span><span style="font-family: Helvetica,Arial,sans-serif;"> </span><font face="Helvetica, Arial, sans-serif">commands in the master script. I
don't want the master </font></div>
<div><span style="font-family: Helvetica,Arial,sans-serif;">></span><span style="font-family: Helvetica,Arial,sans-serif;"> </span><font face="Helvetica, Arial, sans-serif">script to hang waiting for MINER1
to exit before executing</font></div>
<div><span style="font-family: Helvetica,Arial,sans-serif;">></span><span style="font-family: Helvetica,Arial,sans-serif;"> </span><font face="Helvetica, Arial, sans-serif">MINER2, and so forth.</font></div>
<div><span style="font-family: Helvetica,Arial,sans-serif;">> </span></div>
<div><span style="font-family: Helvetica,Arial,sans-serif;">></span><span style="font-family: Helvetica,Arial,sans-serif;"> </span><font face="Helvetica, Arial, sans-serif">Let's say that the master script
is called START-MINERS.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">Well, do you
really
need separate windows or do you just need parallel execution?
Generally, you can use the ampersand (&) at the end of a line to
run that command in the background. If the miner commands have output
you want to view on the screen, you can start an xterm to open a window
for each one. I use kde, so I tend to use konsole but for this purpose
xterm will work or you can check the options for whatever terminal
window you like to use. In the above script under "--all" where I said
I'd come back to it, you could put:</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">for miner in 1 2 3
4</font></div>
<div><font face="Helvetica, Arial, sans-serif">do</font></div>
<div><font face="Helvetica, Arial, sans-serif"> xterm -e $0
$miner
&</font></div>
<div><font face="Helvetica, Arial, sans-serif">done </font></div>
<div><br>
</div>
<div>dollar-zero is the current script so you're re-running the
current script once each for 1, 2, 3, 4. Although since it's just 4 you
might just repeat the command four times instead. Or go the other way
and have a config file that defines each miner instance, but that seems
like a down-the-road enhancement. </div>
<div><br>
</div>
<div><span style="font-family: Helvetica,Arial,sans-serif;">></span><span style="font-family: Helvetica,Arial,sans-serif;"> </span><font face="Helvetica, Arial, sans-serif">Finally, I want to kick off the
whole thing from one icon on</font></div>
<div><font face="Helvetica, Arial, sans-serif">> the desktop
which
triggers START-MINERS which triggers</font></div>
<div><font face="Helvetica, Arial, sans-serif">> MINER1, 2, 3,
and
4. I don't care if the master script has a </font></div>
<div><font face="Helvetica, Arial, sans-serif">> terminal
window
left on the screen or not when it's done. </font></div>
<div><font face="Helvetica, Arial, sans-serif">> However, when
it's finished, there should be 4 active terminal </font></div>
<div><font face="Helvetica, Arial, sans-serif">> windows on
the
screen mining on 4 separate graphics cards.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">In kde, you can
right-click on the desktop, select "Create new->Link to application"
and then fill in the boxes. I imagine you can do something similar in
Gnome.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">> Even better,
I'd
like the windows to automatically size themselves </font></div>
<div><font face="Helvetica, Arial, sans-serif">> to a certain
size
and stack up all in a column on the monitor. Better</font></div>
<div><font face="Helvetica, Arial, sans-serif">> still, would
be
to have the whole thing auto start when booting.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">xterm and most X
Windows programs accept certain standard options, which you can see by
running "man X". In this case you can specify the size and location
with "-geometry". So for example:</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">xterm -geometry
80x30+10+10 -e $0 $miner &</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">as the xterm
command.
You could just specify 4 (or however miner instances you have) separate
xterm commands instead of the "for" loop, or you could also do math in
the shell based on the miner number. That might be more trouble than
it's worth, though. </font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">As to starting
automatically on boot, you have the issue of needing to be logged in to
start the xterms. You'd probably want to send the output to a log file
for the actual miner commands, then when you login you could have a
command that starts the xterms with "tail -f logfile" instead of
actually running the miners directly. In this scenario you'd create an
/etc/init.d script to start the actual miner processes. You probably
want to see where you can get with the above before jumping into that.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">> If you can
help
me with all or part of this puzzle,</font></div>
<div><font face="Helvetica, Arial, sans-serif">> I'd greatly
appreciate it. Thanks in advance.</font></div>
<div><font face="Helvetica, Arial, sans-serif">></font></div>
<div><font face="Helvetica, Arial, sans-serif">> Sincerely,</font></div>
<div><font face="Helvetica, Arial, sans-serif">></font></div>
<div><font face="Helvetica, Arial, sans-serif">> Ron</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">Well, that should
get
you started anyway. I typed these commands mostly off the top of my
head, so there may be some "miner" errors (ha ha). You will find the
docs for the if/then/elif/else/fi and case/esac under "man bash". You
can man xterm for details on other options. Reply with more specific
questions as you get into it, if you need to.</font></div>
<div><font face="Helvetica, Arial, sans-serif"><br>
</font></div>
<div><font face="Helvetica, Arial, sans-serif">Scott</font></div>
</div>
<div><br>
</div>
<br>
<br>
<div><span></span>-- <br>
Scott Plante, CTO<br>
Insight Systems, Inc.<br>
(+1) 404 873 0058 x104<br>
<a class="moz-txt-link-abbreviated" href="mailto:splante@insightsys.com" target="_blank">splante@insightsys.com</a><br>
<a class="moz-txt-link-freetext" href="http://zyross.com" target="_blank">http://zyross.com</a><br>
<br>
<span></span></div>
</div>
</blockquote>
<br>
</div>
</blockquote>
</blockquote>
<br>
<br>
<br>
<pre class="moz-signature">--
(PS - If you email me and don't get a quick response, you might want to
call on the phone. I get about 300 emails per day from alternate energy
mailing lists and such. I don't always see new email messages very quickly.)
Ron Frazier
770-205-9422 (O) Leave a message.
linuxdude AT techstarship.com
Litecoin: LZzAJu9rZEWzALxDhAHnWLRvybVAVgwTh3
Bitcoin: 15s3aLVsxm8EuQvT8gUDw3RWqvuY9hPGUU
</pre>
<br>_______________________________________________<br>Ale mailing list<br>Ale@ale.org<br>http://mail.ale.org/mailman/listinfo/ale<br>See JOBS, ANNOUNCE and SCHOOLS lists at<br>http://mail.ale.org/mailman/listinfo<br></div><br></div></div></body></html>