<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11534607</id><updated>2011-11-30T15:48:30.152-08:00</updated><category term='Unix'/><category term='Solaris 10'/><category term='LOL'/><category term='Commands'/><category term='Perl'/><category term='AIX'/><category term='Linux'/><title type='text'>rooted@localhost</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://osana.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11534607.post-8962266391367077470</id><published>2011-06-29T23:32:00.000-07:00</published><updated>2011-06-29T23:32:32.887-07:00</updated><title type='text'></title><content type='html'>Global Menu - Ubuntu Lucid&lt;p&gt;Setting up global menu in lucid&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;install the global menu package.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-8962266391367077470?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/8962266391367077470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=8962266391367077470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/8962266391367077470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/8962266391367077470'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2011/06/global-menu-ubuntu-lucid-setting-up.html' title=''/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-5681264238169501792</id><published>2011-03-15T10:54:00.000-07:00</published><updated>2011-03-15T10:54:44.268-07:00</updated><title type='text'></title><content type='html'>Enable Google Calendar in Mozilla Sunbird&lt;p&gt;      Only Mozilla Sunbird 0.8+ and Lightning in Thunderbird support CalDAV sync. Please note that this is considered an experimental feature with limited technical assistance available.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;      To set up CalDAV support for Google Calendar in Mozilla Sunbird, follow these steps:&lt;/p&gt;&lt;p&gt;         1. Open the Sunbird application and select File &gt; New Calendar.&lt;/p&gt;&lt;p&gt;         2. Select On the Network and click Next.&lt;/p&gt;&lt;p&gt;         3. Select the CalDAV format option.&lt;/p&gt;&lt;p&gt;         4. In the Location field, enter [ https://www.google.com/calendar/dav/ [ your Google Calendar ID ] /events ] and click Next.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;            Your Google Calendar ID for your primary calendar is just your email address, but for all other calendars the Calendar ID will be in the form of [ long string of characters]@group.calendar.google.com. You can get the Calendar ID by clicking the down arrow next to your calendar at calendar.google.com and selecting 'Calendar Settings'.&lt;/p&gt;&lt;p&gt;            Be sure to use https in your URL, as an http address will not work.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;         5. Enter a name and select a color for your calendar.&lt;/p&gt;&lt;p&gt;         6. In the pop-up screen, enter the following information:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;            Username: This is the complete email address you use with Google Calendar (including the part after the @ sign). If you're using Google Apps, be sure to enter your Google Apps email address.&lt;/p&gt;&lt;p&gt;            Password: This is the password you use to sign in to Google Calendar&lt;/p&gt;&lt;p&gt;         7. Click OK.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;      Your Google Calendar will now appear in the Calendar tab of Mozilla Sunbird, and Sunbird will sync any changes to and from Google Calendar.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-5681264238169501792?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/5681264238169501792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=5681264238169501792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/5681264238169501792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/5681264238169501792'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2011/03/enable-google-calendar-in-mozilla.html' title=''/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-4852857285213851852</id><published>2011-02-25T09:30:00.000-08:00</published><updated>2011-02-25T09:32:49.884-08:00</updated><title type='text'></title><content type='html'>Hi this is just a test to check how the read more condition works. well thanks to the document provided at http://www.blogspottutorial.com/2007/12/make-post-summary-readmore-function.html&lt;br /&gt;&lt;span class="fullpost"&gt; &lt;br /&gt;If you are a beginner, possible you'd feel to surprise when seeing the articles in my blog presenting only shares first paragrap or second paragrap, and to read for full article, you must click Read more... link. Alright.. please don't feel surprise, i will discuss about this now.&lt;br /&gt;&lt;br /&gt;The function like that called Post Summary. You can make a post summary function with add a little code to your template code. But this code is for new blogger template (beta) and does not work at classic template.&lt;br /&gt;&lt;br /&gt;Please follow the steps below :&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-4852857285213851852?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/4852857285213851852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=4852857285213851852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/4852857285213851852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/4852857285213851852'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2011/02/hi-this-is-just-test-to-check-how-read.html' title=''/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-4833638953521503540</id><published>2011-02-07T08:26:00.000-08:00</published><updated>2011-02-07T09:03:46.745-08:00</updated><title type='text'>NIX Education Center</title><content type='html'>&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="0" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="0" name="Body Text"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman","serif";} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:shapedefaults ext="edit" spidmax="1028"&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:shapelayout ext="edit"&gt;   &lt;o:idmap ext="edit" data="1"&gt;  &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt;  &lt;h1 style="margin-bottom: 0.0001pt;"&gt;NIX Education Center&lt;/h1&gt;  &lt;p class="MsoNormal" style="margin-left: 3.5in;"&gt;&lt;span style="font-size: 11pt; font-family: &amp;quot;Castellar&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;SIMPLYFYING LEARNING&lt;/span&gt;&lt;/p&gt;  &lt;h2&gt;&lt;span style="font-size: 12pt; font-weight: normal;"&gt;Launching courses @ 50% discount for first 30 Students. All the courses will be taught by Tutors who have worked in the industry and have more than 10 yrs of combined experience.&lt;/span&gt;&lt;/h2&gt;  &lt;h2 style="text-align: left;" align="left"&gt;Course Structure&lt;/h2&gt;  &lt;p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;1.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Basic Computer Applications &amp;amp; Internet Course&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Course Description:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;This course mainly focuses on Basics on Computer, its history and its applications. The introduction to MS Office suite which is now required to perform almost every work related to computers. This course also shows you how to use internet for communication safely and effectively. The course is well suited for the person who wants to get familiar with computer technology and its applications and usage.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;a.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Computer Fundamentals&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;b.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;System and application software&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;c.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Microsoft word 2007&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;d.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Microsoft Excel 2007&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;e.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Microsoft Powerpoint 2007&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;f.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Internet( use of mails, chats) &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;g.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Introduction to HTML &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;h.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;             &lt;table width="100%" cellpadding="0" cellspacing="0"&gt;    &lt;tbody&gt;&lt;tr&gt;     &lt;td&gt;     &lt;div&gt;     &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;@ 2500INR/-&lt;/b&gt;&lt;/p&gt;     &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Only&lt;/b&gt;&lt;/p&gt;     &lt;/div&gt;     &lt;/td&gt;    &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;    &lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Microsoft Outloook 2007&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;i.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Basic Networking fundamentals&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;j.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;E-Commerce&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style=""&gt; &lt;/span&gt;Price: 5000/- INR&lt;/p&gt;  &lt;p class="MsoBodyText"&gt; &lt;/p&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style=""&gt; &lt;/span&gt;Duration: 1 Month&lt;/p&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style=""&gt;                                      &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;2.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Advanced Computer Applications and Basics of programming &amp;amp; networking &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Course Description: &lt;span style=""&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;The course offers&lt;b style=""&gt; &lt;/b&gt;learning of advanced excel and provides working knowledge of operating systems like Windows. Also it gives you the foundation for programming, database , networking and linux. This course is suited for people who want to pursue computer related field in the future.&lt;/span&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;a.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Advanced Microsoft Excel 2007&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;b.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Software Installation&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;c.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;User&lt;span style=""&gt;  &lt;/span&gt;Management&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;d.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Printer Management&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;e.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Introduction to&lt;span style=""&gt;  &lt;/span&gt;C/C++ and Java &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;f.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Introductory lessons on Business communications. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;g.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Introduction to UNIX/LINUX&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;h.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Basics of DBMS(database Management Systems)&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;i.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;        &lt;table width="100%" cellpadding="0" cellspacing="0"&gt;    &lt;tbody&gt;&lt;tr&gt;     &lt;td&gt;     &lt;div&gt;     &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;@ 2500INR/-&lt;/b&gt;&lt;/p&gt;     &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Only&lt;/b&gt;&lt;/p&gt;     &lt;/div&gt;     &lt;/td&gt;    &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;    &lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Networking fundamentals&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;span style=""&gt;j.&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Virtualization concepts&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText"&gt;Price: 5000INR/- &lt;span style=""&gt;                                      &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText"&gt; &lt;/p&gt;  &lt;p class="MsoBodyText"&gt;Duration: 1 Month&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;h2 style="margin: 0in 0in 0.0001pt; text-align: left;" align="left"&gt;&lt;u&gt;&lt;span style="font-size: 14pt;"&gt;JOB READY COURSES&lt;/span&gt;&lt;/u&gt;&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;The following courses are for the people who wants to get into IT industry or the people who already into IT but want to enhance the skills and position in the industry. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: &amp;quot;Tahoma&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;v&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;LINUX (RHCE)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in;"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Course Description :&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;This course is for users of Linux (or Unix) who want to start building skills in system administration on Red Hat Enterprise Linux, to a level where they can attach and configure a workstation on an existing network. This course provides intensive hands-on training on Red Hat Enterprise Linux.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;b style=""&gt;Price :&lt;/b&gt; 9000&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: 0.5in;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Arial Unicode MS&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Offer price&lt;span style=""&gt;  &lt;/span&gt;to first 20 students : 6000 &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;v&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Learning DBMS with IBM DB2 &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in;"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Course Description : &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;DB2 is an IBM’s Database which is a direct competitor to Oracle databases. DB2&lt;span style=""&gt;  &lt;/span&gt;has high market demand and very less supply. The course teaches the fundamentals of database management system and prepares you to handle the DB2&lt;span style=""&gt;  &lt;/span&gt;database. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: 0.5in;"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Price :&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; 8000&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: 0.5in;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Arial Unicode MS&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Offer price&lt;span style=""&gt;  &lt;/span&gt;to first 20 students : 5000 &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;v&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Bash/Unix Shell scripting&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in;"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Course Description : &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;This course is developed for application developers and system administrator who are already familiar with unix/linux OS. The course provides an overview of the various Linux commands and their use in manipulating and searching files and directories and in navigating the file system in Linux. The course also describes the features of Linux shell and the concept of creating shell scripts.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: 0.5in;"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Price :&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; 6000&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: 0.5in;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Arial Unicode MS&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Offer price&lt;span style=""&gt;  &lt;/span&gt;to first 20 students : 3000 &lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;v&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Solaris&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in;"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Course Description : &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;This course is for students or working professionals aspiring to be Sun Certified System Administrator for Solaris 9/10 Operating Environment. This course will also prepare you for the solaris administration exam.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: 0.5in;"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Price :&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; 9000&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="font-family: &amp;quot;Baskerville Old Face&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast" style="margin-left: 1in; text-indent: 0.5in;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Arial Unicode MS&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Offer price&lt;span style=""&gt;  &lt;/span&gt;to first 20 students : 6000&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpLast" style="margin-left: 1in; text-indent: 0.5in;"&gt;&lt;br /&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Arial Unicode MS&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpLast" style="margin-left: 1in; text-indent: 0.5in;"&gt;&lt;br /&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: &amp;quot;Arial Unicode MS&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoListParagraphCxSpLast" style="margin-left: 1in; text-indent: 0.5in;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="0" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="0" name="Body Text"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman","serif";} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p class="MsoBodyText" style="margin-left: 1in; text-indent: 0.5in;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 18pt; line-height: 150%;"&gt;LEARNING WITH US &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 14pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: &amp;quot;Arial Narrow&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Easy to comprehend Course Material &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 14pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: &amp;quot;Arial Narrow&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;The training will be provided with lots of examples &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 14pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: &amp;quot;Arial Narrow&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Emphasis will be on the application and practical use of computer than theory&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 14pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: &amp;quot;Arial Narrow&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Industry experienced Tutors &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in;"&gt;&lt;span style="font-size: 14pt; font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14pt; font-family: &amp;quot;Arial Narrow&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Practical Exams will be held after each session. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText" style="margin-left: 0.5in; text-indent: -0.25in; line-height: normal;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial Narrow&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Participation Certificate&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText" style="margin-left: 0.5in; text-indent: -0.25in; line-height: normal;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial Narrow&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Lab facility can be utilized after classes&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText" style="margin-left: 0.5in; text-indent: -0.25in; line-height: normal;"&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style=""&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Arial Narrow&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Preparation help for Certification Exams.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;For registration, enquiry or any query. Please feel free to contact us on….&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Address: &lt;span style=""&gt;         &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;ShopNo.11,Gurusharnma Complex,&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;span style=""&gt;                        &lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;span style=""&gt;         &lt;/span&gt;Vishrali Naka, Near Raigad Bazar&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;span style=""&gt;                                    &lt;/span&gt;Takka, Old Panvel. &lt;span style=""&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText" style="margin-left: 2in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;OR&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Call us : &lt;span style=""&gt;                      &lt;/span&gt;Ajay Singh , &lt;span style=""&gt; &lt;/span&gt;9172526060&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoBodyText"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;                                     Om Prakash Singh: 9833375149&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText" style="margin-left: 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;OR&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyText"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Mail us :&lt;span style=""&gt;                      &lt;/span&gt;&lt;/span&gt;&lt;a href="mailto:mailxtoajay@gmail.com"&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;mailxtoajay@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 12pt; line-height: 150%; font-family: &amp;quot;Bodoni MT&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-4833638953521503540?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/4833638953521503540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=4833638953521503540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/4833638953521503540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/4833638953521503540'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2011/02/nix-education-center.html' title='NIX Education Center'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-7431049332217476225</id><published>2008-03-20T13:02:00.000-07:00</published><updated>2008-03-20T13:06:19.127-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LOL'/><title type='text'>Linux on Laptop.</title><content type='html'>Tried Gusty Gibbon Ubuntu 6.10 on Compaq f733AU works fine without any major problems. some tweaking required in udev/rules/70-persistent-net-rules.. rest everything works fabulous..&lt;br /&gt;&lt;br /&gt;Now am trying Debian Etch 4.0r3 on the same laptop will submit complete reveiw when done with the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-7431049332217476225?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/7431049332217476225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=7431049332217476225' title='43 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/7431049332217476225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/7431049332217476225'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2008/03/linux-on-laptop.html' title='Linux on Laptop.'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>43</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-8304238779316481515</id><published>2007-07-22T21:05:00.001-07:00</published><updated>2007-07-22T21:05:37.191-07:00</updated><title type='text'>Managing Disk Spaces with LVM in Linux.</title><content type='html'>&lt;p&gt;&lt;strong&gt;Bryce Harrington&lt;/strong&gt; and &lt;strong&gt;Kees Cook&lt;/strong&gt; have come together to write this&amp;nbsp;informative article&amp;nbsp;titled '&lt;strong&gt;&lt;a title="Managing Disk Space with LVM" href="http://http://www.linuxdevcenter.com/pub/a/linux/2006/04/27/managing-disk-space-with-lvm.html?page=1" target="_blank"&gt;Managing Disk Space with LVM&lt;/a&gt;&lt;/strong&gt;' which explains the ins and outs creating, modifying and deleting of LVM in Linux.&lt;/p&gt; &lt;p&gt;The Linux Logical Volume Manager (LVM) is a mechanism for virtualizing disks. It can create "virtual" disk partitions out of one or more physical hard drives, allowing you to grow, shrink, or move those partitions from drive to drive as your needs change. It also allows you to create larger partitions than you could achieve with a single drive.&lt;/p&gt; &lt;p&gt;Traditional uses of LVM have included databases and company file servers, but even home users may want large partitions for music or video collections, or for storing online backups. LVM and RAID 1 can also be convenient ways to gain redundancy without sacrificing flexibility. &lt;p&gt;This article looks first at a basic file server, then explains some variations on that theme, including adding redundancy with RAID 1 and some things to consider when using LVM for desktop machines. &lt;h5&gt;LVM Installation&lt;/h5&gt; &lt;p&gt;An operational LVM system includes both a kernel filesystem component and userspace utilities. To turn on the kernel component, set up the kernel options as follows:&lt;pre&gt;&lt;code&gt;Device Drivers --&amp;gt; Multi-device support (RAID and LVM)&lt;br /&gt;&lt;br /&gt;    [*] Multiple devices driver support (RAID and LVM)&lt;br /&gt;    &amp;lt; &amp;gt;   RAID support&lt;br /&gt;    &amp;lt;*&amp;gt;   Device mapper support&lt;br /&gt;    &amp;lt; &amp;gt;     Crypt target support (NEW)&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;You can usually install the LVM user tools through your Linux distro's packaging system. In Gentoo, the LVM user tools are part of the &lt;code&gt;lvm2&lt;/code&gt; package. Note that you may see tools for LVM-1 as well (perhaps named &lt;code&gt;lvm-user&lt;/code&gt;). It doesn't hurt to have both installed, but make sure you have the LVM-2 tools.&lt;br /&gt;&lt;h5&gt;LVM Basics&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;To use LVM, you must understand several elements. First are the regular physical hard drives attached to the computer. The disk space on these devices is chopped up into &lt;em&gt;partitions&lt;/em&gt;. Finally, a &lt;em&gt;filesystem&lt;/em&gt; is written directly to a partition. By comparison, in LVM, &lt;em&gt;Volume Groups&lt;/em&gt; (VGs) are split up into &lt;em&gt;logical volumes&lt;/em&gt; (LVs), where the filesystems ultimately reside (Figure 1).&lt;br /&gt;&lt;p&gt;Each VG is made up of a pool of &lt;em&gt;Physical Volumes&lt;/em&gt; (PVs). You can extend (or reduce) the size of a Volume Group by adding or removing as many PVs as you wish, provided there are enough PVs remaining to store the contents of all the allocated LVs. As long as there is available space in the VG, you can also grow and shrink the size of your LVs at will (although most filesystems don't like to shrink).&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.linuxdevcenter.com/linux/2006/04/27/graphics/lvm-lg.gif"&gt;&lt;img style="margin: 0px" height="229" alt="Thumbnail, click for full-size image." src="http://www.linuxdevcenter.com/linux/2006/04/27/graphics/lvm.gif" width="500" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;em&gt;Figure 1. An example LVM layout&lt;/em&gt; (Click to view larger image)&lt;br /&gt;&lt;h5&gt;Example: A Basic File Server&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;A simple, practical example of LVM use is a traditional file server, which provides centralized backup, storage space for media files, and shared file space for several family members' computers. Flexibility is a key requirement; who knows what storage challenges next year's technology will bring?&lt;br /&gt;&lt;p&gt;For example, suppose your requirements are:&lt;pre&gt;&lt;code&gt;400G  - Large media file storage&lt;br /&gt; 50G  - Online backups of two laptops and three desktops (10G each)&lt;br /&gt; 10G  - Shared files&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Ultimately, these requirements may increase a great deal over the next year or two, but exactly how much and which partition will grow the most are still unknown.&lt;br /&gt;&lt;h6&gt;Disk Hardware&lt;/h6&gt;&lt;br /&gt;&lt;p&gt;Traditionally, a file server uses SCSI disks, but today SATA disks offer an attractive combination of speed and low cost. At the time of this writing, 250 GB SATA drives are commonly available for around $100; for a terabyte, the cost is around $400.&lt;br /&gt;&lt;p&gt;SATA drives are not named like ATA drives (&lt;em&gt;hda&lt;/em&gt;, &lt;em&gt;hdb&lt;/em&gt;), but like SCSI (&lt;em&gt;sda&lt;/em&gt;, &lt;em&gt;sdb&lt;/em&gt;). Once the system has booted with SATA support, it has four physical devices to work with:&lt;pre&gt;&lt;code&gt;/dev/sda  251.0 GB&lt;br /&gt;/dev/sdb  251.0 GB&lt;br /&gt;/dev/sdc  251.0 GB&lt;br /&gt;/dev/sdd  251.0 GB&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Next, partition these for use with LVM. You can do this with &lt;code&gt;fdisk&lt;/code&gt; by specifying the "Linux LVM" partition type 8e. The finished product looks like this:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;fdisk -l /dev/sdd&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Disk /dev/sdd: 251.0 GB, 251000193024 bytes&lt;br /&gt;255 heads, 63 sectors/track, 30515 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;&lt;br /&gt;Device            Start   End      Blocks      Id  System&lt;br /&gt;/dev/sdd1         1       30515    245111706   8e  Linux LVM&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Notice the partition type is &lt;code&gt;8e&lt;/code&gt;, or "Linux LVM."&lt;br /&gt;&lt;h6&gt;Creating a Virtual Volume&lt;/h6&gt;&lt;br /&gt;&lt;p&gt;Initialize each of the disks using the &lt;code&gt;pvcreate&lt;/code&gt; command:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;pvcreate /dev/sda /dev/sdb /dev/sdc /dev/sdd&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;This sets up all the partitions on these drives for use under LVM, allowing creation of volume groups. To examine available PVs, use the &lt;code&gt;pvdisplay&lt;/code&gt; command. This system will use a single-volume group named &lt;code&gt;datavg&lt;/code&gt;:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;vgcreate datavg /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Use &lt;code&gt;vgdisplay&lt;/code&gt; to see the newly created &lt;code&gt;datavg&lt;/code&gt; VG with the four drives stitched together. Now create the logical volumes within them:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;lvcreate --name medialv  --size 400G&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;lvcreate --name backuplv --size  50G&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;lvcreate --name sharelv  --size  10G&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Without LVM, you might allocate all available disk space to the partitions you're creating, but with LVM, it is worthwhile to be conservative, allocating only half the available space to the current requirements. As a general rule, it's easier to grow a filesystem than to shrink it, so it's a good strategy to allocate exactly what you need today, and leave the remaining space unallocated until your needs become clearer. This method also gives you the option of creating new volumes when new needs arise (such as a separate encrypted file share for sensitive data). To examine these volumes, use the &lt;code&gt;lvdisplay&lt;/code&gt; command.&lt;br /&gt;&lt;p&gt;Now you have several nicely named logical volumes at your disposal:&lt;pre&gt;&lt;code&gt;/dev/datavg/backuplv     (also /dev/mapper/datavg-backuplv)&lt;br /&gt;/dev/datavg/medialv      (also /dev/mapper/datavg-medialv)&lt;br /&gt;/dev/datavg/sharelv      (also /dev/mapper/datavg-sharelv)&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;h5&gt;Selecting Filesystems&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;Now that the devices are created, the next step is to put filesystems on them. However, there are many types of filesystems. How do you choose?&lt;br /&gt;&lt;p&gt;For typical desktop filesystems, you're probably familiar with ext2 and ext3. ext2 was the standard, reliable workhorse for Linux systems in years past. ext3 is an upgrade for ext2 that provides &lt;em&gt;journaling&lt;/em&gt;, a mechanism to speed up filesystem checks after a crash. ext3's balance of performance, robustness, and recovery speed makes it a fine choice for general purpose use. Because ext2 and ext3 have been the defaults for such a long time, ext3 is also a good choice if you want great reliability. For storing backups, reliability is much more important than speed. The major downside to ext2/ext3 is that to grow (or shrink) the filesystem, you must first unmount it.&lt;br /&gt;&lt;p&gt;However, other filesystems provide advantages in certain situations, such as large file sizes, large quantities of files, or on-the-fly filesystem growth. Because LVM's primary use is for scenarios where you need extreme numbers of files, extremely large files, and/or the need to resize your filesystems, the following filesystems are well worth considering.&lt;br /&gt;&lt;p&gt;For large numbers of small files, ReiserFS is an excellent choice. For raw, uncached file I/O, it ranks at the top of most benchmarks, and can be as much as an order of magnitude faster than ext3. Historically, however, it has not proven as robust as ext3. It's been tested enough lately that this may no longer be a significant issue, but keep it in mind.&lt;br /&gt;&lt;p&gt;If you are designing a file server that will contain large files, such as video files recorded by &lt;a href="http://www.mythtv.org/docs/mythtv-HOWTO-24.html"&gt;MythTV&lt;/a&gt;, then delete speed could be a priority. With ext3 or ReiserFS, your deletes may take several seconds to complete as the filesystem works to mark all of the freed data blocks. If your system is recording or processing video at the same time, this delay could cause dropped frames or other glitches. JFS and XFS are better choices in this situation, although XFS has the edge due to greater reliability and better general performance.&lt;br /&gt;&lt;p&gt;With all these considerations in mind, format the partitions as follows:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;mkfs.ext3 /dev/datavg/backuplv&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mkfs.xfs /dev/datavg/medialv&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mkfs.reiserfs /dev/datavg/sharelv&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h6&gt;Mounting&lt;/h6&gt;&lt;br /&gt;&lt;p&gt;Finally, to mount the file systems, first add the following lines to &lt;em&gt;/etc/fstab&lt;/em&gt;:&lt;pre&gt;&lt;code&gt;/dev/datavg/backuplv   /var/backup     ext3       rw,noatime    0 0&lt;br /&gt;/dev/datavg/medialv    /var/media      xfs        rw,noatime    0 0&lt;br /&gt;/dev/datavg/sharelv    /var/share      reiserfs   rw,noatime    0 0&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;and then establish and activate the mount points:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;mkdir /var/media /var/backup /var/share&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mount /var/media /var/backup /var/share&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Now your basic file server is ready for service.&lt;br /&gt;&lt;h5&gt;Adding Reliability With RAID&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;So far, this LVM example has been reasonably straightforward. However, it has one major flaw: if any of your drives fail, all of your data is at risk! Half a terabyte is not an insignificant amount to back up, so this is an extremely serious weakness in the design.&lt;br /&gt;&lt;p&gt;To compensate for this risk, build redundancy into the design using RAID 1. &lt;em&gt;RAID&lt;/em&gt;, which stands for Redundant Array of Independent Disks, is a low-level technology for combining disks together in various ways, called &lt;em&gt;RAID levels&lt;/em&gt;. The RAID 1 design mirrors data across two (or more) disks. In addition to doubling the reliability, RAID 1 adds performance benefits for reads because both drives have the same data, and read operations can be split between them.&lt;br /&gt;&lt;p&gt;Unfortunately, these benefits do not come without a critical cost: the storage size is cut in half. The good news is that half a terabyte is still enough for the present space requirements, and LVM gives the flexibility to add more or larger disks later.&lt;br /&gt;&lt;p&gt;With four drives, RAID 5 is another option. It restores some of the disk space but adds even more complexity. Also, it performs well with reads but poorly with writes. Because hard drives are reasonably cheap, RAID 5's benefits aren't worth the trouble for this example.&lt;br /&gt;&lt;p&gt;Although it would have made more sense to start with a RAID, we waited until now to introduce them so we could demonstrate how to migrate from raw disks to RAID disks without needing to unmount any of the filesystems.&lt;br /&gt;&lt;p&gt;In the end, this design will combine the four drives into two RAID 1 pairs: &lt;em&gt;/dev/sda&lt;/em&gt; + &lt;em&gt;/dev/sdd&lt;/em&gt; and &lt;em&gt;/dev/sdb&lt;/em&gt; + &lt;em&gt;/dev/sdc&lt;/em&gt;. The reason for this particular arrangement is that &lt;em&gt;sda&lt;/em&gt; and &lt;em&gt;sdd&lt;/em&gt; are the primary and secondary drives on separate controllers; this way, if a controller were to die, you could still access the two drives on the alternate controller. When the primary/secondary pairs are used, the relative access speeds are balanced so neither RAID array is slower than the other. There may also be a performance benefit to having accesses evenly distributed across both controllers.&lt;br /&gt;&lt;p&gt;First, pull two of the SATA drives (&lt;em&gt;sdb&lt;/em&gt; and &lt;em&gt;sdd&lt;/em&gt;) out of the &lt;code&gt;datavg&lt;/code&gt; VG:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;modprobe dm-mirror&lt;/strong&gt; &lt;br /&gt;# &lt;strong&gt;pvmove /dev/sdb1 /dev/sda1&lt;/strong&gt; &lt;br /&gt;# &lt;strong&gt;pvmove /dev/sdd1 /dev/sdc1&lt;/strong&gt; &lt;br /&gt;# &lt;strong&gt;vgreduce datavg /dev/sdb1 /dev/sdd1&lt;/strong&gt; &lt;br /&gt;# &lt;strong&gt;pvremove /dev/sdb1 /dev/sdd1&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Then, change the partition type on these two drives, using filesystem type &lt;code&gt;fd&lt;/code&gt; (Linux raid autodetect):&lt;pre&gt;&lt;code&gt;Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/sdb1               1       30515    245111706  fd  Linux raid autodetect&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Now, build the RAID 1 mirrors, telling &lt;code&gt;md&lt;/code&gt; that the "other half" of the mirrors are missing (because they're not ready to be added to the RAID yet):&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;mdadm --create /dev/md0 -a -l 1 -n 2 /dev/sdd1 missing&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mdadm --create /dev/md1 -a -l 1 -n 2 /dev/sdb1 missing&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Add these broken mirrors to the LVM:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;pvcreate /dev/md0 /dev/md1&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;vgextend datavg /dev/md0 /dev/md1&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Next, migrate off of the raw disks onto the broken mirrors:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;pvmove /dev/sda1 /dev/md0&lt;/strong&gt; &lt;br /&gt;# &lt;strong&gt;pvmove /dev/sdc1 /dev/md1&lt;/strong&gt; &lt;br /&gt;# &lt;strong&gt;vgreduce datavg /dev/sda1 /dev/sdc1&lt;/strong&gt; &lt;br /&gt;# &lt;strong&gt;pvremove /dev/sda1 /dev/sdc1&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Finally, change the partition types of the raw disks to &lt;code&gt;fd&lt;/code&gt;, and get the broken mirrors on their feet with full mirroring:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;fdisk /dev/sda1&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;fdisk /dev/sdc1&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mdadm --manage /dev/md0 --add /dev/sda1&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mdadm --manage /dev/md1 --add /dev/sdc1&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;That's quite a few steps, but this full RAID 1 setup protects the LVM system without having to reinstall, copy or remount filesystems, or reboot.&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;h5&gt;Network Access of Files&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;A file server isn't much use if you can't get files off of it. There are many ways to serve files, but the most common and powerful is Network File System (NFS). NFS allows other *nix machines to mount the file shares for direct use. It's also pretty easy to set up on Linux.&lt;br /&gt;&lt;p&gt;First, make sure the file server has NFS enabled in the kernel (2.6.15 in this example):&lt;pre&gt;&lt;code&gt;File systems&lt;br /&gt; Network File Systems&lt;br /&gt;&lt;br /&gt; &amp;lt;*&amp;gt; NFS file system support&lt;br /&gt;  [*]   Provide NFSv3 client support&lt;br /&gt;  &amp;lt;*&amp;gt; NFS server support&lt;br /&gt;  [*]   Provide NFSv3 server support&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Rebuild and reinstall the kernel and then reboot the file server. If you'd like to avoid rebooting, build NFS as a module and then load it with &lt;code&gt;modprobe nfsd&lt;/code&gt;.&lt;br /&gt;&lt;p&gt;Next, start the NFS service. Your Linux distro will have an &lt;code&gt;init&lt;/code&gt; script to do this. For instance, on Gentoo, you'll see:&lt;pre&gt;&lt;code&gt;/etc/init.d/nfs start &lt;br /&gt; * Starting portmap ...      [ ok ]&lt;br /&gt; * Mounting RPC pipefs ...   [ ok ]&lt;br /&gt; * Starting NFS statd ...    [ ok ]&lt;br /&gt; * Starting NFS daemon ...   [ ok ]&lt;br /&gt; * Starting NFS mountd ...   [ ok ]&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;You can double-check that NFS is running by querying &lt;code&gt;portmapper&lt;/code&gt; with the command &lt;code&gt;rpcinfo -p | grep nfs&lt;/code&gt;:&lt;pre&gt;&lt;code&gt;program  vers proto port  service&lt;br /&gt;100003    2   udp   2049  nfs&lt;br /&gt;100003    3   udp   2049  nfs&lt;br /&gt;100003    2   tcp   2049  nfs&lt;br /&gt;100003    3   tcp   2049  nfs&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Next, you must specify which directories the NFS service should export. Add the following to &lt;em&gt;/etc/exports&lt;/em&gt;:&lt;pre&gt;&lt;code&gt;/var/backup    192.168.0.0/24(rw,sync)&lt;br /&gt;/var/media     192.168.0.0/24(rw,sync)&lt;br /&gt;/var/share     192.168.0.0/24(rw,sync)&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;This lists the directories to share, the machines (or networks) to permit to mount the files, and a set of options to control how the sharing works. The options include &lt;code&gt;rw&lt;/code&gt; to allow read-write mounts and &lt;code&gt;sync&lt;/code&gt; to force synchronous behavior. &lt;code&gt;sync&lt;/code&gt; prevents data corruption if the server reboots in the middle of a file write, but sacrifices the performance advantages that &lt;code&gt;async&lt;/code&gt; would provide.&lt;br /&gt;&lt;p&gt;Next, export these file shares from the NFS service:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;exportfs -av&lt;/strong&gt;&lt;br /&gt;exporting 192.168.0.0/24:/var/backup&lt;br /&gt;exporting 192.168.0.0/24:/var/media&lt;br /&gt;exporting 192.168.0.0/24:/var/share&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Now, mount these file shares on each machine that will use them. Assuming the file server is named &lt;code&gt;fileserv&lt;/code&gt;, add the following lines to the client machines' &lt;em&gt;/etc/fstab&lt;/em&gt; files:&lt;pre&gt;&lt;code&gt;# Device               mountpoint    fs-type   options    dump  fsckorder&lt;br /&gt;fileserv:/var/backup   /var/backup   nfs       defaults   0     0&lt;br /&gt;fileserv:/var/media    /var/media    nfs       defaults   0     0&lt;br /&gt;fileserv:/var/share    /var/share    nfs       defaults   0     0&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Finally, create the mountpoints and mount the new shares:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;mkdir /var/backup /var/media /var/share&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mount /var/backup /var/media /var/share&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Now all the machines on your network have access to large, reliable, and expandable disk space!&lt;br /&gt;&lt;h5&gt;Backup Strategies&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;As you rely more heavily on this new LVM-enabled disk space, you may have concerns about backing it up. Using RAID ensures against basic disk failures, but gives you no protection in the case of fire, theft, or accidental deletion of important files.&lt;br /&gt;&lt;p&gt;Traditionally, tape drives are used for backups of this class. This option is still viable and has several advantages, but it can be an expensive and slow solution for a system of this size. Fortunately, there other options using today's technology.&lt;br /&gt;&lt;p&gt;&lt;code&gt;rsync&lt;/code&gt; is a powerful utility for copying files from one system to another, and it works well across the Internet. You could set up a backup system at a friend's house in a different city and arrange to periodically send backups there. This is easy to do with cronjob:&lt;pre&gt;&lt;code&gt;04 4 * * 4  rsync --delete -a /var/backup/ fileserv.myfriend.org:/backup/myself/backup \&lt;br /&gt;    &amp;gt; /var/log/crontab.backup.log 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Another approach is to attach a pair of external RAID 1 hard drives to your file server using Firewire, USB, or eSATA. Add one drive to &lt;em&gt;/dev/md0&lt;/em&gt; and the other to &lt;em&gt;/dev/md1&lt;/em&gt;. Once the mirroring is complete, remove the drives and store them in a safe place offsite. Re-mirror weekly or monthly, depending on your needs.&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;h5&gt;Growth and Reallocation&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;Suppose that over the next year, the storage system fills up and needs to be expanded. Initially, you can begin allocating the unallocated space. For instance, to increase the amount of space available for shared files from 10GB to 15GB, run a command such as:&lt;br /&gt;&lt;p&gt;&lt;code&gt;# &lt;strong&gt;lvextend -L15G /dev/datavg/sharelv&lt;/strong&gt;&lt;br&gt;# &lt;strong&gt;resize_reiserfs /dev/datavg/sharelv&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;&lt;p&gt;But over time, all the unallocated disk space will be used. One solution is to replace the four 250G drives with larger 800G ones.&lt;br /&gt;&lt;p&gt;In the case where you use RAID 1, migration is straightforward. Use &lt;code&gt;mdadm&lt;/code&gt; to mark one drive of each of the RAID 1 mirrors as failed, and then remove them:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;mdadm --manage /dev/md0 --fail /dev/sda1&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mdadm --manage /dev/md0 --remove /dev/sda1&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mdadm --manage /dev/md0 --fail /dev/sdc1&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mdadm --manage /dev/md0 --remove /dev/sdc1&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Pull out the &lt;em&gt;sda&lt;/em&gt; and &lt;em&gt;sdc&lt;/em&gt; hard drives and replace them with two of the new 800G drives. Split each 800G drive into a 250G partition and a 550G partition using &lt;code&gt;fdisk&lt;/code&gt;, and add the partitions back to &lt;em&gt;md0&lt;/em&gt; and &lt;em&gt;md1&lt;/em&gt;:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;fdisk /dev/sda&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;fdisk /dev/sdc&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mdadm --manage /dev/md0 --add /dev/sda1&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mdadm --manage /dev/md1 --add /dev/sdc1&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Repeat the above process with &lt;em&gt;sdd&lt;/em&gt; and &lt;em&gt;sdb&lt;/em&gt; to move them to the other two new drives, then create a third and fourth RAID device, &lt;em&gt;md2&lt;/em&gt; and &lt;em&gt;md3&lt;/em&gt;, using the new space:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;mdadm --create /dev/md2 -a -l 1 -n 2 /dev/sda2 /dev/sdd2&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mdadm --create /dev/md3 -a -l 1 -n 2 /dev/sdb2 /dev/sdc2&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Finally, add these to LVM:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;pvcreate /dev/md2 /dev/md3&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;vgextend datavg /dev/md2 /dev/md3&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The file server now has 1.6TB of fully redundant storage.&lt;br /&gt;&lt;h5&gt;LVM and Desktops&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;So far, we've talked only about LVM and RAID for secondary disk space via a standalone file server, but what if you want to use LVM to manage the space on a regular desktop system? It can work, but there are some considerations to take into account.&lt;br /&gt;&lt;p&gt;First, the installation and upgrade procedures for some Linux distributions don't handle RAID or LVM, which may present complications. Many of today's distros do support it, and even provide tools to assist in creating and managing them, so check this first.&lt;br /&gt;&lt;p&gt;Second, having the root filesystem on LVM can complicate recovery of damaged file systems. Because boot loaders don't support LVM yet, you must also have a non-LVM &lt;em&gt;/boot&lt;/em&gt; partition (though it can be on a RAID 1 device).&lt;br /&gt;&lt;p&gt;Third, you need some spare unallocated disk space for the new LVM partition. If you don't have this, use &lt;code&gt;parted&lt;/code&gt; to shrink your existing root partition, as described in the &lt;a href="http://www.tldp.org/HOWTO/LVM-HOWTO/upgraderoottolvm.html"&gt;LVM HOWTO&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;For this example, assume you have your swap space and &lt;em&gt;/boot&lt;/em&gt; partitions already set up outside of LVM on their own partitions. You can focus on moving your root filesystem onto a new LVM partition in the partition &lt;em&gt;/dev/hda4&lt;/em&gt;. Check that the filesystem type on &lt;em&gt;hda4&lt;/em&gt; is LVM (type 8e).&lt;br /&gt;&lt;p&gt;Initialize LVM and create a new physical volume:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;vgscan&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;pvcreate /dev/hda4&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;vgcreate rootvg /dev/hda4&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Now create a 5G logical volume, formatted into an &lt;em&gt;xfs&lt;/em&gt; file system:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;lvcreate rootvg ---name rootlv -size 5G&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mkfs.xfs /dev/rootvg/rootlv&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Copy the files from the existing root file system to the new LVM one:&lt;pre&gt;&lt;code&gt;# &lt;strong&gt;mkdir /mnt/new_root&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;mount /dev/rootvg/rootlv /mnt/new_root&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;cp -ax /. /mnt/new_root/&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Next, modify &lt;em&gt;/etc/fstab&lt;/em&gt; to mount &lt;em&gt;/&lt;/em&gt; on &lt;em&gt;/dev/rootvg/root&lt;/em&gt; instead of &lt;em&gt;/dev/hda3&lt;/em&gt;.&lt;br /&gt;&lt;p&gt;The trickiest part is to rebuild your &lt;code&gt;initrd&lt;/code&gt; to include LVM support. This tends to be distro-specific, but look for &lt;code&gt;mkinitrd&lt;/code&gt; or &lt;code&gt;yaird&lt;/code&gt;. Your &lt;code&gt;initrd&lt;/code&gt; image must have the LVM modules loaded or the root filesystem will not be available. To be safe, leave your original &lt;code&gt;initrd&lt;/code&gt; image alone and make a new one named, for example, &lt;em&gt;/boot/initrd-lvm.img&lt;/em&gt;.&lt;br /&gt;&lt;p&gt;Finally, update your bootloader. Add a new section for your new root filesystem, duplicating your original boot stanza. In the new copy, change the &lt;code&gt;root&lt;/code&gt; from &lt;em&gt;/dev/hda3&lt;/em&gt; to &lt;em&gt;/dev/rootvg/rootlv&lt;/em&gt;, and change your &lt;code&gt;initrd&lt;/code&gt; to the newly built one. If you use lilo, be sure to run &lt;code&gt;lilo&lt;/code&gt; once you've made the changes. For example, with grub, if you have:&lt;pre&gt;&lt;code&gt;title=Linux&lt;br /&gt;  root (hd0,0)&lt;br /&gt;  kernel /vmlinuz root=/dev/hda3 ro single&lt;br /&gt;  initrd /initrd.img&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;add a new section such as:&lt;pre&gt;&lt;code&gt;title=LinuxLVM&lt;br /&gt;&lt;br /&gt;  root (hd0,0)&lt;br /&gt;  kernel /vmlinuz root=/dev/rootvg/root ro single&lt;br /&gt;  initrd /initrd-lvm.img&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h5&gt;Conclusion&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;LVM is only one of many enterprise technologies in the Linux kernel that has become available for regular users. LVM provides a great deal of flexibility with disk space, and combined with RAID 1, NFS, and a good backup strategy, you can build a bulletproof, easily managed way to store, share, and preserve any quantity of files.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-8304238779316481515?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/8304238779316481515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=8304238779316481515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/8304238779316481515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/8304238779316481515'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/07/managing-disk-spaces-with-lvm-in-linux.html' title='Managing Disk Spaces with LVM in Linux.'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-4659221451746557823</id><published>2007-07-21T01:03:00.001-07:00</published><updated>2007-07-21T01:03:20.443-07:00</updated><title type='text'>Replace a bad disk in a mirrored volume group</title><content type='html'>&lt;p&gt;&amp;nbsp; &lt;p&gt;1. unmirrorvg workvg hdisk7&lt;br&gt;2. reducevg workvg hdisk7&lt;br&gt;Note: migrate the lv copies of the disk if you get any errors like lvcopies on disk.&lt;/p&gt; &lt;p&gt;3. rmdev -l hdisk7 -d&lt;br&gt;&lt;/p&gt; &lt;p&gt;replace the disk drive, let the drive be renamed hdisk7&lt;br&gt;&lt;/p&gt; &lt;p&gt;4. extendvg workvg hdisk7&lt;br&gt;5. mirrorvg workvg hdisk7&lt;br&gt;&lt;br&gt;Note: By default in this example, mirrorvg will try to create 2 copies for logical volumes in workvg. It will try to create the new mirror&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-4659221451746557823?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/4659221451746557823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=4659221451746557823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/4659221451746557823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/4659221451746557823'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/07/replace-bad-disk-in-mirrored-volume.html' title='Replace a bad disk in a mirrored volume group'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-2070005254596320070</id><published>2007-07-18T04:58:00.001-07:00</published><updated>2007-07-18T04:58:30.615-07:00</updated><title type='text'>Access Control List (ACL's) on AIX.</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Well. We speak so much of security and make secure system, in concerns of that here I am explaining how to put ACL's on AIX system. As I presume its just the brief description of ACL on AIX system. You can also find how to put ACL's on my previous article.&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; As there is an interactive way to do it but well here I'll be only trying it to do with files.&lt;/p&gt; &lt;p&gt;1. Create/Identify&amp;nbsp;the file on which we need to put acl's&lt;br&gt;&lt;em&gt;&lt;font color="#0080ff"&gt;# touch alctest2&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#000000"&gt;2. Get the acl's which exist on the file.&lt;br&gt;&lt;em&gt;&lt;font color="#0080ff"&gt;# ls -l acltest2&lt;/font&gt;&lt;/em&gt;&lt;br&gt;-rw-r--r-- 1 root system 0 Jul 18 17:15 acltest2&lt;br&gt;&lt;/font&gt;&lt;font color="#0080ff"&gt;# aclget acltest2&lt;/font&gt;&lt;br&gt;&lt;font color="#ff8000"&gt;*&lt;br&gt;* ACL_type AIXC&lt;br&gt;*&lt;br&gt;attributes:&lt;br&gt;base permissions&lt;br&gt;owner(root): rw-&lt;br&gt;group(system): r--&lt;br&gt;others: r--&lt;br&gt;extended permissions&lt;br&gt;disabled&lt;/font&gt;&lt;/p&gt; &lt;p&gt;3. Now we will collect all the acl's permission in an outputfile called as acldefs.&lt;br&gt;&lt;em&gt;&lt;font color="#0080ff"&gt;# aclget -o acldefs acltest2&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;4. Edit the file acldefs. and make the necessary changes as you want in the file.&lt;br&gt;for eg:&lt;br&gt;&lt;strong&gt;Base permissions&lt;/strong&gt; &lt;br&gt;AIXC ACL specific base permissions are the traditional file-access modes assigned to the file &lt;br&gt;owner, file group, and other users. The access modes are read (r), write (w), and execute/search &lt;br&gt;(x). &lt;br&gt;Note: AIXC ACL type Base Permissions will be same as the file mode bits stored in the file &lt;br&gt;system object’s inode headers. That is, the information in base mode bits is same as the &lt;br&gt;value returned by file system when stat is performed on the file system object. &lt;br&gt;In an access control list, base permissions are in the following format, with the Mode parameter &lt;br&gt;expressed as rwx (with a hyphen (-) replacing each unspecified permission): &lt;br&gt;base permissions: &lt;br&gt;owner(name): Mode &lt;br&gt;group(group): Mode &lt;br&gt;others: Mode &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Attributes &lt;/strong&gt;&lt;br&gt;Three attributes can be added to an access control list: &lt;br&gt;setuid (SUID) &lt;br&gt;Set-user-ID mode bit. This attribute sets the effective and saved user IDs of the process to &lt;br&gt;the owner ID of the file on execution. &lt;br&gt;setgid (SGID) &lt;br&gt;Set-group-ID mode bit. This attribute sets the effective and saved group IDs of the process &lt;br&gt;to the group ID of the file on execution. &lt;br&gt;savetext (SVTX) &lt;br&gt;Saves the text in a text file format.&lt;br&gt;above attributes are added in the following format: &lt;br&gt;The attributes: SUID, SGID, SVTX &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Extended permissions &lt;br&gt;&lt;/strong&gt;AIXC ACL extended permissions allow the owner of a file to more precisely define access to that &lt;br&gt;file. Extended permissions modify the base file permissions (owner, group, others) by permitting, &lt;br&gt;denying, or specifying access modes for specific individuals, groups, or user and group &lt;br&gt;combinations. Permissions are modified through the use of keywords. &lt;br&gt;The permit, deny, and specify keywords are defined as follows: &lt;br&gt;permit &lt;br&gt;Grants the user or group the specified access to the file&amp;nbsp;deny Restricts the user or group from using the specified access to the file specify Precisely defines the file access for the user or group a user is denied a particular access by either a deny or a specify keyword, no other entry can If override that access denial. &lt;br&gt;The enabled keyword must be specified in the ACL for the extended permissions to take effect. &lt;br&gt;The default value is the disabled keyword. &lt;br&gt;In an AIXC ACL, extended permissions are in the following format: &lt;br&gt;extended permissions: &lt;br&gt;enabled | disabled &lt;br&gt;permit Mode UserInfo...: &lt;br&gt;deny Mode UserInfo...: &lt;br&gt;specify Mode UserInfo...: &lt;/p&gt; &lt;p&gt;Use a separate line for each permit, deny, or specify entry. The Mode parameter is expressed as &lt;br&gt;rwx (with a hyphen (-) replacing each unspecified permission). The UserInfo parameter is &lt;br&gt;expressed as u:UserName, or g:GroupName, or a comma-separated combination of u:UserName and &lt;br&gt;g:GroupName. &lt;br&gt;&lt;em&gt;Note&lt;/em&gt;: If more than one user name is specified in an entry, that entry cannot be used in an access &lt;br&gt;control decision because a process has only one user ID. &lt;/p&gt; &lt;p&gt;&amp;nbsp;5. After changing the files for necessary ACL permission's save the file as we are going to use this file for our future input values.&lt;/p&gt; &lt;p&gt;6. Now to put the acl on the other file with as per the changes you made in your file.&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#0080ff"&gt;# aclput -i acldefs acltest3&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;This will put the acl's on the file with the values specfied in the acldefs file. and now you can play with acl's&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Note: To copy acl's from one file to another.&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#0080ff"&gt;# aclget filename | aclput filename1&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;That's all for ACL's for now. Will write about NFS4 ACL's on AIX&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-2070005254596320070?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/2070005254596320070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=2070005254596320070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/2070005254596320070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/2070005254596320070'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/07/access-control-list-acl-on-aix.html' title='Access Control List (ACL&amp;#39;s) on AIX.'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-5771254617992420131</id><published>2007-07-12T04:55:00.001-07:00</published><updated>2007-07-12T04:55:01.606-07:00</updated><title type='text'>Access Control List + Solaris</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;font color='#ff0000'&gt;&lt;small&gt;&lt;small&gt;All the commands are fired from (% - user) prompt not (# - root) so do not confuse with the #es there with root prompt. They are the command output.&lt;/small&gt;&lt;/small&gt;&lt;/font&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;The ACL facility allows you to define more than just the usual eight  permission bits for a file or directory. You can define a list of  users (based on user-id or name) and groups (again, number or name)  that you want to have access to a file. For each user or group getting  special access, you can define read, write, or execute access  permission.   &lt;/p&gt;&lt;p&gt; There are only two commands that you need to learn for Solaris ACLs.  They are &lt;code&gt;setfacl&lt;/code&gt; for setting a file's ACLs and  &lt;code&gt;getfacl&lt;/code&gt; for reading them. There are also a bunch of  system and library calls that make the ACL facility available to  programs. One confusing aspect of ACLs is that, in essence, every file  already has an ACL entry. Running &lt;code&gt;getfacl&lt;/code&gt; on a normal  file reveals some ACL information:&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;% cd /usr/tmp&lt;br/&gt;% touch foo&lt;br/&gt;% ls -l foo&lt;br/&gt;-rw-r--r--   1 pbg      staff          0 Jul 22 13:35 foo&lt;br/&gt;&lt;br/&gt;% getfacl foo&lt;br/&gt;# file: foo&lt;br/&gt;# owner: pbg&lt;br/&gt;# group: staff&lt;br/&gt;user::rw-&lt;br/&gt;group::r--              #effective:r--&lt;br/&gt;mask:rwx&lt;br/&gt;other:r--&lt;br/&gt;&lt;/pre&gt;  &lt;p&gt; This ACL information is merely &lt;code&gt;getfacl&lt;/code&gt;'s interpretation  of the Unix permissions on the file. The &lt;code&gt;user, group&lt;/code&gt; and  &lt;code&gt;other&lt;/code&gt; information is a straightforward display of the  permission bits for those fields. The &lt;code&gt;mask&lt;/code&gt; field is very  similar to the Unix &lt;code&gt;umask&lt;/code&gt; method. It defines the maximum  permissions allowed for users (other than the owner) and groups. Even  if a user or group has permissions set that exceed the mask, the mask  limits their access. The &lt;code&gt;#effective&lt;/code&gt; display shows, for  each user (except the owner) and group, the effect that the mask has  on the permissions. The &lt;code&gt;#effective&lt;/code&gt; output is the one to  look at to determine exactly who can access the file and exactly what  they are allowed to do.   &lt;/p&gt;&lt;p&gt; To set an ACL for a file, use the command &lt;code&gt;setfacl&lt;/code&gt;:  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre&gt;% setfacl -m user:jeff:rw- foo&lt;br/&gt;&lt;br/&gt;% ls -l foo&lt;br/&gt;-rw-r--r--+  1 pbg      staff          0 Jul 22 13:52 foo&lt;br/&gt;&lt;br/&gt;% getfacl foo&lt;br/&gt;&lt;br/&gt;# file: foo&lt;br/&gt;# owner: pbg&lt;br/&gt;# group: staff&lt;br/&gt;user::rw-&lt;br/&gt;user:jeff:rw-           #effective:r--&lt;br/&gt;group::r--              #effective:r--&lt;br/&gt;mask:r--&lt;br/&gt;other:r--&lt;br/&gt;&lt;/pre&gt;  &lt;p&gt; The &lt;code&gt;-m&lt;/code&gt; option tells &lt;code&gt;setfacl&lt;/code&gt; that I want to  modify the ACLs for the file. Use the &lt;code&gt;-s&lt;/code&gt; option to set  the entire mode, but then you must type in the user, group, and other  access bits as well:   &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre&gt;% setfacl -s user::rw-,group::r--,other:---,mask:rw-,user:jeff:rw- foo&lt;br/&gt;&lt;/pre&gt;  &lt;p&gt; To set general user, group, and other permissions, use the  &lt;code&gt;field::perms&lt;/code&gt; identifier. To set ACLs for individual users  and groups, use the &lt;code&gt;field:uid&lt;/code&gt; or &lt;code&gt;gid:perms&lt;/code&gt;  identifier.   &lt;/p&gt;&lt;p&gt; But back to our previous example. Notice that the effective access for  user Jeff is unchanged, he can still only read the file, not write to  it. That's the result of the mask being applied to his permissions. To  grant Jeff the access desired, I need to:   &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre&gt;% setfacl -m mask:rw- foo&lt;br/&gt;% getfacl foo&lt;br/&gt;&lt;br/&gt;# file: foo&lt;br/&gt;# owner: pbg&lt;br/&gt;# group: staff&lt;br/&gt;user::rw-&lt;br/&gt;user:jeff:rw-           #effective:rw-&lt;br/&gt;group::r--              #effective:r--&lt;br/&gt;mask:rw-&lt;br/&gt;other:r--&lt;br/&gt;&lt;/pre&gt;&lt;p&gt; Now Jeff has read and write permissions to the file, while all others  have only read access. Of note is the slight change in behavior of the  &lt;code&gt;ls&lt;/code&gt; command. Any file with specific ACL information is  shown with a + at the end of the permission field. Unfortunately,  &lt;code&gt;find&lt;/code&gt; doesn't seem to have an option to find all files  with ACL lists.&lt;br/&gt;&lt;/p&gt;&lt;p&gt;As well as  setting an ACL for the directory, you can set a default ACL for the  directory. This default ACL is used to set the ACL on every file  created within the directory. The only way I managed to get directory  ACLs to work was using the &lt;code&gt;-s&lt;/code&gt; option with a very-long  parameter string:   &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre&gt;% setfacl -s user::rwx,group::rw-,mask:r--,other:rw-,default:user::rw-,\&lt;br/&gt;default:group::r-x,default:mask:rwx,default:other:r-x bar&lt;br/&gt;&lt;br/&gt;% ls -ld bar&lt;br/&gt;drwxr--rw-+  2 pbg      staff        512 Jul 22 14:11 bar&lt;br/&gt;&lt;br/&gt;% getfacl bar&lt;br/&gt;&lt;br/&gt;# file: bar&lt;br/&gt;# owner: pbg&lt;br/&gt;# group: staff&lt;br/&gt;user::rwx&lt;br/&gt;group::rw-              #effective:r--&lt;br/&gt;mask:r--&lt;br/&gt;other:rw-&lt;br/&gt;default:user::rw-&lt;br/&gt;default:group::r-x&lt;br/&gt;default:mask:rwx&lt;br/&gt;default:other:r-x&lt;br/&gt;&lt;/pre&gt;  &lt;p&gt; Now set a default ACL, and create a file in the directory:  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre&gt;% setfacl -m default:user:jeff:rwx bar&lt;br/&gt;&lt;br/&gt;% getfacl bar&lt;br/&gt;&lt;br/&gt;# file: bar&lt;br/&gt;# owner: pbg&lt;br/&gt;# group: staff&lt;br/&gt;user::rwx&lt;br/&gt;group::rw-              #effective:r--&lt;br/&gt;mask:r--&lt;br/&gt;other:rw-&lt;br/&gt;default:user::rw-&lt;br/&gt;default:user:jeff:rwx&lt;br/&gt;default:group::r-x&lt;br/&gt;default:mask:rwx&lt;br/&gt;default:other:r-x&lt;br/&gt;default:user::rw-&lt;br/&gt;default:user:jeff:rwx&lt;br/&gt;default:group::r-x&lt;br/&gt;default:mask:rwx&lt;br/&gt;default:other:r-x&lt;br/&gt;&lt;br/&gt;% touch bar/test&lt;br/&gt;&lt;br/&gt;% getfacl bar/test&lt;br/&gt;&lt;br/&gt;# file: bar/test&lt;br/&gt;# owner: pbg&lt;br/&gt;# group: staff&lt;br/&gt;user::rw-&lt;br/&gt;user:jeff:rwx           #effective:r--&lt;br/&gt;group::r--              #effective:r--&lt;br/&gt;mask:r--&lt;br/&gt;other:r--&lt;br/&gt;&lt;/pre&gt;  &lt;p&gt; There are several other aspects of ACLs, including deleting ACLs and  using abbreviations and permission bit numbers (rather than symbols).  This information is provided on the appropriate manual pages.   &lt;/p&gt;&lt;p&gt;To use ACLs over an NFS  mount, both the client and server must be running Solaris 2.5 or  better. If the client is running 2.5 but the server is running 2.4 or  lower, you'll see an error such as:   &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;pre&gt;% touch foo&lt;br/&gt;% getfacl foo&lt;br/&gt;&lt;br/&gt;# file: foo&lt;br/&gt;# owner: pbg&lt;br/&gt;# group: staff&lt;br/&gt;user::rw-&lt;br/&gt;group::r--              #effective:r--&lt;br/&gt;mask:rwx&lt;br/&gt;other:r--&lt;br/&gt;&lt;br/&gt;% setfacl -m user:jeff:rw- foo&lt;br/&gt;foo: failed to set acl entries&lt;br/&gt;setacl error: Operation not applicable&lt;br/&gt;&lt;/pre&gt;  &lt;p&gt; You'll get a similar error if you try to use ACLs in a swapfs-based  directory (such as &lt;code&gt;/tmp&lt;/code&gt;). Finally, there's a  "non-feature" of ACLs when used with &lt;code&gt;tar&lt;/code&gt;.  &lt;code&gt;tar&lt;/code&gt; itself works well with files that have associated  ACLs. Unfortunately, the tar file is not readable under previous SunOS  and Solaris operating systems.   &lt;/p&gt;&lt;p&gt; It is also important to note that ACLs "stick" to a file during copy and rename operations. To remove the ACL from a file use &lt;code&gt;setfacl -d&lt;/code&gt; for each entry. When the last entry is removed, the "+" disappears from the file's &lt;code&gt;ls&lt;/code&gt; display.  &lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p class='poweredbyperformancing'&gt;Powered by &lt;a href='http://scribefire.com/'&gt;ScribeFire&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-5771254617992420131?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/5771254617992420131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=5771254617992420131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/5771254617992420131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/5771254617992420131'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/07/access-control-list-solaris.html' title='Access Control List + Solaris'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-646824016935751513</id><published>2007-06-18T22:01:00.001-07:00</published><updated>2007-06-18T22:01:15.299-07:00</updated><title type='text'>File Permissions</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;small&gt;&lt;b&gt;Search Files on their file permissions.&lt;/b&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;/small&gt;&lt;b&gt;World readable&lt;/b&gt;  &lt;p&gt; Normal users should not have access to configuration files or passwords. An attacker can steal passwords from databases or web sites and use them to deface--or even worse, delete--data. This is why it is important that your file permissions are correct. If you are sure that a file is only used by root, assign it with the permissions &lt;span dir='ltr' class='code'&gt;0600&lt;/span&gt; and assign the file to the correct user with &lt;span dir='ltr' class='code'&gt;chown&lt;/span&gt;.&lt;br&gt;&lt;/br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;World/Group writable&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='doc_chap_pre1'&gt;&lt;/a&gt;&lt;/p&gt;&lt;table width='100%' cellspacing='0' cellpadding='0' border='0' class='ntable'&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor='#7a5ada'&gt;&lt;p class='codetitle'&gt;Finding world-writable files and directories&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td bgcolor='#eeeeff' align='left' dir='ltr'&gt;&lt;pre&gt;# &lt;span class='code-input'&gt;find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; 2&amp;amp;gt;/dev/null &amp;amp;gt;writable.txt&lt;/span&gt;&lt;br&gt;&lt;/br&gt;# &lt;span class='code-input'&gt;find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \; 2&amp;amp;gt;/dev/null &amp;amp;gt;&amp;amp;gt;writable.txt&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This will create a huge file with permission of all files having either write&lt;br /&gt;permission set to the group or everybody. Check the permissions and eliminate&lt;br /&gt;world writable files to everyone, by executing &lt;span dir='ltr' class='code'&gt;/bin/chmod o-w&lt;/span&gt; on the&lt;br /&gt;files.&lt;br&gt;&lt;/br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;SUID/SGID files&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Files with the SUID or SGID bit set execute with privileges of the &lt;span class='emphasis'&gt;owning&lt;/span&gt;&lt;br /&gt;user or group and not the user executing the file. Normally these bits are used&lt;br /&gt;on files that must run as root in order to do what they do. These files can lead&lt;br /&gt;to local root compromises (if they contain security holes). This is dangerous&lt;br /&gt;and files with the SUID or SGID bits set should be avoided at any cost. If you&lt;br /&gt;do not use these files, use &lt;span dir='ltr' class='code'&gt;chmod 0&lt;/span&gt; on them or unmerge the package that&lt;br /&gt;they came from (check which package they belong to by using &lt;span dir='ltr' class='code'&gt;equery&lt;/span&gt;; if&lt;br /&gt;you do not already have it installed simply type &lt;span dir='ltr' class='code'&gt;emerge&lt;br /&gt;gentoolkit&lt;/span&gt;). Otherwise just turn the SUID bit off with &lt;span dir='ltr' class='code'&gt;chmod -s&lt;/span&gt;.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='doc_chap_pre2'&gt;&lt;/a&gt;&lt;table width='100%' cellspacing='0' cellpadding='0' border='0' class='ntable'&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor='#7a5ada'&gt;&lt;p class='codetitle'&gt;Finding setuid files&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td bgcolor='#eeeeff' align='left' dir='ltr'&gt;&lt;pre&gt;# &lt;span class='code-input'&gt;find / -type f \( -perm -004000 -o -perm -002000 \) -exec ls -lg {} \; 2&amp;amp;gt;/dev/null &amp;amp;gt;suidfiles.txt&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This will create a file containing a list of all the SUID/SGID files.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='doc_chap_pre3'&gt;&lt;/a&gt;&lt;table width='100%' cellspacing='0' cellpadding='0' border='0' class='ntable'&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor='#7a5ada'&gt;&lt;p class='codetitle'&gt;List of setuid binaries&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td bgcolor='#eeeeff' align='left' dir='ltr'&gt;&lt;pre&gt;/bin/su&lt;br&gt;&lt;/br&gt;/bin/ping&lt;br&gt;&lt;/br&gt;/bin/mount&lt;br&gt;&lt;/br&gt;/bin/umount&lt;br&gt;&lt;/br&gt;/var/qmail/bin/qmail-queue&lt;br&gt;&lt;/br&gt;/usr/bin/chfn&lt;br&gt;&lt;/br&gt;/usr/bin/chsh&lt;br&gt;&lt;/br&gt;/usr/bin/crontab&lt;br&gt;&lt;/br&gt;/usr/bin/chage&lt;br&gt;&lt;/br&gt;/usr/bin/expiry&lt;br&gt;&lt;/br&gt;/usr/bin/sperl5.6.1&lt;br&gt;&lt;/br&gt;/usr/bin/newgrp&lt;br&gt;&lt;/br&gt;/usr/bin/passwd&lt;br&gt;&lt;/br&gt;/usr/bin/gpasswd&lt;br&gt;&lt;/br&gt;/usr/bin/procmail&lt;br&gt;&lt;/br&gt;/usr/bin/suidperl&lt;br&gt;&lt;/br&gt;/usr/lib/misc/pt_chown&lt;br&gt;&lt;/br&gt;/usr/sbin/unix_chkpwd&lt;br&gt;&lt;/br&gt;/usr/sbin/traceroute&lt;br&gt;&lt;/br&gt;/usr/sbin/pwdb_chkpwd&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;By default Gentoo Linux does not have a lot of SUID files (though this depends&lt;br /&gt;on what you installed), but you might get a list like the one above. Most of&lt;br /&gt;the commands should not be used by normal users, only root. Switch off the SUID&lt;br /&gt;bit on &lt;span dir='ltr' class='code'&gt;ping&lt;/span&gt;, &lt;span dir='ltr' class='code'&gt;mount&lt;/span&gt;, &lt;span dir='ltr' class='code'&gt;umount&lt;/span&gt;, &lt;span dir='ltr' class='code'&gt;chfn&lt;/span&gt;, &lt;span dir='ltr' class='code'&gt;chsh&lt;/span&gt;,&lt;br /&gt;&lt;span dir='ltr' class='code'&gt;newgrp&lt;/span&gt;, &lt;span dir='ltr' class='code'&gt;suidperl&lt;/span&gt;, &lt;span dir='ltr' class='code'&gt;pt_chown&lt;/span&gt; and &lt;span dir='ltr' class='code'&gt;traceroute&lt;/span&gt; by&lt;br /&gt;executing &lt;span dir='ltr' class='code'&gt;chmod -s&lt;/span&gt; on every file. Don't remove the bit on &lt;span dir='ltr' class='code'&gt;su&lt;/span&gt;,&lt;br /&gt;&lt;span dir='ltr' class='code'&gt;qmail-queue&lt;/span&gt; or &lt;span dir='ltr' class='code'&gt;unix_chkpwd&lt;/span&gt;. Removing setuid from those files will&lt;br /&gt;prevent you from &lt;span dir='ltr' class='code'&gt;su&lt;/span&gt;'ing and receiving mail. By removing the bit (where&lt;br /&gt;it is safe to do so) you remove the possibility of a normal user (or an&lt;br /&gt;attacker) gaining root access through any of these files.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The only SUID files that I have on my system are &lt;span dir='ltr' class='code'&gt;su&lt;/span&gt;, &lt;span dir='ltr' class='code'&gt;passwd&lt;/span&gt;,&lt;br /&gt;&lt;span dir='ltr' class='code'&gt;gpasswd&lt;/span&gt;, &lt;span dir='ltr' class='code'&gt;qmail-queue&lt;/span&gt;, &lt;span dir='ltr' class='code'&gt;unix_chkpwd&lt;/span&gt; and &lt;span dir='ltr' class='code'&gt;pwdb_chkpwd&lt;/span&gt;.&lt;br /&gt;But if you are running X, you might have some more, since X needs the elevated&lt;br /&gt;access afforded by SUID.&lt;br&gt;&lt;/br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;SUID/SGID binaries and Hard links&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;A file is only considered deleted when there are no more links pointing to it.&lt;br /&gt;This might sound like a strange concept, but consider that a filename like&lt;br /&gt;&lt;span dir='ltr' class='path'&gt;/usr/bin/perl&lt;/span&gt; is actually a link to the inode where the data is&lt;br /&gt;stored. Any number of links can point to the file, and until all of them are&lt;br /&gt;gone, the file still exists.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;If your users have access to a partition that isn't mounted with &lt;span dir='ltr' class='code'&gt;nosuid&lt;/span&gt;&lt;br /&gt;or &lt;span dir='ltr' class='code'&gt;noexec&lt;/span&gt; (for example, if &lt;span dir='ltr' class='path'&gt;/tmp&lt;/span&gt;, &lt;span dir='ltr' class='path'&gt;/home&lt;/span&gt;, or&lt;br /&gt;&lt;span dir='ltr' class='path'&gt;/var/tmp&lt;/span&gt; are not separate partitions) you should take care to&lt;br /&gt;ensure your users don't create hard links to SUID or SGID binaries, so that&lt;br /&gt;after Portage updates they still have access to the old versions.&lt;br&gt;&lt;/br&gt;&lt;/p&gt;&lt;p&gt;To check how many links a file has, you can use the &lt;span dir='ltr' class='code'&gt;stat&lt;/span&gt; command.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='doc_chap_pre4'&gt;&lt;/a&gt;&lt;table width='100%' cellspacing='0' cellpadding='0' border='0' class='ntable'&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor='#7a5ada'&gt;&lt;p class='codetitle'&gt;Stat command&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td bgcolor='#eeeeff' align='left' dir='ltr'&gt;&lt;pre&gt;$ stat /bin/su&lt;br&gt;&lt;/br&gt;  File: `/bin/su'&lt;br&gt;&lt;/br&gt;  Size: 29350           Blocks: 64         IO Block: 131072 regular file&lt;br&gt;&lt;/br&gt;Device: 900h/2304d      Inode: 2057419     Links: 1&lt;br&gt;&lt;/br&gt;Access: (4711/-rws--x--x)  Uid: (    0/    root)   Gid: (    0/    root)&lt;br&gt;&lt;/br&gt;Access: 2005-02-07 01:59:35.000000000 +0000&lt;br&gt;&lt;/br&gt;Modify: 2004-11-04 01:46:17.000000000 +0000&lt;br&gt;&lt;/br&gt;Change: 2004-11-04 01:46:17.000000000 +0000&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;To find the SUID and SGID files with multiple links, you can use &lt;span dir='ltr' class='code'&gt;find&lt;/span&gt;.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='doc_chap_pre5'&gt;&lt;/a&gt;&lt;br /&gt;&lt;table width='100%' cellspacing='0' cellpadding='0' border='0' class='ntable'&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor='#7a5ada'&gt;&lt;p class='codetitle'&gt;Finding multiply linked suid/sgid binaries&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td bgcolor='#eeeeff' align='left' dir='ltr'&gt;&lt;pre&gt;$ find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;p class='poweredbyperformancing'&gt;Powered by &lt;a href='http://scribefire.com/'&gt;ScribeFire&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-646824016935751513?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/646824016935751513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=646824016935751513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/646824016935751513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/646824016935751513'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/06/file-permissions.html' title='File Permissions'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-3286760019531537962</id><published>2007-06-17T11:59:00.000-07:00</published><updated>2007-06-17T12:16:37.991-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Solaris 10'/><title type='text'>Configure a Physical Interface After System Installation</title><content type='html'>* Determine the IPv4 addresses that you want to use for the additional interfaces.&lt;br /&gt;&lt;br /&gt;* Ensure that the physical interface to be configured has been physically installed onto the system.&lt;br /&gt;&lt;br /&gt;* If you have just installed the interface, perform a reconfiguration boot before proceeding with the next task.&lt;br /&gt;&lt;br /&gt;Determine which interfaces are currently configured on the system.&lt;br /&gt; # dladm show-link&lt;br /&gt;&lt;br /&gt;Configure and plumb each interface&lt;br /&gt; # ifconfig &lt;interface name=""&gt; plumb up&lt;br /&gt;&lt;br /&gt;for eg. for interface name pcn0 type:&lt;br /&gt; # ifconfig pcn0 plumb up&lt;br /&gt;&lt;br /&gt;Assign an IP address.&lt;br /&gt; # ifconfig &lt;interface&gt; &lt;ipv4 address=""&gt; netmask + &lt;netmask&gt;&lt;br /&gt;&lt;br /&gt;for eg. you would do:&lt;br /&gt; # ifconfig pcn0 192.168.84.3 netmask + 255.255.255.0&lt;br /&gt;&lt;br /&gt;Verify that the newly configured interfaces are plumbed and configured, or “UP.”&lt;br /&gt; # ifconfig -a&lt;br /&gt;&lt;br /&gt;Check the status line for each interface that is displayed. Ensure that the output contains an UP flag on the status line, for example:&lt;br /&gt; pcn0: flags=1000843 &lt;up,broadcast,running,multicast,ipv4&gt; mtu 1500 index 2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To make the interface configuration persist across reboots, perform the following steps:&lt;br /&gt;&lt;br /&gt;1. Create an /etc/hostname.interface file for each interface to be configured. For example, to add a pcn0 interface, you would create the following file:&lt;br /&gt; # vi /etc/hostname.pcn0&lt;br /&gt;&lt;br /&gt;2. Edit the /etc/hostname.interface file.&lt;br /&gt;At a minimum, add the IPv4 address of the interface to the file.&lt;br /&gt;&lt;br /&gt;3. Add entries for the new interfaces into the /etc/inet/ipnodes file.&lt;br /&gt;&lt;br /&gt;4. Add entries for the new interfaces into the /etc/inet/hosts file.&lt;br /&gt;&lt;br /&gt;5. Perform a reconfiguration boot.&lt;br /&gt; # reboot -- -r&lt;br /&gt;6. Verify that the interface you created in the /etc/hostname.interface file has been configured.&lt;br /&gt; # ifconfig -a&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/up,broadcast,running,multicast,ipv4&gt;&lt;/netmask&gt;&lt;/ipv4&gt;&lt;/interface&gt;&lt;/interface&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-3286760019531537962?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/3286760019531537962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=3286760019531537962' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/3286760019531537962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/3286760019531537962'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/06/configure-physical-interface-after.html' title='Configure a Physical Interface After System Installation'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-210164160281953840</id><published>2007-06-09T10:30:00.000-07:00</published><updated>2008-03-05T08:59:26.989-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIX'/><title type='text'>AIX Training Center in Mumbai</title><content type='html'>&lt;strong&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;Dear Friends,&lt;br /&gt;&lt;br /&gt;               We have been working in UNIX platform since the last 3-4 years and we realized that industry is in need of quality training in IBM AIX. Till now we could'nt find any IBM AIX Training centers in our premises. So we decided to take the responsibility of imparting the knowledge we earned to the upcoming unix generation.&lt;br /&gt;&lt;br /&gt;              Here starts our training centre.&lt;br /&gt;&lt;br /&gt;                                                                 Shubham Computers&lt;br /&gt;                                                                 Opposite RANA Towers&lt;br /&gt;                                                                 Kalwa.&lt;br /&gt;&lt;br /&gt;                 We will be very glad and thankful if you pass this info to your friend circle.&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Sijo James&lt;br /&gt;sijojamesn@gmail.com&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;*****The pessimist sees difficulty in every opportunity. The optimist sees opportunity in every difficulty****&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-210164160281953840?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/210164160281953840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=210164160281953840' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/210164160281953840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/210164160281953840'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/06/aix-training-center-in-mumbai.html' title='AIX Training Center in Mumbai'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-556184552424884140</id><published>2007-06-05T07:26:00.000-07:00</published><updated>2007-06-13T00:18:02.851-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Ethernet Bonding</title><content type='html'>First thing to know is that this stuff is in the kernel and there is a good doc in your kernel source tree under Documentation/networking/bonding.txt this has a lot more detail than I am going to provide here.  &lt;p&gt;A virtual network interface gets created, &lt;i&gt;bond0&lt;/i&gt; in my case,  this gets done in &lt;i&gt;/etc/modules.conf&lt;/i&gt;&lt;/p&gt;  &lt;blockquote&gt; alias bond0 bonding&lt;br /&gt;options bond0 miimon=100 mode=balance-rr&lt;br /&gt;&lt;/blockquote&gt;  &lt;p&gt;The above creates the bond0 interface and sets some options. It will check the MII state of the card every 100 milliseconds for state change notification. It will also use their round robin balancing policy. More on the various options for these and many more in &lt;i&gt;bonding.txt&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;RedHat's RC scripts support this bonding configuration without much modification though there aren't any GUI tool to configure it. RedHat network config gets stored in &lt;i&gt;/etc/sysconfig/network-scripts/ifcfg-int&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;You need to create a config file for the bond0 interface, &lt;i&gt;ifcfg-bond0&lt;/i&gt;&lt;/p&gt;  &lt;blockquote&gt; DEVICE=bond0&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;ONBOOT=yes&lt;br /&gt;IPADDR=192.168.70.101&lt;br /&gt;NETMASK=255.255.255.0&lt;br /&gt;NETWORK=192.168.70.0&lt;br /&gt;BROADCAST=192.168.70.255&lt;br /&gt;GATEWAY=192.168.70.1&lt;br /&gt;&lt;/blockquote&gt;  &lt;p&gt;And for each network card that belongs to this group you need to modify the existing files to look more or less like this:&lt;/p&gt;  &lt;blockquote&gt; DEVICE=eth0&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;ONBOOT=yes&lt;br /&gt;TYPE=Ethernet&lt;br /&gt;MASTER=bond0&lt;br /&gt;SLAVE=yes&lt;br /&gt;&lt;/blockquote&gt;  &lt;p&gt;Once you created these for each of your ethernet cards you can reboot or restart your networking using &lt;i&gt;service network restart&lt;/i&gt; and you should see something like this:&lt;/p&gt;  &lt;blockquote&gt; &lt;pre&gt;bond0     Link encap:Ethernet  HWaddr 00:0D:60:9D:24:68&lt;br /&gt;       inet addr:192.168.70.101  Bcast:192.168.70.255 Mask:255.255.255.0&lt;br /&gt;       UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1&lt;br /&gt;       RX packets:58071 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;       TX packets:1465 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;       collisions:0 txqueuelen:0&lt;br /&gt;       RX bytes:4315472 (4.1 Mb)  TX bytes:120360 (117.5 Kb)&lt;br /&gt;&lt;br /&gt;eth0      Link encap:Ethernet  HWaddr 00:0D:60:9D:24:68&lt;br /&gt;       UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1&lt;br /&gt;       RX packets:26447 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;       TX packets:1262 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;       collisions:0 txqueuelen:1000&lt;br /&gt;       RX bytes:1992430 (1.9 Mb)  TX bytes:95078 (92.8 Kb)&lt;br /&gt;       Interrupt:16&lt;br /&gt;&lt;br /&gt;eth1      Link encap:Ethernet  HWaddr 00:0D:60:9D:24:68&lt;br /&gt;       UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1&lt;br /&gt;       RX packets:31624 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;       TX packets:203 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;       collisions:0 txqueuelen:1000&lt;br /&gt;       RX bytes:2323042 (2.2 Mb)  TX bytes:25282 (24.6 Kb)&lt;br /&gt;       Interrupt:17&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;  &lt;p&gt;You can tcpdump the individual interfaces to confirm that traffic goes shared between them, weirdly though on my machine my tcpdump on &lt;i&gt;eth0&lt;/i&gt; and &lt;i&gt;eth1&lt;/i&gt; does not show incoming traffic just outgoing, dumping &lt;i&gt;bond0&lt;/i&gt; works a charm though.&lt;/p&gt;  &lt;p&gt;To test it I just turned the power off to one of my switch modules, the networking dies for a couple of seconds but soon resumes without a problem. I am sure I could tweak the times a bit but for now this is all I need.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-556184552424884140?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/556184552424884140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=556184552424884140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/556184552424884140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/556184552424884140'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/06/ethernet-bonding.html' title='Ethernet Bonding'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-6218421631405491492</id><published>2007-05-09T08:54:00.001-07:00</published><updated>2007-05-09T08:54:09.750-07:00</updated><title type='text'>UNIX Questions and Answers</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;br /&gt;&lt;script src='http://us.geocities.com/js_source/div03.js' language='JavaScript'&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 align='center' size='8' font=''&gt;UNIX Questions and Answers&lt;/h1&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;Most answers refer to Solaris 2.x systems &lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='contents'&gt;&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;h4&gt;Hardware Issues&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#configure-hardware'&gt;How can I configure new devices&lt;br /&gt;without rebooting?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#hardware'&gt;What hardware diagnostic programs are&lt;br /&gt;there?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#floppy'&gt;Why am I having problems mounting a&lt;br /&gt;floppy?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#zip'&gt;How do I connnect a Zip or JAZZ Drive?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#cd'&gt;How can I play audio CDs and MP3 on my system?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#prtdiag'&gt;Show hardware configuration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#nscdrom'&gt;How do i get non sun cdrom drives to work&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#old'&gt;Info on old sun hardware&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#sid'&gt;How can I change the hostid?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#memory'&gt;How much memory does my system have?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#iostat'&gt;How to check foir disk errors&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#sunmon'&gt;Connecting a Sun Monitor to a PC&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#pcmon'&gt;Connecting a PC Monitor ta a Sun&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#pinout'&gt;Cable pinouts, scsi, video, audio, serial, parallel&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#throughput'&gt;Throughput  MB/MHZ RPM rule of thumb&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/network-configuration.html'&gt;Perl script to extract network information&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4&gt;Configuration Issues&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#keyboard-translation'&gt;How do I solve Keyboard Translation&lt;br /&gt;Errors?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#sover'&gt;Preventin stack overflow security problems&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#back'&gt;How can i run jobs in background during light loading&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#DTL'&gt;How do I configure DTLogin for other window managers?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#CDE'&gt;How do I configure CDE?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#duelmonitor'&gt;Configuring 2 headed systems&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#cdecd'&gt;How to prevent CDROM popup under CDE&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#swap'&gt;How can I increase swap space?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#ipcs'&gt;How can I find out and set shared memory?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#inodes'&gt;How to find out how many inodes are free and used&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#bsizes'&gt;What is the block size on my filesystem&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#dualhost'&gt;How do I dual host a system?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#clourflash'&gt;How do I stop colour flashing?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#installboot'&gt;How do I make a file system bootable after a restore?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#patches'&gt;What patches are on a system?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#bind'&gt;What version of bind am I running?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#obp'&gt;How do i view and set the open boot prom settings&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#nologin'&gt;How do i stop people logging in ?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#ftplogin'&gt;Have FTP users that cannot login&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#xdpyinfo'&gt;What is my screen rolosution, etc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/jumpstart.html'&gt;Jumpstart configuration files (exmples of)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#processors'&gt;Online &amp;amp; Offline processors, What is ran on a processor etc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/disk-translate.html'&gt;translate disk c*t*d*s* to sd* names&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4&gt;NFS Issues&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#Stale-nfs-handle'&gt;Why do I get the error Stale NFS&lt;br /&gt;Handle?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#rpc-program'&gt;What does the error RPC Program not&lt;br /&gt;registered mean?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#NFS'&gt;How do I carry out NFS performance tuning?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#dotnfs'&gt;Why do I get .nfsxxxx files on NFS mounted&lt;br /&gt;filesystems?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#dfmounts'&gt;How do I find out which clients are NFS mounting&lt;br /&gt;a server?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4&gt;General Issues&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#pkg'&gt;How to create solaris pkg's&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#3264'&gt;How to tell if you are running 32 or 64 bit under Solaris 7&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#back'&gt;How can i run jobs in background during light loading&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#solaris-commands'&gt;What useful Solaris commands are there for finding out what's going on? &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#speed'&gt;How do I find out the speed of my machine?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#security'&gt;Security issues and solaris&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#defunk'&gt;How do I get rid of defunct processes?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#procs'&gt;How do i find out what a running process is doing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#tar'&gt;How do I tar to a remote system?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#cpio'&gt;How do I copy directory structures using cpio?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#banner'&gt;How do I stop printing a banner page?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#socketcomms'&gt;How do i communicate via two systems using sockets &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#xp1520'&gt;What is the Xerox toner for a NeWSprinter20&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#obpnet'&gt;How do i boot over the net via a different interface&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/rosetta.html'&gt;What is the solaris unix command on ? unix system&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#upperlower'&gt;Upper to lover case translation using tr&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4&gt;Software issues&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Jumpstart setup and configuration (currently unavailable - being re-written)&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/veritas-commands.html'&gt;Veritas command line arguments&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/legato.html'&gt;Legato command line commands&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/raid_manager_6_and_A1000.html'&gt;Raid Manager 6.22 and A1000&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/sds_howto.html'&gt;Solstice Disksuite (SDS) setup and configuration &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/sds-mirror-root.html'&gt;Solstace Disksuite (SDS) mirror root disk&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/samba_config.html'&gt;Samba setup and config&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SSH steup (currently unavailable - being re-written)&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/clearcase.html'&gt;clearcase checkin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://wgg.real.com/rndl/blackjack.html'&gt;Read audio player for Solaris&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#dhtmlr'&gt;how can i build a html page of system configurations&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#gftp'&gt;Graphical FTP programs for X&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.plig.org/%7Exwinman/index.html'&gt;What X windows Managers are there&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.micrimages.com/'&gt;Free X server for 95/98/2000/NT"&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#ie5'&gt;Microsoft Internet explorrer and outlook express for solaris&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4&gt;Networking issues&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/x25-packet.html'&gt;X25 Packet Overhead  Modulo 8 LAPB) or Modulo 128 (LAPBE)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/perl-get-tcpip.html'&gt;Perl script to get the tunable tcpip parameters (uses ndd)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Security issues&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#security'&gt;Security issues and solaris&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Firewall issues&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#firewall'&gt;Firewall info&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Performance tuning issues&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#performance'&gt;Proformance tuning&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;E10000&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#domainrename'&gt;Rename an E10000 domain&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='obp'&gt;How do i view and set the open boot prom settings&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;From the unix prompt use &lt;code&gt;eeprom&lt;/code&gt;. From the ok prompt use &lt;code&gt;devaliases&lt;/code&gt;, &lt;code&gt;printenv, nvedit&lt;/code&gt; and &lt;code&gt;nvalias&lt;/code&gt;.&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='nologin'&gt;How do i stop people logging in ?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;If the file &lt;code&gt;/etc/nologin&lt;/code&gt; exists then only root can login. Whatever the contents of the file are are displayed to whoever is attempting a login.&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='obpnet'&gt;How do i boot over the net via a different interface&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;From the ok prompt type &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;show-nets &lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;This will display the possible interfaces. Select an interface then type &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;nvalias net ^Y &lt;/code&gt; &lt;br&gt;&lt;/br&gt;&lt;br /&gt;This will set the selected interface to the alias net.&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='keyboard-translation'&gt;How do I solve Keyboard Translation&lt;br /&gt;Errors?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The most likely cause of this is an incorrect &lt;code&gt;XKeysymDB&lt;/code&gt; file or an&lt;br /&gt;incorrect pointer to it. Try looking in &lt;code&gt;/usr/openwin/lib&lt;/code&gt; or&lt;br /&gt;&lt;code&gt;/usr/openwin/lib/X11&lt;/code&gt;. The Installation and Administration&lt;br /&gt;manual for the application should have some information about this.&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;If logged in as root from another system try&lt;br /&gt;&lt;code&gt;/usr/openwin/bin/kbd-mode -a&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='Stale-nfs-handle'&gt;Why do I get the error Stale NFS&lt;br /&gt;Handle?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This was probably caused by a directory being deleted while another&lt;br /&gt;system was NFS mounted into it. The best action is to &lt;code&gt;cd&lt;/code&gt;&lt;br /&gt;out of the directory and perform a &lt;code&gt;umount&lt;/code&gt;. Sometimes&lt;br /&gt;halting and restarting the automount daemon is reqired, for example:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/etc/rc2.d/S74autofs [stop/start]&lt;/code&gt;. or &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;/etc/init.d/nfs.server [stop/start]&lt;/code&gt;. &lt;br&gt;&lt;/br&gt;&lt;br /&gt;If none of these work, then it might have to be a reboot.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='configure-hardware'&gt;How can I configure new devices without&lt;br /&gt;rebooting? &lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;It is advisable to halt and power off the system whenever you attach new&lt;br /&gt;scsi devices. However, if this is not possible try this: &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;If possible stop the system with &amp;amp;lt; STOP &amp;amp;gt; &amp;amp;lt; A &amp;amp;gt;, connect the device and&lt;br /&gt;type &lt;code&gt;go&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Type: &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;drvconfig&lt;/code&gt; &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;devlinks&lt;/code&gt; &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;tapes / disks&lt;/code&gt; (depending on the device attached)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='rpc-program'&gt;What does the error RPC Program not registered&lt;br /&gt;mean?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Probably the NFS server has got itself a little confused. Check there is&lt;br /&gt;an entry in &lt;code&gt;/etc/dfs/dfstab&lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Try stopping and restarting the daemon, for example:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;/etc/init.d/nfs.server [stop/start]&lt;/code&gt; &lt;br&gt;&lt;/br&gt;&lt;br /&gt;If this doesn't work, try a reboot.&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='tar'&gt;How do I tar to a remote system?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Tar to a remote drive:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;tar cvfb  -  20 filenames | rsh host dd of=/dev/rmt0  obs=20b&lt;br /&gt;&lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Tar from a remote drive:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;rsh -n host  dd  if=/dev/rmt0   bs=20b  | tar xvBfb  - 20&lt;br /&gt;filenames&lt;/code&gt; &lt;br&gt;&lt;/br&gt;&lt;br /&gt;Copying directory trees: &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;cd fromdir; tar cf - . | (cd  todir;  tar xfBp -)&lt;/code&gt; &lt;br&gt;&lt;/br&gt;&lt;br /&gt;Copy directory tree to another host:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;cd fromdir;  tar cf - * | rsh host "cd todir ; tar xf -"&lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='cpio'&gt;How do I copy directory structure with cpio?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Use find and cpio&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;cd fromdir; find . -name -print | cpio -pmd /todir&lt;/code&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='swap'&gt;How can I increase swap space?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Swapping onto a file system is faster than swapping to a file. If&lt;br /&gt;possible, partition an area of disk as the additional swap area.&lt;br /&gt;Otherwise, create a swap file with the command &lt;code&gt;mkfile&lt;/code&gt; (see&lt;br /&gt;man page), for example: &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;mkfile 100m swappy&lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Add the swap area with the command &lt;code&gt;swap&lt;/code&gt; (see man page) for&lt;br /&gt;example:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;swap -a swappy&lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='nscdrom'&gt;Cetting a non sun cdrom to work&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The main secret is to get the cdrom to talk in 512 byte sectors. If the cdrom does this then it will work.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://saturn.tlug.org/suncdfaq'&gt;Saturn.tlug.org&lt;/a&gt; This is a good FAQ to start with or try the Sun CD FAQ. or of course your manafacturs instruction book.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='speed'&gt;How do I find out the speed of my machine?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Use the command &lt;code&gt;psrinfo -v&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='NFS'&gt;How do I carry out NFS performance tuning?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Start with the SMCC  NFS Server Performance and Tuning Guide &lt;br&gt;&lt;/br&gt;&lt;br /&gt;This is a pkgadd of SUNWabhdw and adds the guide to answerbook &lt;br&gt;&lt;/br&gt;&lt;br /&gt;SUNWadhdw is on the "Software Supplement for the Solaris 2.6 Operating&lt;br /&gt;Environment" CD.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Use the command &lt;code&gt;/usr/bin/nfsstat&lt;/code&gt; to view the NFS statistics&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='hardware'&gt;What hardware diagnostic programs are&lt;br /&gt;there?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Use SunVTS. This is available on the Software Supplement for the Solaris&lt;br /&gt;2.6 Operating Environment CD.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;If you have a fibre problem then try STORtools. You will probably need&lt;br /&gt;a fibre loopback cable in order to get the most out of this.&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='installboot'&gt;How do I make a file system bootable after a&lt;br /&gt;restore?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;If you have reinstalled the / file system from backup (ie&lt;br /&gt;&lt;code&gt;ufsdump&lt;/code&gt;) then you will need to recreate the boot block on&lt;br /&gt;the boot disk. This is done using the &lt;code&gt;installboot&lt;/code&gt; command (&lt;br /&gt;read the man page ), for example:&lt;br&gt;&lt;/br&gt; &lt;code&gt;installboot&lt;br /&gt;/usr/platform/`uname -i`/lib/fs/ufs/bootblk  /dev/rdsk/c?t?d?s?&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='dualhost'&gt;How do I dual host a system?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Install the network card and cable it up. Make sure that any&lt;br /&gt;jumpersettings are set.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add the second interface name and IP to the hosts file and Name&lt;br /&gt;Service.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Edit the file &lt;code&gt;/etc/hostname.interface&lt;/code&gt; where&lt;br /&gt;&lt;code&gt;interface&lt;/code&gt; is the type, for example, &lt;code&gt;le1 hme1&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Reboot the sysyem or manually set it up with &lt;code&gt;ifconfig&lt;/code&gt;&lt;br /&gt;(see manual page)&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;ifconfig hmse1 plumb&lt;/code&gt; &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;ifconfig hmse1 IP-Address&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;You may also need to perform an add route (see manual page) &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;route add net destination gateway metric&lt;/code&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='patches'&gt;How do I find out what patches are on a&lt;br /&gt;system?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Use the command &lt;code&gt;showrev -p&lt;/code&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Use the command &lt;code&gt;patchdiag -l &lt;/code&gt; this also lists patches you should install.&lt;br&gt;&lt;/br&gt;You&lt;br /&gt;will need do download a copy from sun. If you have access try&lt;br /&gt;downloading from http://sunsolve.sun.com.sunsolve/patchdiag this is a&lt;br /&gt;tar compressed file.&lt;br&gt;&lt;/br&gt;There is a tar file of patchdiag on this site but i have not set up ftp at the moment of writing this page.&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='memory'&gt;How much memory does my system have?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Use the command &lt;code&gt;prtconf&lt;/code&gt; and &lt;code&gt;grep&lt;/code&gt; for the&lt;br /&gt;memory, for example: &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;prtconf |grep Memory&lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;If you need to know what memory sims are in what slot use the perl script from Micron.  A sample script is. &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/memconf.html'&gt;Sample of Memcom Script&lt;/a&gt; Remeber to get an official copy.&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='cd'&gt;How can I play audio CDs and MP3 on my system?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;For CD&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Download a copy of Workman from &lt;a href='http://www.midwinter.com/'&gt;Midwinter.com&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;If you have problems with sound then it might be that you cannot use&lt;br /&gt;the internal sound card and will have to plug speekers int the cd&lt;br /&gt;plater itself.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;However this might work&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;edit /etc/rmmount.conf and add&lt;br&gt;&lt;/br&gt;&lt;br /&gt;action cdrom action_workman.so&lt;br&gt;&lt;/br&gt;&lt;br /&gt;	/usr/local/bin/workman&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;try this before any other cdrom actions&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;For MP3 files look to the following site &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.opensound.com/ossapps.html'&gt;Opensound&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;If you wish to read an audio cd under solaris and copy the files to&lt;br /&gt;wav, mpeg, etc then you need the program galette available from &lt;a href='http://www.cybersoft.org/galette'&gt;Galette&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Once you have the files stored as wav files you need to convert them to MP3 using &lt;a href='http://hem.bredband.net/lord'&gt;Blade&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='solaris-commands'&gt;What useful Solaris commands are there&lt;br /&gt;for finding out what's going on?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This is a definite RTFM, but start with these:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;ps&lt;/code&gt;, &lt;code&gt;iostat&lt;/code&gt;, &lt;code&gt;nfsstat&lt;/code&gt;,&lt;br /&gt;&lt;code&gt;sar&lt;/code&gt;, &lt;code&gt;netstat&lt;/code&gt;, &lt;code&gt;snoop&lt;/code&gt;,&lt;br /&gt;&lt;code&gt;mpstat&lt;/code&gt;, &lt;code&gt;rpcinfo&lt;/code&gt;, &lt;code&gt;truss&lt;/code&gt;,&lt;br /&gt;&lt;code&gt;prtdiag&lt;/code&gt;, &lt;code&gt;crash&lt;/code&gt;, &lt;code&gt;psrinfo&lt;/code&gt;,&lt;br /&gt;&lt;code&gt;prtconf&lt;/code&gt;, &lt;code&gt;arp&lt;/code&gt; and &lt;code&gt;uptime&lt;/code&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;try looking at the enclosed perl script to get an idea of wht to look for.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/perl-sys-performance.html'&gt;Perl script to look at how the system is performing&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='zip'&gt;How do I connnect a Zip Drive?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Helpful info from Iomega at &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.iomega.com/support/documents/2019.html'&gt;Zip Drives on Sun&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;basically edit /etc/format.dat and add :-&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;disk_type = "Zip" \&lt;br&gt;&lt;/br&gt;	: ctlr = SCSI\&lt;br&gt;&lt;/br&gt;	: ncyl = 2046 : acyl = 2 : pcyl = 2048 : nhead = 2\&lt;br&gt;&lt;/br&gt;	: nsect = 40 : rpm : bpt = 20480                   &lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;partition = "Zip" \&lt;br&gt;&lt;/br&gt;        : disk = "Zip" : ctlr = SCSI \&lt;br&gt;&lt;/br&gt;        : 2 = 0, 192480 : 2 = 0, 1159168   &lt;br&gt;&lt;/br&gt;                                                      &lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.iomega.com/support/documents/4019.html'&gt;Jazz Drives on Sun&lt;/a&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='dotnfs'&gt;Why do I get .nfsxxxx files on NFS mounted&lt;br /&gt;filesystems?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;These are temporary files used by the system to guarantee data&lt;br /&gt;reliability over the unreliable nfs mount. These can be left behind by&lt;br /&gt;an application or process that has terminated abnormally.&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='banner'&gt;How do I stop printing a banner page?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;If this is for just one print, use the &lt;code&gt;-o&lt;/code&gt; option, for&lt;br /&gt;example:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;lp -o nobanner name&lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Otherwise, edit the file &lt;code&gt;/etc/lp/interfaces/printername&lt;/code&gt; and&lt;br /&gt;change the option &lt;code&gt;nobanner&lt;/code&gt; to &lt;code&gt;yes&lt;/code&gt;.&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='ipcs'&gt;How can I find out and set shared memory?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Use the command &lt;code&gt;ipcs&lt;/code&gt; to view what is set.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;If you wish to change them, edit &lt;code&gt;/etc/systems&lt;/code&gt; and reboot&lt;br /&gt;with &lt;code&gt;-r&lt;/code&gt;.&lt;br /&gt;&lt;br&gt;&lt;/br&gt;Typically, you would edit one or more of &lt;code&gt;msgsys&lt;/code&gt;,&lt;br /&gt;&lt;code&gt;semsys&lt;/code&gt;, &lt;code&gt;shmsys&lt;/code&gt;.&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Check out the sun docunemt on shared memory &lt;a href='http://www.sunworld.com/swol-09-1997/swol-09-insidesolaris.html'&gt;sunworld document on shared memory&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='inodes'&gt;Number of inodes used and free&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;use the command &lt;code&gt;df -F ufs -o i&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='bsizes'&gt;What block size is my file system&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;use the command &lt;code&gt; mkfs -m /dev/dsk/c?t?d?s? &lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;look at the bsize value  (you need to be root to run this)&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='dfmounts'&gt;How do I find out which clients are NFS mounting&lt;br /&gt;a server?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Use the command &lt;code&gt;dfmounts&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='defunk'&gt;How do I get rid of defunct processes?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;These are caused by an application or process crashing, terminating&lt;br /&gt;abnormally, getting confused&lt;br /&gt;etc. Look for the parent process of these and kill or refresh it.&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='bind'&gt;What version of bind am I running?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;try &lt;code&gt; /usr/ccs/bin/what /usr/sbin/in.named |grep named&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;Solaris 2.6 bind 4.9.4-P1 &lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Solaris 2.5.1 bind 4.9.3-P1 &lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='sid'&gt;How can I change the hostid?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;There are several ways to do this, try: &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.squirrel.com/squirrel/sun-nvram-hostid.faq.html'&gt;Squirrel&lt;br /&gt;FAQ&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;br /&gt;&lt;a name='floppy'&gt;Why am I having problems mounting a floppy?&lt;/a&gt;&lt;br /&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='DTL'&gt;How do I configure dtlogin for other window managers?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;You need to create an Xresourses file to start the window manager.&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;cd /usr/dt/config/C/Xresources.d&lt;br /&gt;copy Xresources.ow to a new name of your window manager ie Xresourses.kde.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Now edit your Xresources.kde file. Making the changes for your window manager&lt;br&gt;&lt;/br&gt;&lt;br /&gt;I.e.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Dtlogin*altDtsIncrement:        True&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Dtlogin*altDtName:      KDE Desktop&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Dtlogin*altDtKey:       /usr/local/kde/bin/startkde&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Dtlogin*altDtStart:     /usr/local/kde/bin/startkde&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Dtlogin*altDtLogo:      KDElogo        &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;copy the KDE logo KDElogo.pm to /usr/dt/appconfig/icons/C/KDElogo.pm&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;   &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='dualmonitor'&gt;Dual headed sun system&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Try looking at infodoc 11669.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;OPenwin&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;openwin -dev /dev/cgsix0 left -dev /dev/cgsix1 right&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;CDE&lt;/u&gt;&lt;/b&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;edit Xservers with &lt;br&gt;&lt;/br&gt;&lt;br /&gt;:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 -dev /dev/cgsix0 -dev /dev/cgsix1 right&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;h4&gt;&lt;a name='CDE'&gt;How do I configure CDE?&lt;/a&gt;&lt;br /&gt;&lt;/h4&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;p&gt;&lt;u&gt;The control panel&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;In this example I will add the workman cd player to the  control panel.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Copy the CDE config file dtwm.fp from &lt;code&gt;/usr/dt&lt;/code&gt; to your &lt;code&gt;homedirectory/.dt/types&lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Create an icon and place it in &lt;code&gt;~.dt/icons&lt;/code&gt;.  it should have a .m.pm extension. &lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;code&gt;ie. Player.m.pm&lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Edit the &lt;code&gt; dtwm.fp &lt;/code&gt; file&lt;br /&gt;and add following. In this case I am adding it between the help and&lt;br /&gt;trash areas. the position hints is 13 so it should appear towards the&lt;br /&gt;right between the help (book) icon and the trash (waste bin) icon.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;CONTROL cdplayer&lt;br&gt;&lt;/br&gt;{&lt;br&gt;&lt;/br&gt;  TYPE                  icon&lt;br&gt;&lt;/br&gt;  CONTAINER_NAME        Top&lt;br&gt;&lt;/br&gt;  CONTAINER_TYPE        BOX&lt;br&gt;&lt;/br&gt;  POSITION_HINTS        13&lt;br&gt;&lt;/br&gt;  PUSH_ACTION           cdplayer&lt;br&gt;&lt;/br&gt;  ICON                  Player&lt;br&gt;&lt;/br&gt;}&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br /&gt;Create a file for what to do when the button is pushed. In the example&lt;br /&gt;it is called cdplayer. The file has a .dt extension IE cdplayer.dt. The&lt;br /&gt;contents of this file are. &lt;br&gt;&lt;/br&gt;&lt;pre&gt;ACTION cdplayer&lt;br&gt;&lt;/br&gt;{&lt;br&gt;&lt;/br&gt;     LABEL         cdplayer&lt;br&gt;&lt;/br&gt;     TYPE          COMMAND&lt;br&gt;&lt;/br&gt;     EXEC_STRING   /usr/local/bin/workman&lt;br&gt;&lt;/br&gt;     ICON          somename&lt;br&gt;&lt;/br&gt;     WINDOW_TYPE   NO_STDIO&lt;br&gt;&lt;/br&gt;     DESCRIPTION   starts cdplayer&lt;br&gt;&lt;/br&gt;}&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;p&gt;&lt;u&gt;The mouse menu&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;copy the mouse menu from /usr/dt/config/C/sys.dtwmrc to you home directory ~/.dt/types/dtwmrc.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;edit the dtwnrc file adding or removing mouse options. In this case we will create an applications submenu and put the cdplayer in that submenu. &lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Firstly add the applications menu to the main menu by instering a line like this&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;"Applications"                      f.menu apps&lt;br&gt;&lt;/br&gt;in the DtRootMenu section.  approx line 38&lt;br&gt;&lt;/br&gt;then  hgo to the botton of the file and create the application menu. ie. &lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Menu apps&lt;br&gt;&lt;/br&gt;{&lt;br&gt;&lt;/br&gt;APPLICATIONS" f.title&lt;br&gt;&lt;/br&gt;"CD Player" f.exec "/usr/local/bin/workman"&lt;br&gt;&lt;/br&gt;}&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='clourflash'&gt;How do I stop colour flashing?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='socketcomms'&gt;How do i communicate between systems using scokets&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;There are several ways to do this.  Below is an example of a perl program that sends the string &lt;br&gt;&lt;/br&gt;"hey now hey now now. Sing this corrosion to me " to port 1250 on a system called mission.&lt;br&gt;&lt;/br&gt;On the mission server there is a program which is called via inetd that picks up this incomming &lt;br&gt;&lt;/br&gt;line and writes it to a file /tmp/outfile.  the program is called read-socket.pl&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;u&gt;Sample /etc/inetd.conf entry&lt;/u&gt;&lt;br&gt;&lt;/br&gt;read-socket stream tcp nowait neville /export/home/neville/read-socket.pl&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;u&gt;Sample /etc/services entry&lt;/u&gt;&lt;br&gt;&lt;/br&gt;read-socket     1250/tcp&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;u&gt;Sample sending program  (send-line.pl)&lt;/u&gt;&lt;br&gt;&lt;/br&gt;#!/usr/bin/perl&lt;br&gt;&lt;/br&gt;use IO::Socket;&lt;br&gt;&lt;/br&gt;$sock = new IO::Socket::INET (PeerAddr =&amp;amp;gt; 'mission',&lt;br&gt;&lt;/br&gt;                              PeerPort =&amp;amp;gt; 1250,&lt;br&gt;&lt;/br&gt;                              Proto    =&amp;amp;gt; 'tcp',&lt;br&gt;&lt;/br&gt;                             );&lt;br&gt;&lt;/br&gt;die "Socket could not be created.  Reason $! \n"  unless $sock;&lt;br&gt;&lt;/br&gt;print $sock "hey now hey now now. Sing this corrosion to me\n";&lt;br&gt;&lt;/br&gt;close ($sock);&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;u&gt;Sample sending program  (send-file.pl)&lt;/u&gt;&lt;br&gt;&lt;/br&gt;#!/usr/bin/perl&lt;br&gt;&lt;/br&gt;use IO::Socket;&lt;br&gt;&lt;/br&gt;my $FILETOSEND = "/tmp/crappy";&lt;br&gt;&lt;/br&gt;open (INFILE, $FILETOSEND) || die "cannot open file: $FILETOSEND \n";&lt;br&gt;&lt;/br&gt;$sock = new IO::Socket::INET (PeerAddr =&amp;amp;gt; 'mission',&lt;br&gt;&lt;/br&gt;                              PeerPort =&amp;amp;gt; 1250,&lt;br&gt;&lt;/br&gt;                              Proto    =&amp;amp;gt; 'tcp',&lt;br&gt;&lt;/br&gt;                             );&lt;br&gt;&lt;/br&gt;die "Socket could not be created.  Reason $! \n"  unless $sock;&lt;br&gt;&lt;/br&gt;#now do the sending&lt;br&gt;&lt;/br&gt;select  ($sock);&lt;br&gt;&lt;/br&gt;while (&amp;amp;lt; INFILE &amp;amp;gt; )&lt;br&gt;&lt;/br&gt;	{	&lt;br&gt;&lt;/br&gt;	print $_;&lt;br&gt;&lt;/br&gt;}&lt;br&gt;&lt;/br&gt;close ($sock);&lt;br&gt;&lt;/br&gt;close ($INFILE);&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;u&gt;Sample reading program  (read-socket.pl)&lt;/u&gt;&lt;br&gt;&lt;/br&gt;#!/usr/bin/perl&lt;br&gt;&lt;/br&gt;open (OUT,  "&amp;amp;gt;/tmp/outfile") || die "cannot open output file \n";&lt;br&gt;&lt;/br&gt;print OUT &amp;amp;lt; STDIN &amp;amp;gt;&lt;br&gt;&lt;/br&gt;close (OUT);&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;u&gt;Sample reading program as a deamon (not using /etc/system and /etc/services)&lt;/u&gt;&lt;br&gt;&lt;/br&gt;#!/usr/bin/perl&lt;br&gt;&lt;/br&gt;use IO::Socket;&lt;br&gt;&lt;/br&gt;$sock = new IO::Socket::INET (PeerPort =&amp;amp;gt; 1250,&lt;br&gt;&lt;/br&gt;                              Proto    =&amp;amp;gt; 'tcp',&lt;br&gt;&lt;/br&gt;                              Listen   =&amp;amp;gt; 10,&lt;br&gt;&lt;/br&gt;                              Reuse    =&amp;amp;gt; 1,&lt;br&gt;&lt;/br&gt;                             );&lt;br&gt;&lt;/br&gt;die "Cannot start deamon on socket  Reason $! \n"  unless $sock;&lt;br&gt;&lt;/br&gt;while ($this_connection = $server-&amp;amp;gt;accept())&lt;br&gt;&lt;/br&gt;{&lt;br&gt;&lt;/br&gt;print $this_connection;&lt;br&gt;&lt;/br&gt;}&lt;br&gt;&lt;/br&gt;close ($sock);&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='procs'&gt;How do i find out what resources a running process is using&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;Use the proc commands below and others. &lt;br&gt;&lt;/br&gt;/usr/proc/bin/pmap -x $PID   (see what memory is used)&lt;br&gt;&lt;/br&gt;/usr/proc/bin/pldd $PID         (see what shared libraries are used)&lt;br&gt;&lt;/br&gt;/usr/proc/bin/pwdx $PID         (see what the working directory is)&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Download a copy of memtool from Sun.  &lt;a href='ftp://playground.sun.com/pub/memtool'&gt;ftp://playground.sun.com/pub/memtool&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='curses'&gt;How can i program in curses?&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;If you plan to use curses to do an interface try looking at this site. It might make life easier for you&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.bit.net.au/%7Ebhepple/scrmgr'&gt;SCRMGR curses interface&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='prtdiag'&gt;Get system hardware configuration&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Run the command &lt;code&gt;/usr/platform/&lt;i&gt;arch-type&lt;/i&gt;/sbin/prtdiag -V&lt;/code&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='back'&gt;Run jobs in background during times of light system loading&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Try this site&lt;br /&gt;&lt;a href='http://www.pattosoft.com.au/jason/idleize'&gt;Idalize program&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='dhtmlr'&gt;System stats in html format&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Get a copy of DHTMLR (Do HTML Report) forom the belew site.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;this is a shell script that gets system info and builds web pages.&lt;br /&gt;&lt;a href='http://online.sunsolve.sun.bl/'&gt;DHTMLR program from the Sunsolve site Belgium&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='gftp'&gt;Graphical FTP front ends for X&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;There are quite a few graphical front ends for ftp available. Below are&lt;br /&gt;a couple of them. Also try looking at the KDE and GNOME sites.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://gftp.seul.org/'&gt;GNU licenses Graphical ftp&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.llnl.gov/ia/xdir.html'&gt;llnl xdir&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='security'&gt;Security issues and Solaris&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Um yes well probably quite a few bits to add here.  lets try&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/security.html'&gt;Security FAQ Page&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='old'&gt;Info on old sun hardware&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This is a 7 part document&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/part1.html'&gt;Part 1&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/part2.html'&gt;Part 2&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/part3.html'&gt;Part 3&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/part4.html'&gt;Part 4&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/part5.html'&gt;Part 5&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/part6.html'&gt;Part 6&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://www.geocities.com/arndike/part7.html'&gt;Part 7&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='ie5'&gt;Microsoft Internet Explorer and Outlook express for Solaris&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Download it from&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.microsoft.com/downloads'&gt;Internet Explorer&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='sover'&gt;How to prevent stack overflow &lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;add noexec_user_stack to the file  /etc/system&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='3264'&gt;How to tell if you are in 32 or 64 bit mode&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;use the command isainfo -v&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='cdecd'&gt;Disable CDROM popup under CDE&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;comment out the stdvolcheck stuff from&lt;br&gt;&lt;/br&gt;&lt;br /&gt;/usr/dt/config/sessionetc&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='ftplogin'&gt;Stop FTP users from logging in&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Set their shell in /etc/passwd to /bin/false. Then edit /etc/shells and add a line /bin/false.&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='iostat'&gt;Check for disk errors&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Use the commands&lt;br&gt;&lt;/br&gt;&lt;br /&gt;iostat -e or iostst -E or netstat -k&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='firewall'&gt;Firewall information&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Probably a lot to say here lets start with&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/firewall-seen.html'&gt;Commonly scanned firewall sockets&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='performance'&gt;Performance tuning information&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Probably a lot to say here lets start with&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/Solaris_Performance.html'&gt;Performance tuning and look see stuff&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='xp1520'&gt;Xerox NeWSprinter20 Toner&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;As far as i can tell this is the  toner Xerox XP 15/20&lt;br /&gt;&lt;/p&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='sunmon'&gt;Connecting a Sun Monitor to a PC&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;You will need to get a fixed frequency card. Look at this site.&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.monitorworld.com/Monitors/Sun_page.html'&gt;Monitor world&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='pcmon'&gt;Connecting a PC Monitor to a Sun&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;You will need to get a 13W3 to VGA connector.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Some monitors (Notably Sony based ones) will just work. Plug it it and reboot.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;If not you will need to set up your monitor configurations at the NVRAM. &lt;br&gt;&lt;/br&gt;&lt;br /&gt;To set the NVRAM you need the following info.&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='#pinout'&gt;Pinouts for Scsi, Video, Audio, Parallel, serial, etc&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;A good site to start looking at is:&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.pin-outs.com/directory/Hardware/PinOuts_Com'&gt;Pinouts.com&lt;/a&gt; &lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;   &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='#xdpyinfo'&gt;What is my screen resolution, etc&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Under the X11 environment run the command xdpyinfo. If not running X&lt;br /&gt;then you will need to look at one of the frame buffer config commands.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;Unfortunatly these are framebuffer specific but try&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;System/Framebuffer	Command&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;Sparc4, Sparcx5 tcx	tcxconfig&lt;br&gt;&lt;/br&gt;x86			kdmconfig&lt;br&gt;&lt;/br&gt;Ultra creator		ffbconfig&lt;br&gt;&lt;/br&gt;Ultra PGX/M64		m64config&lt;br&gt;&lt;/br&gt;sparc ZX/TZX		leoconfig&lt;br&gt;&lt;/br&gt;sparc SX		cg14config&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br /&gt;If you do not have the OS running but are at the OK pronpt try using nvedit.&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;    &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='upperlower'&gt;Upper to lower case traanslation using tr&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;pre&gt;#!/bin/sh&lt;br&gt;&lt;/br&gt;#translate filenames in uppercase to lowercase&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;for FILE in `ls`&lt;br&gt;&lt;/br&gt;do&lt;br&gt;&lt;/br&gt;        NEWNAME=`echo $FILE |tr [A-Z] [a-z]`&lt;br&gt;&lt;/br&gt;        mv $FILE $NEWNAME&lt;br&gt;&lt;/br&gt;done                                                          &lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;   &lt;br /&gt;&lt;h4&gt;&lt;a name='pkg'&gt;How to create solaris pkg'd&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;read this good article.&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/creating_solaris_packages.html'&gt;creating solaris packages&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;             &lt;br /&gt;&lt;h4&gt;&lt;a name='throughput'&gt;Mb/Mhz rpm rule of thumb&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;A vague rule of thumb when looking at disk arrays is MB transfered is 10% of Mhz&lt;br&gt;&lt;/br&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br /&gt;for every 1000 rpm of disk you will get about 9 I/O's second therefore a 10,000rpm disk will have 90 I/O second&lt;br&gt;&lt;/br&gt;&lt;br /&gt;If these are in a stripe configuration of 5 working disks the the throughput &lt;br&gt;&lt;/br&gt;&lt;br /&gt;could be 400 I/O second&lt;br&gt;&lt;/br&gt;&lt;br /&gt;At the time of writing a fully populated D1000 could yeald up to 3000 I/O second&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt; &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;&lt;a name='processors'&gt;Online &amp;amp; Offline processors and what running on a processor&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;useful commnads are mpstat, psrinfo, psrset, pbind&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;            &lt;br /&gt;&lt;h4&gt;&lt;a name='domainrename'&gt;Rename an e10000 domain&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Take a look at this page to show how to remane a domain. The main thing&lt;br /&gt;to remember is to rename the domain on the ssp as well as the domain&lt;br /&gt;itself.&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/rename_e10000_domain.html'&gt;Renaming an E1000 Domain&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href='http://www.geocities.com/arndike/solaris.html#contents'&gt;Back to Contents&lt;/a&gt;&lt;br /&gt;&lt;hr size='5'&gt;&lt;/hr&gt;&lt;br /&gt;            &lt;br /&gt;&lt;br /&gt;&lt;script src='http://us.i1.yimg.com/us.yimg.com/i/mc/mc.js' language='JavaScript'&gt;&lt;/script&gt;&lt;script src='http://geocities.com/js_source/geov2.js' language='JavaScript'&gt;&lt;/script&gt;&lt;script language='javascript'&gt;geovisit();&lt;/script&gt;&lt;img border='0' src='http://visit.geocities.com/visit.gif?&amp;amp;r=http%3A//www.geocities.com/arndike/solaris.html%3F20079&amp;amp;b=Netscape%205.0%20%28Windows%3B%20en-US%29&amp;amp;s=1152x864&amp;amp;o=Win32&amp;amp;c=32&amp;amp;j=true&amp;amp;v=1.2'&gt;&lt;/img&gt;&lt;br /&gt;&lt;noscript&gt;&lt;img height='1' width='1' border='0' alt='setstats' src='http://visit.geocities.yahoo.com/visit.gif?us1178724993'&gt;&lt;/img&gt;&lt;/noscript&gt;&lt;br /&gt;&lt;img width='1' height='1' alt='1' src='http://geo.yahoo.com/serv?s=76001067&amp;amp;t=1178724993&amp;amp;f=us-w80'&gt;&lt;/img&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;p class='poweredbyperformancing'&gt;Powered by &lt;a href='http://scribefire.com/'&gt;ScribeFire&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-6218421631405491492?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/6218421631405491492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=6218421631405491492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/6218421631405491492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/6218421631405491492'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/05/unix-questions-and-answers.html' title='UNIX Questions and Answers'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-6527780786009503518</id><published>2007-05-09T08:43:00.001-07:00</published><updated>2007-05-09T08:43:35.993-07:00</updated><title type='text'>Unix Interview Questions???</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Linux admin interview questions&lt;/b&gt;&lt;br /&gt;			&lt;ol&gt;&lt;li&gt;How do you take a single line of input from the user in a shell script?&lt;/li&gt;&lt;li&gt;Write a script to convert all DOS style backslashes to UNIX style slashes in a list of files.&lt;/li&gt;&lt;li&gt;Write&lt;br /&gt;a regular expression (or sed script) to replace all occurrences of the&lt;br /&gt;letter ‘f’, followed by any number of characters, followed by the&lt;br /&gt;letter ‘a’, followed by one or more numeric characters, followed by the&lt;br /&gt;letter ‘n’, and replace what’s found with the string “UNIX”.&lt;/li&gt;&lt;li&gt;Write a script to list all the differences between two directories.&lt;/li&gt;&lt;li&gt;Write a program in any language you choose, to reverse a file.&lt;/li&gt;&lt;li&gt;What are the fields of the password file?&lt;/li&gt;&lt;li&gt;What does a plus at the beginning of a line in the password file signify?&lt;/li&gt;&lt;li&gt;Using the man pages, find the correct ioctl to send console output to an arbitrary pty.&lt;/li&gt;&lt;li&gt;What is an MX record?&lt;/li&gt;&lt;li&gt;What is the prom command on a Sun that shows the SCSI devices?&lt;/li&gt;&lt;li&gt;What is the factory default SCSI target for /dev/sd0?&lt;/li&gt;&lt;li&gt;Where is that value controlled?&lt;/li&gt;&lt;li&gt;What happens to a child process that dies and has no parent process to wait for it and what’s bad about this?&lt;/li&gt;&lt;li&gt;What’s wrong with sendmail? What would you fix?&lt;/li&gt;&lt;li&gt;What command do you run to check file system consistency?&lt;/li&gt;&lt;li&gt;What’s wrong with running shutdown on a network?&lt;/li&gt;&lt;li&gt;What can be wrong with setuid scripts?&lt;/li&gt;&lt;li&gt;What value does spawn return?&lt;/li&gt;&lt;li&gt;Write&lt;br /&gt;a script to send mail from three other machines on the network to root&lt;br /&gt;at the machine you’re on. Use a ‘here doc’, but include in the mail&lt;br /&gt;message the name of the machine the mail is sent from and the disk&lt;br /&gt;utilization statistics on each machine?&lt;/li&gt;&lt;li&gt;Why can’t root&lt;br /&gt;just cd to someone’s home directory and run a program called a.out&lt;br /&gt;sitting there by typing “a.out”, and why is this good?&lt;/li&gt;&lt;li&gt;What is the difference between UDP and TCP?&lt;/li&gt;&lt;li&gt;What is DNS?&lt;/li&gt;&lt;li&gt;What does nslookup do?&lt;/li&gt;&lt;li&gt;How do you create a swapfile?&lt;/li&gt;&lt;li&gt;How would you check the route table on a workstation/server?&lt;/li&gt;&lt;li&gt;How do you find which ypmaster you are bound to?&lt;/li&gt;&lt;li&gt;How do you fix a problem where a printer will cutoff anything over 1MB?&lt;/li&gt;&lt;li&gt;What is the largest file system size in solaris? SunOS?&lt;/li&gt;&lt;li&gt;What are the different RAID levels?&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Interview questions for Linux admin&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;			&lt;ol&gt;&lt;li&gt;Advantages/disadvantages of script vs compiled program.&lt;/li&gt;&lt;li&gt;Name a replacement for PHP/Perl/MySQL/Linux/Apache and show main differences.&lt;/li&gt;&lt;li&gt;Why have you choosen such a combination of products?&lt;/li&gt;&lt;li&gt;Differences between two last MySQL versions. Which one would you choose and when/why?&lt;/li&gt;&lt;li&gt;Main differences between Apache 1.x and 2.x. Why is 2.x not so popular? Which one would you choose and when/why?&lt;/li&gt;&lt;li&gt;Which Linux distros do you have experience with?&lt;/li&gt;&lt;li&gt;Which distro you prefer? Why?&lt;/li&gt;&lt;li&gt;Which tool would you use to update Debian / Slackware / RedHat / Mandrake / SuSE ?&lt;/li&gt;&lt;li&gt;You’re asked to write an Apache module. What would you do?&lt;/li&gt;&lt;li&gt;Which tool do you prefer for Apache log reports?&lt;/li&gt;&lt;li&gt;Your portfolio. (even a PHP guest book may work well)&lt;/li&gt;&lt;li&gt;What does ‘route’ command do?&lt;/li&gt;&lt;li&gt;Differences between ipchains and iptables.&lt;/li&gt;&lt;li&gt;What’s eth0, ppp0, wlan0, ttyS0, etc.&lt;/li&gt;&lt;li&gt;What are different directories in &lt;b&gt;/&lt;/b&gt; for?&lt;/li&gt;&lt;li&gt;Partitioning scheme for new webserver. Why?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br&gt;&lt;/br&gt;&lt;h2&gt;Unix/Linux programming interview questions&lt;/h2&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Question 1: What is the major advantage of a hash table? (Asked by Silicon Magic Corp. people) &lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;	&lt;p&gt;Answer:&lt;br /&gt;The major advantage of a hash table is its speed. Because the hash&lt;br /&gt;function is to take a range of key values and transform them into index&lt;br /&gt;values in such a way that the key values are distributed randomly&lt;br /&gt;across all the indices of a hash table.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Question 2: What are the techniques that you use to handle the collisions in hash tables?(Asked by Silicon Magic Corp. people)&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;Answer:&lt;br /&gt;We can use two major techniques to handle the collisions. They are open&lt;br /&gt;addressing and separate chaining. In open addressing, data items that&lt;br /&gt;hash to a full array cell are placed in another cell in the array. In&lt;br /&gt;separate chaining, each array element consist of a linked list. All&lt;br /&gt;data items hashing to a given array index are inserted in that list.&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;&lt;b&gt;Question 3: In Unix OS, what is the file server? (Asked by Silicon Magic Corp. people) &lt;/b&gt;&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;Answer: The file server is a machine that shares its disk storage and files with other machines on the network.&lt;/p&gt;&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	&lt;p&gt;&lt;b&gt;Question 4: What is NFS? What is its job?(Asked by Silicon Magic Corp. people) &lt;/b&gt;&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;Answer:&lt;br /&gt;NFS stands for Network File System. NFS enables filesystems physically&lt;br /&gt;residing on one computer system to be used by other computers in the&lt;br /&gt;network, appearing to users on the remote host as just another local&lt;br /&gt;disk.&lt;/p&gt;&lt;br /&gt;	&lt;br /&gt;	&lt;p&gt;&lt;b&gt;Question 5: What is CVS? List some useful CVS commands.(Asked by Silicon Magic Corp.people) &lt;/b&gt;&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;Anser:&lt;br /&gt;CVS is Concurrent Version System. It is the front end to the RCS&lt;br /&gt;revision control system which extends the notion of revision control&lt;br /&gt;from a collection of files in a single directory to a hierarchical&lt;br /&gt;collection of directories consisting of revision controlled files.&lt;br /&gt;These directories and files can be combined together to form a software&lt;br /&gt;release. &lt;br&gt;&lt;/br&gt;There are some useful commands that are being used very often. They are &lt;/p&gt;&lt;br /&gt;	&lt;p&gt;cvs checkout &lt;br&gt;&lt;/br&gt;cvs update &lt;br&gt;&lt;/br&gt;cvs add &lt;br&gt;&lt;/br&gt;cvs remove &lt;br&gt;&lt;/br&gt;cvs commit &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Unix/Linux administration interview questions&lt;/h2&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;What is LILO?&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;	&lt;p&gt;LILO&lt;br /&gt;stands for Linux boot loader. It will load the MBR, master boot record,&lt;br /&gt;into the memory, and tell the system which partition and hard drive to&lt;br /&gt;boot from.&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;&lt;b&gt;What is the main advantage of creating links to a file instead of copies of the file?&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;A:&lt;br /&gt;The main advantage is not really that it saves disk space (though it&lt;br /&gt;does that too) but, rather, that a change of permissions on the file is&lt;br /&gt;applied to all the link access points. The link will show permissions&lt;br /&gt;of lrwxrwxrwx but that is for the link itself and not the access to the&lt;br /&gt;file to which the link points. Thus if you want to change the&lt;br /&gt;permissions for a command, such as su, you only have to do it on the&lt;br /&gt;original. With copies you have to find all of the copies and change&lt;br /&gt;permission on each of the copies.&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;&lt;b&gt;Write a command to find all of the files which have been accessed within the last 30 days.&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;	&lt;blockquote&gt;&lt;p&gt;find / -type f -atime -30 &amp;amp;gt; December.files&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;	&lt;p&gt;This&lt;br /&gt;command will find all the files under root, which is ‘/’, with file&lt;br /&gt;type is file. ‘-atime -30′ will give all the files accessed less than&lt;br /&gt;30 days ago. And the output will put into a file call December.files.&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;&lt;b&gt;What is the most graceful way to get to run level single user mode?&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;A: The most graceful way is to use the command init s.&lt;br&gt;&lt;/br&gt;If you want to shut everything down before going to single user mode then do init 0 first and from the ok prompt do a boot -s.&lt;/p&gt;&lt;br /&gt;	&lt;p&gt;&lt;b&gt;What does the following command line produce? Explain each aspect of this line.&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;	&lt;blockquote&gt;&lt;p&gt;$ (date ; ps -ef | awk ‘{print $1}’ | sort | uniq | wc -l ) &amp;amp;gt;&amp;amp;gt; Activity.log &lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;	&lt;p&gt;A:&lt;br /&gt;First let’s dissect the line: The date gives the date and time as the&lt;br /&gt;first command of the line, this is followed by the a list of all&lt;br /&gt;running processes in long form with UIDs listed first, this is the ps&lt;br /&gt;-ef. These are fed into the awk which filters out all but the UIDs;&lt;br /&gt;these UIDs are piped into sort for no discernible reason and then onto&lt;br /&gt;uniq (now we see the reason for the sort - uniq only works on sorted&lt;br /&gt;data - if the list is A, B, A, then A, B, A will be the output of uniq,&lt;br /&gt;but if it’s A, A, B then A, B is the output) which produces only one&lt;br /&gt;copy of each UID.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;These UIDs are fed into wc -l which counts the lines - in this&lt;br /&gt;case the number of distinct UIDs running processes on the system.&lt;br /&gt;Finally the results of these two commands, the date and the wc -l, are&lt;br /&gt;appended to the file "Activity.log". Now to answer the question as to&lt;br /&gt;what this command line produces. This writes the date and time into the&lt;br /&gt;file Activity.log together with the number of distinct users who have&lt;br /&gt;processes running on the system at that time. If the file already&lt;br /&gt;exists, then these items are appended to the file, otherwise the file&lt;br /&gt;is created.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Solaris interview questions&lt;/h2&gt;&lt;br /&gt;			&lt;ol&gt;&lt;li&gt;&lt;b&gt;List the files in current directory sorted by size ? -&lt;/b&gt; ls -l | grep ^- | sort -nr &lt;/li&gt;&lt;li&gt;&lt;b&gt;List the hidden files in current directory ? - &lt;/b&gt;ls -a1 | grep "^\."&lt;/li&gt;&lt;li&gt;&lt;b&gt;Delete blank lines in a file ? - &lt;/b&gt;cat sample.txt | grep -v ‘^$’ &amp;amp;gt; new_sample.txt&lt;/li&gt;&lt;li&gt;&lt;b&gt;Search for a sample string in particular files ? - &lt;/b&gt;grep .Debug. *.confHere &lt;b&gt;grep&lt;/b&gt; uses the string .Debug. to search in all files with extension..conf. under current directory.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the last newly appending lines of a file during appendingdata to the same file by some processes ? - &lt;/b&gt;tail .f Debug.logHere &lt;b&gt;tail&lt;/b&gt; shows the newly appended data into Debug.log by some processes/user.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the Disk Usage of file sizes under each directory in currentDirectory ? - &lt;/b&gt;du -k * | sort .nr (or) du .k . | sort -nr&lt;/li&gt;&lt;li&gt;&lt;b&gt;Change to a directory, which is having very long name ? - &lt;/b&gt;cd CDMA_3X_GEN*Here original directory name is . .CDMA_3X_GENERATION_DATA..&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the all files recursively with path under current directory ? - &lt;/b&gt;find . -depth -print&lt;/li&gt;&lt;li&gt;&lt;b&gt;Set the Display automatically for the current new user ? - &lt;/b&gt;export&lt;br /&gt;DISPLAY=`eval ‘who am i | cut -d"(" -f2 | cut -d")" -f1′`Here in above&lt;br /&gt;command, see single quote, double quote, grave ascent is used. Observe&lt;br /&gt;carefully.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the processes, which are running under yourusername ? - &lt;/b&gt;ps .aef | grep MaheshvjHere, Maheshvj is the username.&lt;/li&gt;&lt;li&gt;&lt;b&gt;List some Hot Keys for bash shell ? - Ctrl+l . &lt;/b&gt;Clears the Screen.&lt;b&gt; Ctrl+r . &lt;/b&gt;Does a search in previously given commands in shell.&lt;b&gt; Ctrl+u &lt;/b&gt;- Clears the typing before the hotkey.&lt;b&gt; Ctrl+a &lt;/b&gt;. Places cursor at the beginning of the command at shell.&lt;b&gt; Ctrl+e &lt;/b&gt;. Places cursor at the end of the command at shell.&lt;b&gt; Ctrl+d&lt;/b&gt; . Kills the shell.&lt;b&gt; Ctrl+z . &lt;/b&gt;Places the currently running process into background.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&amp;amp;nbsp;Display the files in the directory by file size ? - &lt;/b&gt;ls .ltr | sort .nr .k 5&lt;/li&gt;&lt;li&gt;&lt;b&gt;How to save man pages to a file ? - &lt;/b&gt;man &amp;amp;lt;command&amp;amp;gt; | col .b &amp;amp;gt; &amp;amp;lt;output-file&amp;amp;gt;Example : man top | col .b &amp;amp;gt; top_help.txt&lt;/li&gt;&lt;li&gt;&lt;b&gt;How to know the date &amp;amp; time for . when script is executed ? - &lt;/b&gt;Add&lt;br /&gt;the following script line in shell script.eval echo "Script is executed&lt;br /&gt;at `date`" &amp;amp;gt;&amp;amp;gt; timeinfo.infHere, .timeinfo.inf. contains date&lt;br /&gt;&amp;amp; time details ie., when script is executed and history related to&lt;br /&gt;execution.&lt;/li&gt;&lt;li&gt;&lt;b&gt;How do you find out drive statistics ? - &lt;/b&gt;iostat -E&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display disk usage in Kilobytes ? - &lt;/b&gt;du -k&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display top ten largest files/directories ? - &lt;/b&gt;du -sk * | sort -nr | head&lt;/li&gt;&lt;li&gt;&lt;b&gt;How much space is used for users in kilobytes ? - &lt;/b&gt;quot -af&lt;/li&gt;&lt;li&gt;&lt;b&gt;How to create null file ? - &lt;/b&gt;cat /dev/null &amp;amp;gt; filename1&lt;/li&gt;&lt;li&gt;&lt;b&gt;Access common commands quicker ? - &lt;/b&gt;ps -ef | grep -i $@&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the page size of memory ? - &lt;/b&gt;pagesize -a&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display Ethernet Address arp table ? - &lt;/b&gt;arp -a&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the no.of active established connections to localhost ? - &lt;/b&gt;netstat -a | grep EST&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the state of interfaces used for TCP/IP traffice ? - &lt;/b&gt;netstat -i&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the parent/child tree of a process ? - &lt;/b&gt;ptree &amp;amp;lt;pid&amp;amp;gt; &lt;i&gt;Example:&lt;/i&gt; ptree 1267&lt;/li&gt;&lt;li&gt;&lt;b&gt;Show the working directory of a process ? - &lt;/b&gt;pwdx &amp;amp;lt;pid&amp;amp;gt; &lt;i&gt;Example:&lt;/i&gt; pwdx 1267&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the processes current open files ? - &lt;/b&gt;pfiles &amp;amp;lt;pid&amp;amp;gt; &lt;i&gt;Example:&lt;/i&gt; pfiles 1267&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the inter-process communication facility status ? - &lt;/b&gt;ipcs&lt;/li&gt;&lt;li&gt;&lt;b&gt;Display the top most process utilizing most CPU ? - &lt;/b&gt;top .b 1&lt;/li&gt;&lt;li&gt;&lt;b&gt;Alternative for top command ? - &lt;/b&gt;prstat -a&lt;/li&gt;&lt;/ol&gt;&lt;a href='http://www.google.com/reader/view/'&gt;&lt;br&gt;&lt;/br&gt;&lt;/a&gt;&lt;br&gt;&lt;/br&gt;&lt;br&gt;&lt;/br&gt;&lt;p class='poweredbyperformancing'&gt;Powered by &lt;a href='http://scribefire.com/'&gt;ScribeFire&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-6527780786009503518?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/6527780786009503518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=6527780786009503518' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/6527780786009503518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/6527780786009503518'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/05/unix-interview-questions.html' title='Unix Interview Questions???'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-7207890307523219379</id><published>2007-05-09T07:02:00.001-07:00</published><updated>2007-05-09T07:02:59.152-07:00</updated><title type='text'>Blogging using Livewriter.</title><content type='html'>&lt;p&gt;Indeed after doing a search in google i am able to find out a blogging tool for windows thats live write. Well, it is a product of microsoft and it is good. As i haven't tested it a lot. but i am finding it usual till now. After downloading it from &lt;a href="http://g.msn.com/8SEENUS030000TBR/WriterMSI"&gt;here&lt;/a&gt; and some teawking in my proxy settings i am able to configure it to work on my office's XP machine.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-7207890307523219379?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/7207890307523219379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=7207890307523219379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/7207890307523219379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/7207890307523219379'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/05/blogging-using-livewriter.html' title='Blogging using Livewriter.'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-2742366188931720444</id><published>2007-05-07T11:54:00.000-07:00</published><updated>2007-05-07T12:01:06.769-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><title type='text'>Converting delimited text to Excel</title><content type='html'>&lt;p class="subtitle"&gt; Description                                                                                &lt;a href="http://www.google.co.in/search?hl=en&amp;q=text+to+excel+perl&amp;amp;btnG=Google+Search&amp;meta="&gt;Google Results&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;   &lt;p&gt;   Non-technical people need to be able to work with data. They usually end up reaching for Excel or Access because we live in a malevolent Universe. &lt;/p&gt;  &lt;p&gt; Fortunately for the Perl kids there are a couple excellent modules already done for you by our friends John McNamara (&lt;a href="http://search.cpan.org/search?dist=Spreadsheet-WriteExcel"&gt;Spreadsheet::WriteExcel&lt;/a&gt;) and Kawai Takanori (&lt;a href="http://search.cpan.org/search?dist=Spreadsheet-ParseExcel"&gt;Spreadsheet::ParseExcel&lt;/a&gt;). Here is an example of how you can turn Excel into delimited plain text: &lt;a href="http://sedition.com/perl/excel-to-delim.html"&gt;converting Excel to text&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt; Below is a very useful and fairly generic subroutine that can take all kinds of delimited files and turn them into straightforward Excel files.  &lt;/p&gt;         &lt;div class="subtitle"&gt; Code &lt;/div&gt;  &lt;pre class="code" style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sub&lt;/span&gt; &lt;span style="color: rgb(153, 136, 0);"&gt;text_to_excel&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;# %args should look something like...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;# ( delimiter =&gt; "\t",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;#   recordsep =&gt; "\n",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;#        file =&gt; "/path/to/file.txt"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;#        name =&gt; "Sheet Title" )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;# the only required args are delimiter and file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;# we require instead of use to save on if we never end up using it in&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;# a larger script or CGI, but use statements at the top of the script&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;# are clearer for other programmers to follow.&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;require&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;Spreadsheet::WriteExcel&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;require&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;IO::Scalar&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(136, 0, 255);"&gt;%args&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;@_&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$delimiter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$recordsep&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$file&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$name&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(136, 0, 255);"&gt;@args&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;qw(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt; delimiter recordsep file name &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 136, 0);"&gt;$delimiter&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;and&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$file&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;or&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(51, 0, 0);"&gt;die&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;Must provide at least delimiter and file as args to&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;delimited_text_to_excel().&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 0, 0);"&gt;-e&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$file&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;or&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(51, 0, 0);"&gt;die&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;There is no file: &lt;span style="color: rgb(0, 136, 0);"&gt;$file&lt;/span&gt;&lt;span style="color: rgb(136, 0, 0);"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 0, 0);"&gt;open&lt;/span&gt; &lt;span style="color: rgb(153, 51, 153);"&gt;F&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$file&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;or&lt;/span&gt; &lt;span style="color: rgb(153, 136, 0);"&gt;croak&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;Can't open &lt;span style="color: rgb(0, 136, 0);"&gt;$file&lt;/span&gt;: &lt;span style="color: rgb(0, 136, 0);"&gt;$!&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 136, 0);"&gt;$/&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$recordsep&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;&lt;span style="color: rgb(136, 0, 0);"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;@data&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;F&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 0, 0);"&gt;close&lt;/span&gt; &lt;span style="color: rgb(153, 51, 153);"&gt;F&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 136, 0);"&gt;$/&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;&lt;span style="color: rgb(136, 0, 0);"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$xls_str&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 0, 0);"&gt;tie&lt;/span&gt; &lt;span style=""&gt;*XLS&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;IO::Scalar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;\&lt;/span&gt;&lt;span style="color: rgb(0, 136, 0);"&gt;$xls_str&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$workbook&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(153, 51, 153);"&gt;Spreadsheet::WriteExcel&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 136, 0);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\&lt;/span&gt;&lt;span style=""&gt;*XLS&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$worksheet&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$workbook&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 136, 0);"&gt;addworksheet&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 136, 0);"&gt;$name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;Page 1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;for&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$row&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$row&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;@data&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 17);"&gt;chomp&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;@line&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(51, 0, 0);"&gt;split&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;&lt;span style="color: rgb(0, 136, 0);"&gt;$delimiter&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;$data&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 136, 0);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;for&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$col&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(255, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$col&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;&lt;/span&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;@line&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$col&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: rgb(0, 136, 0);"&gt;$worksheet&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 136, 0);"&gt;write_string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 136, 0);"&gt;$row&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$col&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt; &lt;span style="color: rgb(255, 119, 0);"&gt;$line&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 136, 0);"&gt;$col&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 136, 0);"&gt;$workbook&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 136, 0);"&gt;close&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 0, 0);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$xls_str&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/pre&gt;        &lt;div class="subtitle"&gt; Usage &lt;/div&gt;  &lt;pre class="code" style="background-color: rgb(236, 209, 209);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;use&lt;/span&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;MIME::Lite&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;  &lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;# we want to mail our excel sheet&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$file&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;/data/profit_forcast&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$name&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;2006 Profit Forcast&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$xls_data&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(153, 136, 0);"&gt;text_to_excel&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 0, 170);"&gt;file&lt;/span&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$file&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;                            &lt;span style="color: rgb(0, 0, 170);"&gt;delimiter&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;&lt;span style="color: rgb(136, 0, 0);"&gt;\t&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;                            &lt;span style="color: rgb(0, 0, 170);"&gt;name&lt;/span&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$name&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;# we've done all the work. $xls_data IS the excel file in a raw&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;# format. we could do anything with it now, including writing it to a&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 153); font-style: italic;"&gt;# file, but let's send it via email.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;my&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$msg&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(153, 51, 153);"&gt;MIME::Lite&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 136, 0);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;From&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;traitor@sedition.com&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: rgb(0, 0, 170);"&gt;To&lt;/span&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;tuna@fish.net&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: rgb(0, 0, 170);"&gt;Cc&lt;/span&gt;      &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;traitor@sedition.com&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: rgb(0, 0, 170);"&gt;Subject&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;                        &lt;span style="color: rgb(0, 0, 170);"&gt;Type&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;multipart/mixed&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;or&lt;/span&gt; &lt;span style="color: rgb(51, 0, 0);"&gt;die&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;PROBLEM opening MIME object: &lt;span style="color: rgb(0, 136, 0);"&gt;$!&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 136, 0);"&gt;$msg&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 136, 0);"&gt;attach&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;Type&lt;/span&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;application/vnd.ms-excel&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 0, 170);"&gt;Disposition&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;attachment&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 0, 170);"&gt;Data&lt;/span&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$xls_data&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: rgb(0, 0, 170);"&gt;Filename&lt;/span&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;=&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 136, 0);"&gt;$name&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;.xls&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;or&lt;/span&gt; &lt;span style="color: rgb(51, 0, 0);"&gt;die&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;PROBLEM attaching Excel file: &lt;span style="color: rgb(0, 136, 0);"&gt;$!&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 136, 0);"&gt;$msg&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 136, 0);"&gt;send&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;or&lt;/span&gt; &lt;span style="color: rgb(51, 0, 0);"&gt;die&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;PROBLEM sending MIME mail: &lt;span style="color: rgb(0, 136, 0);"&gt;$!&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 0);"&gt;print&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 170);"&gt;Sent &lt;span style="color: rgb(0, 136, 0);"&gt;$name&lt;/span&gt;!&lt;span style="color: rgb(136, 0, 0);"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/pre&gt;    &lt;p class="subtitle"&gt; Discussion &lt;/p&gt;   &lt;p&gt;   Anyone who’s dealt with delimited files before knows that this approach is missing a way to balance delimiters. Eg: If your field delimiter is a tab and your record delimiter is a newline and one of the text fields has a tab or a return character in it, it will wreck the results.   &lt;/p&gt;  &lt;p&gt;  To work with this, I often use the NULL character (”\0”) as a field  delimiter and a double (”\0\0”) as a record delimiter. It will never  appear in regular files so you don’t have to resort to &lt;a href="http://search.cpan.org/dist/Text-Balanced/"&gt;Text::Balanced&lt;/a&gt;  or something to ensure your data integrity. &lt;/p&gt;  &lt;p&gt;  If you will ever have empty fields that cause the field delimiter to  double up, you’ll have to get crafty and do something like  “\0”.‘_RS_’.”\0” for the record separator.  &lt;/p&gt;           &lt;pre class="code" style="background-color: rgb(236, 209, 209);"&gt;$xls_data = text_to_excel( file      =&gt; '/path/to/file.txt',&lt;br /&gt;                         delimiter =&gt; "\0",&lt;br /&gt;                         recordsep =&gt; "\0\0",&lt;br /&gt;                         name      =&gt; 'NULL delimited file' );&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-2742366188931720444?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/2742366188931720444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=2742366188931720444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/2742366188931720444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/2742366188931720444'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/05/converting-delimited-text-to-excel.html' title='Converting delimited text to Excel'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-4343515626322984154</id><published>2007-04-24T23:25:00.000-07:00</published><updated>2007-05-04T13:07:05.329-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='Commands'/><title type='text'>Commands.txt</title><content type='html'>solaris commands&lt;br /&gt;&lt;br /&gt;wipro-bby&lt;br /&gt;wiprobby&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. /usr/bin/uname - display current OS name, versin, Architecture&lt;br /&gt;&lt;br /&gt;2. /usr/bin/uptime - Display how long the system has been up&lt;br /&gt;&lt;br /&gt;3. /usr/bin/prtconf - Displays out detailed hardware info.&lt;br /&gt;&lt;br /&gt;4. /usr/bin/prstat - Display active process statistics with the top process taking the most resource.&lt;br /&gt;&lt;br /&gt;5. /usr/platform/sun4u/sbin/prtdiag - Displays very detailes hardware info such as CPU speed, CPU chache and on what slots memory chips is installed.&lt;br /&gt;&lt;br /&gt;6. /usr/bin/showrev - displays machine and software version info.&lt;br /&gt;&lt;br /&gt;7. /usr/bin/w - display info on currently logged on users.&lt;br /&gt;&lt;br /&gt;8. Adding users -&lt;br /&gt;#useradd -d /export/home/username -m -s /bin/ksh&lt;br /&gt;the -m option tells the useradd command to automatically create the home directory.&lt;br /&gt;NOte: do not store user directory in /home as this directory is used by solaris automounter. the automountwer gives the user to login to many machines and automatically ahve their home directories mounted on that machines /home area.&lt;br /&gt;&lt;br /&gt;9. to delete users. - /usr/bin/userdel&lt;br /&gt;for eg. userdel -r - will delete the users home directory as well.&lt;br /&gt;&lt;br /&gt;10. psrinfo -v - processor info.&lt;br /&gt;&lt;br /&gt;11. netstat -rn - show the routing table.&lt;br /&gt;&lt;br /&gt;12. ifconfig -a - show the network iface info.&lt;br /&gt;&lt;br /&gt;13. explorer output&lt;br /&gt;/opt/SUNWexplo/bin/explorer - it is an executable file used to generate the explorer output&lt;br /&gt;/opt/SUNWexplo/etc/ - directory contains the explorer tar files.&lt;br /&gt;&lt;br /&gt;14. passwd -sa --- for checking all system users password.&lt;br /&gt;&lt;br /&gt;Network Configuration in Solaris.&lt;br /&gt;1. to set the machine's name - /etc/nodename&lt;br /&gt;&lt;br /&gt;2. using DNS edit: /etc/nsswitch.conf - look for line that starts with "hosts:"&lt;br /&gt;                                       add "dns" to the end of the line.&lt;br /&gt;you can add the "dns" entry to the very beginning of the line, which changes the order in which solaris will do the name lookups. for eg. if you have "nis" before "dns" it will check in nis database first and try to resolve it from there and if you have files before dns it will look in the /etc/hosts files before it look in dns.&lt;br /&gt;&lt;br /&gt;3. adding entries in /etc/resolv.conf&lt;br /&gt;file: /etc/resolv.conf&lt;br /&gt;search domainname.com&lt;br /&gt;domain domainname.com&lt;br /&gt;nameserver ns1&lt;br /&gt;nameserver ns2&lt;br /&gt;&lt;br /&gt;4. adding machines info in /etc/hosts file.&lt;br /&gt;file:/etc/hosts&lt;br /&gt;ipaddr hostame&lt;br /&gt;&lt;br /&gt;5. edit the following files.&lt;br /&gt;/etc/net/ticlts/hosts&lt;br /&gt;/etc/net/ticolts/hosts&lt;br /&gt;/etc/net/ticotsnord/hosts&lt;br /&gt;&lt;br /&gt;6. editing the interface name files.&lt;br /&gt;sun systems can have multiple network cards, and each of those cards answer to a different hostname you may also have to edit a file to assign the hostname to the main network card.. you may want a single server to respond to many hostnames. the main network interface is mainly "hme0".&lt;br /&gt;to edit interface: /etc/hostname-interface&lt;br /&gt;&lt;br /&gt;7. to edit netmask.&lt;br /&gt;/etc/inet/netmasks&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;###Exporting Display&lt;br /&gt;##logging on server A using VNC.&lt;br /&gt;1.ssh server B&lt;br /&gt;2.xhost server B&lt;br /&gt;3.export display server A:1.0&lt;br /&gt;&lt;br /&gt;##for automatic color schemes.&lt;br /&gt;ls --color=auto&lt;br /&gt;&lt;br /&gt;##for time styling&lt;br /&gt;ls --time-style=+%d-%m-%y\&amp;H%M&lt;br /&gt;&lt;br /&gt;##adding alias in .profile&lt;br /&gt;alias variable="alias name"&lt;br /&gt;here "alias name" refers to any command which can be used in conjugtion.&lt;br /&gt;&lt;br /&gt;##to show all the hidden files in one directory.&lt;br /&gt;ls -d .*&lt;br /&gt;&lt;br /&gt;##to remove empty lines using sed.&lt;br /&gt;sed `/^$/d'&lt;br /&gt;&lt;br /&gt;##password aging script in linux if chage is not working.&lt;br /&gt;chage -l usernaem - most appropriate condition.&lt;br /&gt;else&lt;br /&gt;login as root.&lt;br /&gt;grep the users in /etc/passwd file using:&lt;br /&gt;#cut -d: -f1 /etc/passwd&lt;br /&gt;#while read line do&lt;br /&gt;#chage -l $users | grep "password expires" and line&lt;br /&gt;#disply $users- your password will expire on&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###Configuring Network.&lt;br /&gt;##adding net up on command line.&lt;br /&gt;#ifconfig eth0 &lt;ip_address&gt; netmask &lt;netmask_address&gt; brodcast &lt;brocast_address&gt; up&lt;br /&gt;&lt;br /&gt;##adding the default gateway.&lt;br /&gt;#route add default gw &lt;ip_address&gt;&lt;br /&gt;&lt;br /&gt;##add the nameserver entries.&lt;br /&gt;file: /etc/resolv.conf&lt;br /&gt;&lt;br /&gt;#nmblookup -A &lt;samba_machine_address&gt; -d1&lt;br /&gt;#smblookup -LBC8 -I &lt;interface&gt; -U knopix % -w workcener name -d3&lt;br /&gt;&lt;br /&gt;AIX commands.&lt;br /&gt;#lscfg -vp | grep -p Cabinet --- to check the cabinet no. on IBM/AIX&lt;br /&gt;&lt;br /&gt;#lsdev -Cc Tape --- to list the tape devices.&lt;br /&gt;&lt;br /&gt;#rmdev -dl /dev/rmt0 --- to delete rmt0 device.&lt;br /&gt;&lt;br /&gt;#cfgmgr -v --- reread the system hardware components and if iut finds any new thing. it will configure it accordingly.&lt;br /&gt;&lt;br /&gt;#lsdev -Cc Tape --- configure the tape drive.&lt;br /&gt;&lt;br /&gt;#cfgmgr --- same as above&lt;br /&gt;&lt;br /&gt;#cat /etc/exclude.rootvg --- filesystems to exclude while taking complete system backup.&lt;br /&gt;&lt;br /&gt;#lsvg -l rootvg --- list the volumme group called as rootvg&lt;br /&gt;&lt;br /&gt;#smit mksysb --- the smit interface to take the system backup&lt;br /&gt;&lt;br /&gt;#tail smit.log --- tail the log files to see smit is working fine.&lt;br /&gt;&lt;br /&gt;#tctl -f /dev/rmt0 rewoffl -eject --- this will rewind the tape and will eject the tape device.&lt;br /&gt;&lt;br /&gt;#restore -tvf /dev/rmt0 --- to list the contents of the tape device&lt;br /&gt;&lt;br /&gt;#find ./log ./out -print | backup -ivf /dev/rmt0 | tee /tmp/log --- to take backup of some files from ./log and ./out directory on tape device rmt0 while logging and printing the output on the screen.&lt;br /&gt;&lt;br /&gt;#restore -xqdvf /dev/rmt0 --- restoring the complete backup on the harddisk directory. the command must be fired from the parent directory to avoid confusions in where to restore dir. name.&lt;br /&gt;&lt;br /&gt;########Grub.conf -- How it works&lt;br /&gt;####Manually loading through the bootloader.&lt;br /&gt;&lt;br /&gt;###This will boot the windows partition.&lt;br /&gt;rootnoverify (hd0,0)&lt;br /&gt;makeactive&lt;br /&gt;chainloader +1&lt;br /&gt;boot&lt;br /&gt;&lt;br /&gt;###booting linux fron /dev/hda3 device&lt;br /&gt;root (hd0,2)&lt;br /&gt;kernel /boot/vmlinuz root=/dev/hda3 -s&lt;br /&gt;boot&lt;br /&gt;initrd /boot/initrd&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;####SHUTTING DOWN ORACLE 9i&lt;br /&gt;&lt;br /&gt;1. ps -aef | grep pmon  -&gt; to check orcale instances running.&lt;br /&gt;2. sqlplus /as sysdba&lt;br /&gt;3. shutdown immediately&lt;br /&gt;4. exit&lt;br /&gt;5. ps -aef | grep ora&lt;br /&gt;6. ps -aef | grep tltns&lt;br /&gt;10. kill -9 ora9ibrn&lt;br /&gt;&lt;br /&gt;### copies a single 1024 block from /dev/zero(a continuous stream of zero bytes) to the file new file.&lt;br /&gt;dd if=/dev/zero of=new_file bs=1024 count=1&lt;br /&gt;&lt;br /&gt;&lt;/interface&gt;&lt;/samba_machine_address&gt;&lt;/ip_address&gt;&lt;/brocast_address&gt;&lt;/netmask_address&gt;&lt;/ip_address&gt;iostat -En       will show the devices like c0t0d0.&lt;br /&gt;product :- the last line gives the size of the disk&lt;br /&gt;mount -F hsfs /dev/dsk/c0t0d0s0 /mnt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To see all of the slices on all of the disks the easiest thing is:&lt;br /&gt;prtvtoc /dev/rdsk/*s2&lt;br /&gt;To see all disks do this:&lt;br /&gt;format &lt; /dev/null chmod 550 /usr/lib/methods/cfgidecdrom mount -v cdrfs -o ro /devcd0 /cdrom smit cdrfs /usr/local/bin/scp locator -n locator -f useradd -d /para{home dir} -m -u 101 -g 501 paramatrix{user name} mail.debug /var/spool/mqueue/log Put this entry in /etc/syslog.conf DR.hostname.com ---put this entry in /etc/sendmail.cf fuser -km /media/cdrom [kill the process related to cdrom in aix.] df -k | awk '{print $4}' df -k | grep -v none | awk '{print $5}' | head -8 ; df -k | awk '{print $4}' | grep % df -k | awk '{print $5}' smitty tcpip smitty installp &gt;/dev/null 2&gt;&amp;amp;1 redirecting the cron log to /dev/null&lt;br /&gt;hwclock --systohc    sync  date with hwclock&lt;br /&gt;&lt;br /&gt;df -g  |awk '{print $1}'&lt;br /&gt;df -g  |awk '{print $7}'&lt;br /&gt;df -g  |awk '{print $4}'&lt;br /&gt;&lt;br /&gt;To Change the username and home permission of a  user&lt;br /&gt;groupmod -n sysadmin santosh&lt;br /&gt;usermod -d /home/sysadmin -m -g sysadmin -l sysadmin santosh&lt;br /&gt;&lt;br /&gt;vncserver -kill :1&lt;br /&gt;&lt;br /&gt;psrinfo will give number of cpus in Sun Solaris&lt;br /&gt;&lt;br /&gt;OGL Backup&lt;br /&gt;cd /oraapps/oracle/prodcomn/admin&lt;br /&gt;&lt;br /&gt;# find ./out ./log print | backup ivf /dev/rmtn&lt;br /&gt;&lt;br /&gt;pscp.exe -pw 'password'  "local machine path" user@host:/path/to/home/&lt;br /&gt;&lt;br /&gt;df -g refresh&lt;br /&gt;while :^Jdo^Jdf -g /kcf1dr /kcfdrvg^Jsleep 2^Jclear^Jdone&lt;br /&gt;&lt;br /&gt;stopping one spd device&lt;br /&gt;setsp -T -l3&lt;br /&gt;&lt;br /&gt;3 is SPD number.&lt;br /&gt;&lt;br /&gt;TIP&lt;br /&gt;tip -9600 /dev/ttya&lt;br /&gt;tip -9600 /dev/ttyb&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;changing users unsuccessful login attempt using sudo&lt;br /&gt;sudo chsec -f /etc/security/lastlog -s username -a unsuccessful_login_count=0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;mount -t ext3 -o acl &lt;device-name&gt; &lt;partition&gt;&lt;br /&gt;&lt;br /&gt;give rwx privileges to a user which does not belong to the group&lt;br /&gt;setfacl -m u:prod:rwx test&lt;br /&gt;checked the privileges using&lt;br /&gt;&lt;br /&gt;getfacl -a test&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;opensssl rand -base64 6&lt;br /&gt;----------------------------------------------------------------------------&lt;br /&gt;Restoration of backup&lt;br /&gt;# restore -xdvgf /dev/rmtn&lt;br /&gt;n-&gt; no. of the tape drive attached.&lt;br /&gt;&lt;br /&gt;To rewind and ejject the tape&lt;br /&gt;# tctl -f /dev/rmtn rewoffl&lt;br /&gt;&lt;br /&gt;To list the contents of the tape drive&lt;br /&gt;# restore -Tl -vf /dev/rmt0&lt;br /&gt;&lt;br /&gt;To check user account status like locked, unlocked and when the password expires etc.. use&lt;br /&gt;on&lt;br /&gt;AIX:&lt;br /&gt;chuser&lt;br /&gt;&lt;br /&gt;Solaris&lt;br /&gt;passwd -s username&lt;br /&gt;&lt;br /&gt;Linux&lt;br /&gt;Chage -l username&lt;br /&gt;&lt;/partition&gt;&lt;/device-name&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-4343515626322984154?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/4343515626322984154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=4343515626322984154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/4343515626322984154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/4343515626322984154'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/04/commandstxt.html' title='Commands.txt'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-1669622052595285327</id><published>2007-04-18T02:59:00.000-07:00</published><updated>2007-04-18T03:01:55.916-07:00</updated><title type='text'>How to turn on rsh and rlogin on RedHat Enterprise Linux (RHEL 2.1/ 3.0)</title><content type='html'>Enable them:&lt;br /&gt;&lt;br /&gt;Turn on these three using chkconfig on both the nodes: rexec, rsh and rlogin.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# chkconfig rexec on&lt;br /&gt;# chkconfig rsh on&lt;br /&gt;# chkconfig rlogin on&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;xinetd&lt;br /&gt;&lt;br /&gt;Restart xinetd to be sure.&lt;br /&gt;&lt;br /&gt;# service xinetd restart&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.rhosts&lt;br /&gt;&lt;br /&gt;On hostA's root home directory (usually /root), create a .rhosts file, which has hostB in it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# cat .rhosts&lt;br /&gt;hostB&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Similarly, create a .rhosts on hostB's root home directory which has hostA in it.&lt;br /&gt;&lt;br /&gt;# cat .rhosts&lt;br /&gt;hostA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;hosts.allow&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, edit /etc/hosts.allow on hostA:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# hosts.allow   This file describes the names of the hosts which are&lt;br /&gt;#               allowed to use the local INET services, as decided&lt;br /&gt;#               by the '/usr/sbin/tcpd' server.&lt;br /&gt;#&lt;br /&gt;ALL : hostB&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Edit /etc/hosts.allow on hostB:&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# hosts.allow   This file describes the names of the hosts which are&lt;br /&gt;#               allowed to use the local INET services, as decided&lt;br /&gt;#               by the '/usr/sbin/tcpd' server.&lt;br /&gt;#&lt;br /&gt;ALL : hostA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;hosts.equiv&lt;br /&gt;&lt;br /&gt;Edit /etc/hosts.equiv on hostA to have&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# cat /etc/hosts.equiv&lt;br /&gt;hostB&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Edit /etc/hosts.equiv on hostB to have&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# cat /etc/hosts.equiv&lt;br /&gt;hostA&lt;br /&gt;&lt;br /&gt;/etc/securetty&lt;br /&gt;&lt;br /&gt;And finally, knock off /etc/securetty (rename it or worse, purge it) on both hostA and hostB&lt;br /&gt;&lt;br /&gt;Now you are good to go.&lt;br /&gt;&lt;br /&gt;Disclaimer: Use at your own risk. Don't flame me. It sure worked for me. Actual results may vary. Use ssh in place of rlogin/rsh/telnet and the like, as ssh is more secure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-1669622052595285327?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/1669622052595285327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=1669622052595285327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/1669622052595285327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/1669622052595285327'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/04/how-to-turn-on-rsh-and-rlogin-on-redhat.html' title='How to turn on rsh and rlogin on RedHat Enterprise Linux (RHEL 2.1/ 3.0)'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-8287610078775513031</id><published>2007-04-16T20:09:00.000-07:00</published><updated>2007-04-16T20:15:39.926-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Fail Login Configuration</title><content type='html'>1. Open the /etc/pam.d/system-auth file for editing.&lt;br /&gt;ensure that a backup done for the file which you are editing.&lt;br /&gt;&lt;br /&gt;   2. Add the following lines:&lt;br /&gt;&lt;br /&gt;      auth      required     pam_tally.so no_magic_root&lt;br /&gt;      account   required     pam_tally.so deny=2 no_magic_root&lt;br /&gt;&lt;br /&gt;here the value of deny implies how many login attempts should faillog wait before locking the account for login.&lt;br /&gt;&lt;br /&gt;   3. Save the file and exit.&lt;br /&gt;   4. Test the configuration by attempting to login as a normal user, but using a wrong password.&lt;br /&gt;   5. Verify the failed count increments by running the command:&lt;br /&gt;&lt;br /&gt;      faillog -u &lt;username&gt;&lt;br /&gt;   6. To disable faillog for one particular user faillog -m -1 -u username&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-8287610078775513031?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/8287610078775513031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=8287610078775513031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/8287610078775513031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/8287610078775513031'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/04/fail-login-configuration.html' title='Fail Login Configuration'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-9094899180663223869</id><published>2007-03-13T03:27:00.000-07:00</published><updated>2007-03-13T05:47:44.167-07:00</updated><title type='text'>ssh using keys.</title><content type='html'>Here i will try to demonstrate how to use ssh keys to login to machines without password.&lt;br /&gt;Since i did not got it to work with putty now. i will do it with two unix machines and will soon continue this post on to configure it with putty.&lt;br /&gt;&lt;br /&gt;1. Check the ssh-server installed on your machine or not. if not download the packages openssh-clients and openssh-server from the respective downloads site.&lt;br /&gt;&lt;br /&gt;2. create public and private keys using ssh-keygen&lt;br /&gt;&lt;br /&gt;user@home$ ssh-keygen -t dsa   ##this will create public and privatye keys.&lt;br /&gt;&lt;br /&gt;3. scp the public key to the remote host on which you want to gain the access without password.&lt;br /&gt;user@home$ scp .ssh/id_dsa.pub user@machineB:~/.ssh/authorized_keys ## from machine a to machine b.&lt;br /&gt;&lt;br /&gt;4. Now login from Machine A to Machine B and check. it will work without password.&lt;br /&gt;&lt;br /&gt;Points:&lt;br /&gt;1. you must login from the account where you have kept the private key. since, you try to login from a diferent account you private key wo0n't be there and that time you will be thrown to a password prompt.&lt;br /&gt;2. Check the permissions of the directory .ssh to be 700 and the permission of the authorized_keys files must be 600. or else it won't work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-9094899180663223869?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/9094899180663223869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=9094899180663223869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/9094899180663223869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/9094899180663223869'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/03/ssh-using-keys.html' title='ssh using keys.'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-5782822331774576926</id><published>2007-02-20T20:05:00.001-08:00</published><updated>2007-02-20T21:09:51.701-08:00</updated><title type='text'>The 10 Commands we never use.</title><content type='html'>&lt;p&gt;It takes years maybe decades to master the commands available to you at the Linux shell prompt. Here are 10 that you will have never heard of or used. They are in no particular order. My favorite is mkfifo.&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;&lt;a href="http://bashcurescancer.com/man/cmd/pgrep" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;pgrep&lt;/a&gt;, instead of: &lt;pre&gt;# ps -ef | egrep &amp;#39;^root &amp;#39; | awk &amp;#39;{print $2}&amp;#39;&lt;br&gt;1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt;5&lt;br&gt;20&lt;br&gt;21&lt;br&gt;38&lt;br&gt;39&lt;br&gt;...&lt;br&gt;&lt;/pre&gt;  &lt;p&gt;You can do this:&lt;/p&gt;  &lt;pre&gt;# pgrep -u root&lt;br&gt;1&lt;br&gt;2&lt;br&gt;3&lt;br&gt;4&lt;br&gt;5&lt;br&gt;20&lt;br&gt;21&lt;br&gt;38&lt;br&gt;39&lt;br&gt;...&lt;br&gt;&lt;/pre&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://bashcurescancer.com/man/cmd/pstree" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;pstree&lt;/a&gt;, list the processes in a tree format. This can be VERY useful when working with WebSphere or other heavy duty applications. &lt;pre&gt;# pstree&lt;br&gt;init-+-acpid&lt;br&gt;     |-atd&lt;br&gt;     |-crond&lt;br&gt;     |-cups-config-dae&lt;br&gt;     |-cupsd&lt;br&gt;     |-dbus-daemon-1&lt;br&gt;     |-dhclient&lt;br&gt;     |-events/0-+-aio/0&lt;br&gt;     |          |-kacpid&lt;br&gt;     |          |-kauditd &lt;br&gt;&lt;br&gt;     |          |-kblockd/0&lt;br&gt;     |          |-khelper&lt;br&gt;     |          |-kmirrord&lt;br&gt;     |          `-2*[pdflush]&lt;br&gt;     |-gpm&lt;br&gt;     |-hald&lt;br&gt;     |-khubd&lt;br&gt;     |-2*[kjournald]&lt;br&gt;     |-klogd&lt;br&gt;     |-kseriod &lt;br&gt;&lt;br&gt;     |-ksoftirqd/0&lt;br&gt;     |-kswapd0&lt;br&gt;     |-login---bash&lt;br&gt;     |-5*[mingetty]&lt;br&gt;     |-portmap&lt;br&gt;     |-rpc.idmapd&lt;br&gt;     |-rpc.statd&lt;br&gt;     |-2*[sendmail]&lt;br&gt;     |-smartd&lt;br&gt;     |-sshd---sshd---bash---pstree &lt;br&gt;&lt;br&gt;     |-syslogd&lt;br&gt;     |-udevd&lt;br&gt;     |-vsftpd&lt;br&gt;     |-xfs&lt;br&gt;     `-xinetd&lt;br&gt;&lt;/pre&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://bashcurescancer.com/man/cmd/bc" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;bc&lt;/a&gt; is an arbitrary precision calculator language. Which is great. I found it useful in that it can perform square root operations in shell scripts.  &lt;a href="http://bashcurescancer.com/man/cmd/expr" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;expr&lt;/a&gt; does not support square roots. &lt;pre&gt;# ./sqrt&lt;br&gt;Usage: sqrt number&lt;br&gt;# ./sqrt 64&lt;br&gt;8&lt;br&gt;# ./sqrt 132112&lt;br&gt;363&lt;br&gt;# ./sqrt 1321121321&lt;br&gt;36347&lt;br&gt;&lt;br&gt;&lt;/pre&gt;  &lt;p&gt;Here is the script:&lt;/p&gt;  &lt;pre&gt;# cat sqrt&lt;br&gt;#!/bin/bash&lt;br&gt;if [ $# -ne 1 ]&lt;br&gt;then&lt;br&gt;        echo &amp;#39;Usage: sqrt number&amp;#39;&lt;br&gt;        exit 1&lt;br&gt;else&lt;br&gt;        echo -e &amp;quot;sqrt($1)\nquit\n&amp;quot; | bc -q -i&lt;br&gt;fi&lt;br&gt;&lt;/pre&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://bashcurescancer.com/man/cmd/split" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;split&lt;/a&gt;, have a large file that you need to split into smaller chucks? A mysqldump maybe? split is your command. Below I split a 250MB file into 2 megabyte chunks all starting with the prefix LF_. &lt;pre&gt;# ls -lh largefile&lt;br&gt;-rw-r--r--  1 root root 251M Feb 19 10:27 largefile&lt;br&gt;# split -b 2m largefile LF_&lt;br&gt;# ls -lh LF_* | head -n 5&lt;br&gt;-rw-r--r--  1 root root 2.0M Feb 19 10:29 LF_aa&lt;br&gt;-rw-r--r--  1 root root 2.0M &lt;br&gt; Feb 19 10:29 LF_ab&lt;br&gt;-rw-r--r--  1 root root 2.0M Feb 19 10:29 LF_ac&lt;br&gt;-rw-r--r--  1 root root 2.0M Feb 19 10:29 LF_ad&lt;br&gt;-rw-r--r--  1 root root 2.0M Feb 19 10:29 LF_ae&lt;br&gt;# ls -lh LF_* | wc -l&lt;br&gt;126&lt;br&gt;&lt;/pre&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://bashcurescancer.com/man/cmd/nl" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;nl&lt;/a&gt; numbers lines. I had a script doing this for me for years until I found out about nl.  &lt;pre&gt;# head wireless.h&lt;br&gt;/*&lt;br&gt; * This file define a set of standard wireless extensions&lt;br&gt; *&lt;br&gt; * Version :    20      17.2.06&lt;br&gt; *&lt;br&gt; * Authors :    Jean Tourrilhes - HPL&lt;br&gt; * Copyright (c) 1997-2006 Jean Tourrilhes, All Rights Reserved. &lt;br&gt;&lt;br&gt; */&lt;br&gt;&lt;br&gt;#ifndef _LINUX_WIRELESS_H&lt;br&gt;# nl wireless.h | head&lt;br&gt;     1  /*&lt;br&gt;     2   * This file define a set of standard wireless extensions&lt;br&gt;     3   *&lt;br&gt;     4   * Version :    20      17.2.06&lt;br&gt;     5   * &lt;br&gt;      6   * Authors :    Jean Tourrilhes - HPL&lt;br&gt;     7   * Copyright (c) 1997-2006 Jean Tourrilhes, All Rights Reserved.&lt;br&gt;     8   */&lt;br&gt;&lt;br&gt;     9  #ifndef _LINUX_WIRELESS_H&lt;br&gt;&lt;/pre&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://bashcurescancer.com/man/cmd/mkfifo" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;mkfifo&lt;/a&gt; is the coolest one. Sure you know how to create a pipeline piping the output of grep to less or maybe even perl. But do you know how to make two commands communicate through a named pipe?  &lt;br&gt; &lt;br&gt;  &lt;p&gt;First let me create the pipe and start writing to it:&lt;/p&gt;  &lt;img alt="mkfifo pipe; tail file &amp;gt; pipe" title="Making the pipe and writing to it" src="http://bashcurescancer.com/media/10-linux-commands-youve-never-used/mkfifo-write-to-pipe.png" height="357" width="640"&gt;   &lt;p&gt;Then read from it:&lt;/p&gt;  &lt;img alt="cat pipe" title="Reading from the pipe" src="http://bashcurescancer.com/media/10-linux-commands-youve-never-used/read-from-pipe.png" height="360" width="642"&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href="http://bashcurescancer.com/man/cmd/ldd" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;ldd&lt;/a&gt;, want to know which Linux thread library java is linked to? &lt;pre&gt;# ldd /usr/java/jre1.5.0_11/bin/java&lt;br&gt;        libpthread.so.0 =&amp;gt; /lib/tls/libpthread.so.0 (0x00bd4000)&lt;br&gt;        libdl.so.2 =&amp;gt; /lib/libdl.so.2 (0x00b87000)&lt;br&gt;        libc.so.6 =&amp;gt; /lib/tls/libc.so.6 (0x00a5a000) &lt;br&gt;&lt;br&gt;        /lib/ld-linux.so.2 (0x00a3c000)&lt;br&gt;&lt;/pre&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://bashcurescancer.com/man/cmd/col" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;col&lt;/a&gt;, want to save man pages as plain text?  &lt;pre&gt;# PAGER=cat&lt;br&gt;# man less | col -b &amp;gt; less.txt&lt;br&gt;&lt;/pre&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://bashcurescancer.com/man/cmd/xmlwf" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;xmlwf&lt;/a&gt;, need to know if a XML document is well formed? (A configuration file maybe..) &lt;pre&gt;# curl -s &amp;#39;&lt;a href="http://bashcurescancer.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;http://bashcurescancer.com&lt;/a&gt;&amp;#39; &amp;gt; bcc.html&lt;br&gt;# xmlwf bcc.html&lt;br&gt;# perl -i -pe &amp;#39;s@&amp;lt;br/&amp;gt;@&amp;lt;br&amp;gt;@g&amp;#39;  bcc.html&lt;br&gt;# xmlwf bcc.html&lt;br&gt;bcc.html&lt;br&gt;:104:2: mismatched tag&lt;br&gt;&lt;/pre&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://bashcurescancer.com/man/cmd/lsof" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;lsof&lt;/a&gt; lists open files. You can do all kinds of cool things with this. Like find  which ports are open:  &lt;pre&gt;# lsof | grep TCP&lt;br&gt;portmap    2587   rpc    4u     IPv4       5544                 TCP *:sunrpc (LISTEN)&lt;br&gt;rpc.statd  2606  root    6u     IPv4       5585                 TCP *:668 (LISTEN)&lt;br&gt;sshd       2788  root    3u     IPv6       5991                 TCP *:ssh (LISTEN) &lt;br&gt;&lt;br&gt;sendmail   2843  root    4u     IPv4       6160                 TCP badhd:smtp (LISTEN)&lt;br&gt;vsftpd     9337  root    3u     IPv4      34949                 TCP *:ftp (LISTEN)&lt;br&gt;cupsd     16459  root    0u     IPv4      41061                 TCP badhd:ipp (LISTEN) &lt;br&gt;&lt;br&gt;sshd      16892  root    3u     IPv6      61003                 TCP badhd.mshome.net:ssh-&amp;gt;&lt;a href="http://kontiki.mshome.net:4661" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;kontiki.mshome.net:4661 &lt;/a&gt; (ESTABLISHED)&lt;br&gt;&lt;/pre&gt;  &lt;p&gt;Or find the number of open files a user has. Very important for running big applications like Oracle, DB2, or WebSphere:&lt;/p&gt;  &lt;pre&gt;# lsof | grep &amp;#39; root &amp;#39; | awk &amp;#39;{print $NF}&amp;#39; | sort | uniq | wc -l&lt;br&gt;179&lt;br&gt;&lt;/pre&gt; &lt;/li&gt;&lt;/ol&gt;  &lt;br clear="all"&gt;&lt;br&gt;-&lt;a href="http://om-prakash.blogspot.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-5782822331774576926?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/5782822331774576926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=5782822331774576926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/5782822331774576926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/5782822331774576926'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/02/10-commands-we-never-use.html' title='The 10 Commands we never use.'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-3620882219567395322</id><published>2007-02-16T04:31:00.000-08:00</published><updated>2007-02-16T04:32:45.236-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Bash Tips and Tricks</title><content type='html'>&lt;p&gt;Save a lot of typing with these handy bash features you won't find in an old-fashioned UNIX shell.&lt;/p&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x8573984" name="N0x850ca10.0x8573984"&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;bash, or the Bourne again shell, is the default shell in most Linux distributions. The popularity of the bash shell amongst Linux and UNIX users is no accident. It has many features to enhance user-friendliness and productivity. Unfortunately, you can't take advantage of those features unless you know they exist.&lt;/p&gt; &lt;p&gt;When I first started using Linux, the only bash feature I took advantage of was going back through the command history using the up arrow. I soon learned additional features by watching others and asking questions. In this article, I'd like to share some bash tricks I've learned over the years.&lt;/p&gt; &lt;p&gt;This article isn't meant to cover all of the features of the bash shell; that would require a book, and plenty of books are available that cover this topic, including &lt;span class="emphasis"&gt;&lt;i&gt;Learning the bash Shell&lt;/i&gt;&lt;/span&gt; from O'Reilly and Associates. Instead, this article is a summary of the bash tricks I use most often and would be lost without.&lt;/p&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x8573a8c" name="N0x850ca10.0x8573a8c"&gt;&lt;/a&gt; Brace Expansion&lt;/h2&gt; &lt;p&gt;My favorite bash trick definitely is brace expansion. Brace expansion takes a list of strings separated by commas and expands those strings into separate arguments for you. The list is enclosed by braces, the symbols { and }, and there should be no spaces around the commas. For example:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ echo {one,two,red,blue}&lt;br /&gt;one two red blue&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;Using brace expansion as illustrated in this simple example doesn't offer too much to the user. In fact, the above example requires typing two more characters than simply typing:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;echo one two red blue&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x8573b94" name="N0x850ca10.0x8573b94"&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;which produces the same result. However, brace expansion becomes quite useful when the brace-enclosed list occurs immediately before, after or inside another string:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ echo {one,two,red,blue}fish&lt;br /&gt;onefish twofish redfish bluefish&lt;br /&gt;$ echo fish{one,two,red,blue}&lt;br /&gt;fishone fishtwo fishred fishblue&lt;br /&gt;$ echo fi{one,two,red,blue}sh&lt;br /&gt;fionesh fitwosh firedsh fibluesh&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;Notice that there are no spaces inside the brackets or between the brackets and the adjoining strings. If you include spaces, it breaks things:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ echo {one, two, red, blue }fish&lt;br /&gt;{one, two, red, blue }fish&lt;br /&gt;$ echo "{one,two,red,blue} fish"&lt;br /&gt;{one,two,red,blue} fish&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;However, you can use spaces if they're enclosed in quotes outside the braces or within an item in the comma-separated list:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ echo {"one ","two ","red ","blue "}fish&lt;br /&gt;one fish two fish red fish blue fish&lt;br /&gt;$ echo {one,two,red,blue}" fish"&lt;br /&gt;one fish two fish red fish blue fish&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;You also can nest braces, but you must use some caution here too:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ echo {{1,2,3},1,2,3}&lt;br /&gt;1 2 3 1 2 3&lt;br /&gt;$ echo {{1,2,3}1,2,3}&lt;br /&gt;11 21 31 2 3&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;Now, after all these examples, you might be thinking to yourself, "Gee, those are great parlor tricks, but why should I care about brace expansion?"&lt;/p&gt; &lt;p&gt;Brace expansion becomes useful when you need to make a backup of a file. This is why it's my favorite shell trick. I use it almost every day when I need to make a backup of a config file before changing it. For example, if I'm making a change to my Apache configuration, I can do the following and save some typing:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ cp /etc/httpd/conf/httpd.conf{,.bak}&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;Notice that there is no character between the opening brace and the first comma. It's perfectly acceptable to do this and is useful when adding characters to an existing filename or when one argument is a substring of the other. Then, if I need to see what changes I made later in the day, I use the diff command and reverse the order of the strings inside the braces:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ diff /etc/httpd/conf/httpd.conf{.bak,}&lt;br /&gt;1050a1051&lt;br /&gt;&gt; # I added this comment earlier&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x8573e54" name="N0x850ca10.0x8573e54"&gt;&lt;/a&gt; Command Substitution&lt;/h2&gt; &lt;p&gt;Another bash trick I like to use is command substitution. To use command substitution, enclose any command that generates output to standard output inside parentheses and precede the opening parenthesis with a dollar sign, &lt;tt&gt;$(command)&lt;/tt&gt;. Command substitution is useful when assigning a value to a variable. This is typical in shell scripts, where a common operation is to assign the date or time to a variable. It also is handy for using the output of one command as an argument to another command. If you want to assign the date to a variable, you can do this:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ date +%d-%b-%Y&lt;br /&gt;12-Mar-2004&lt;br /&gt;$ today=$(date +%d-%b-%Y)&lt;br /&gt;$ echo $today&lt;br /&gt;12-Mar-2004&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;I often use command substitution to get information about several RPM packages at once. If I want a listing of all the files from all the RPM packages that have httpd in the name, I simply execute the following:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ rpm -ql $(rpm -qa | grep httpd)&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x8573f88" name="N0x850ca10.0x8573f88"&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;The inner command, &lt;tt&gt;rpm -qa | grep httpd&lt;/tt&gt;, lists all the packages that have httpd in the name. The outer command, &lt;tt&gt;rpm -ql&lt;/tt&gt;, lists all the files in each package.&lt;/p&gt; &lt;p&gt;Now, those of you who have experience with the Bourne shell might point out that you could perform command substitution by surrounding a command with back quotes, also called back-ticks. Using Bourne-style command substitution, the date assignment from above becomes:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;today2=`date +%d-%b-%Y`&lt;br /&gt;$ echo $today2&lt;br /&gt;12-Mar-2004&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;There are two important advantages to using the newer bash-style syntax for command substitution. First, it can be nested more easily. Because the opening and closing symbols are different, the inner symbols don't need to be escaped with back slashes. Second, it is easier to read, especially when nested.&lt;/p&gt; &lt;p&gt;Even on Linux, where bash is standard, you still encounter shell scripts that use the older, Bourne-style syntax. This is done to provide portability to various flavors of UNIX that do not always have bash available but do have the Bourne shell. bash is backward-compatible with the Bourne shell, so it can understand the older syntax.&lt;/p&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x8574114" name="N0x850ca10.0x8574114"&gt;&lt;/a&gt; Redirecting Standard Error&lt;/h2&gt; &lt;p&gt;Have you ever looked for a file using the &lt;tt&gt;find&lt;/tt&gt; command, only to learn the file you were looking for is lost in a sea of &lt;tt&gt;permission denied&lt;/tt&gt; error messages that quickly fill your terminal window?&lt;/p&gt; &lt;p&gt;If you are the administrator of the system, you can become root and execute &lt;tt&gt;find&lt;/tt&gt; again as root. Because root can read any file, you don't get that error anymore. Unfortunately, not everyone has root access on the system being used. Besides, it's bad practice to be root unless it's absolutely necessary. So what can you do?&lt;/p&gt; &lt;p&gt;One thing you can do is redirect your output to a file. Basic output redirection should be nothing new to anyone who has spent a reasonable amount of time using any UNIX or Linux shell, so I won't go into detail regarding the basics of output redirection. To save the useful output from the find command, you can redirect the output to a file:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ find /  -name foo &gt; output.txt&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;You still see the error messages on the screen but not the path of the file you're looking for. Instead, that is placed in the file output.txt. When the find command completes, you can &lt;tt&gt;cat&lt;/tt&gt; the file output.txt to get the location(s) of the file(s) you want.&lt;/p&gt; &lt;p&gt;That's an acceptable solution, but there's a better way. Instead of redirecting the standard output to a file, you can redirect the error messages to a file. This can be done by placing a 2 directly in front of the redirection angle bracket. If you are not interested in the error messages, you simply can send them to /dev/null:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ find /  -name foo 2&gt; /dev/null&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x8574350" name="N0x850ca10.0x8574350"&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;This shows you the location of file foo, if it exists, without those pesky &lt;tt&gt;permission denied&lt;/tt&gt; error messages. I almost always invoke the find command in this way.&lt;/p&gt; &lt;p&gt;The number 2 represents the standard error output stream. Standard error is where most commands send their error messages. Normal (non-error) output is sent to standard output, which can be represented by the number 1. Because most redirected output is the standard output, output redirection works only on the standard output stream by default. This makes the following two commands equivalent:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ find / -name foo &gt; output.txt&lt;br /&gt;$ find / -name foo 1&gt; output.txt&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;Sometimes you might want to save both the error messages and the standard output to file. This often is done with cron jobs, when you want to save all the output to a log file. This also can be done by directing both output streams to the same file:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ find / -name foo &gt; output.txt 2&gt; output.txt&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;This works, but again, there's a better way to do it. You can tie the standard error stream to the standard output stream using an ampersand. Once you do this, the error messages goes to wherever you redirect the standard output:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;&lt;br /&gt;$ find / -name foo &gt; output.txt 2&gt;&amp;1&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;One caveat about doing this is that the tying operation goes at the end of the command generating the output. This is important if piping the output to another command. This line works as expected:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;&lt;br /&gt;find -name test.sh 2&gt;&amp;amp;1 | tee /tmp/output2.txt&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x8574560" name="N0x850ca10.0x8574560"&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;but this line doesn't:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;&lt;br /&gt;find -name test.sh | tee /tmp/output2.txt 2&gt;&amp;1&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x8574610" name="N0x850ca10.0x8574610"&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;and neither does this one:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;&lt;br /&gt;find -name test.sh 2&gt;&amp;amp;1 &gt; /tmp/output.txt&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;I started this discussion on output redirection using the find command as an example, and all the examples used the find command. This discussion isn't limited to the output of find, however. Many other commands can generate enough error messages to obscure the one or two lines of output you need.&lt;/p&gt; &lt;p&gt;Output redirection isn't limited to bash, either. All UNIX/Linux shells support output redirection using the same syntax.&lt;/p&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x85d2ad0" name="N0x850ca10.0x85d2ad0"&gt;&lt;/a&gt; Searching the Command History&lt;/h2&gt; &lt;p&gt;One of the greatest features of the bash shell is command history, which makes it easy to navigate through past commands by navigating up and down through your history with the up and down arrow keys. This is fine if the command you want to repeat is within the last 10-20 commands you executed, but it becomes tedious when the command is 75-100 commands back in your history.&lt;/p&gt; &lt;p&gt;To speed things up, you can search interactively through your command history by pressing Ctrl-R. After doing this, your prompt changes to:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;(reverse-i-search)`':&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;Start typing a few letters of the command you're looking for, and bash shows you the most recent command that contains the string you've typed so far. What you type is shown between the ` and ' in the prompt. In the example below, I typed in &lt;tt&gt;htt&lt;/tt&gt;:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;(reverse-i-search)`htt': rpm -ql $(rpm -qa | grep httpd)&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x85d2c30" name="N0x850ca10.0x85d2c30"&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;This shows that the most recent command I typed containing the string htt is:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;rpm -ql $(rpm -qa | grep httpd)&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;To execute that command again, I can press Enter. If I want to edit it, I can press the left or right arrow key. This places the command on the command line at a normal prompt, and I now can edit it as if I just typed it in. This can be a real time saver for commands with a lot of arguments that are far back in the command history.&lt;/p&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x85d2d0c" name="N0x850ca10.0x85d2d0c"&gt;&lt;/a&gt; Using for Loops from the Command Line&lt;/h2&gt; &lt;p&gt;One last tip I'd like to offer is using loops from the command line. The command line is not the place to write complicated scripts that include multiple loops or branching. For small loops, though, it can be a great time saver. Unfortunately, I don't see many people taking advantage of this. Instead, I frequently see people use the up arrow key to go back in the command history and modify the previous command for each iteration.&lt;/p&gt; &lt;p&gt;If you are not familiar with creating for loops or other types of loops, many good books on shell scripting discuss this topic. A discussion on for loops in general is an article in itself.&lt;/p&gt; &lt;p&gt;You can write loops interactively in two ways. The first way, and the method I prefer, is to separate each line with a semicolon. A simple loop to make a backup copy of all the files in a directory would look like this:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ for file in * ; do cp $file $file.bak; done&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;Another way to write loops is to press Enter after each line instead of inserting a semicolon. bash recognizes that you are creating a loop from the use of the for keyword, and it prompts you for the next line with a secondary prompt. It knows you are done when you enter the keyword done, signifying that your loop is complete:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ for file in *&lt;br /&gt;&gt; do cp $file $file.bak&lt;br /&gt;&gt; done&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p class="simplesect"&gt; &lt;/p&gt;&lt;p class="titlepage"&gt; &lt;/p&gt;&lt;h2 class="title"&gt;&lt;a class="mceItemAnchor" title="N0x850ca10.0x85d2e6c" name="N0x850ca10.0x85d2e6c"&gt;&lt;/a&gt; And Now for Something Completely Different&lt;/h2&gt; &lt;p&gt;When I originally conceived this article, I was going to name it "Stupid bash Tricks", and show off some unusual, esoteric bash commands I've learned. The tone of the article has changed since then, but there is one stupid bash trick I'd like to share.&lt;/p&gt; &lt;p&gt;About five years ago, a Linux system I was responsible for ran out of memory. Even simple commands, such as ls, failed with an &lt;tt&gt;insufficient memory&lt;/tt&gt; error. The obvious solution to this problem was simply to reboot. One of the other system administrators wanted to look at a file that may have held clues to the problem, but he couldn't remember the exact name of the file. We could switch to different directories, because the cd command is part of bash, but we couldn't get a list of the files, because even ls would fail. To get around this problem, the other system administrator created a simple loop to show us the files in the directory:&lt;/p&gt; &lt;pre&gt;&lt;tt&gt;$ for file in *; do echo $file; done&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt; &lt;p&gt;This worked when ls wouldn't, because echo is a part of the bash shell, so it already is loaded into memory. It's an interesting solution to an unusual problem. Now, can anyone suggest a way to display the contents of a file using only bash built-ins?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-3620882219567395322?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/3620882219567395322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=3620882219567395322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/3620882219567395322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/3620882219567395322'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/02/bash-tips-and-tricks.html' title='Bash Tips and Tricks'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-603203250274727695</id><published>2007-02-16T04:30:00.000-08:00</published><updated>2007-02-16T04:31:04.333-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Remote Logins - Telnet</title><content type='html'>&lt;p style="text-align: justify;"&gt; &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;An answer found from Linux Gazette for the question on Remote Logins and su.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Q. i am running red hat linux 6.1 and am encountering some problems i can login as root from the console but not from anywhere else &lt;/b&gt;&lt;b&gt;i have to login as webmaster on all other machines on ntwk from nowhere, including the console, can i su once logged in as webmaster any help would be appreciated &lt;/b&gt;&lt;/p&gt; &lt;p&gt;Ans. :&lt;br /&gt;Any of these should allow you to access your system through cryptographically secured authentication and session protocols that protect you from a variety of sniffing, spoofing, TCP hijacking and other vulnerabilties that are common using other forms of remote shell access (such as telnet, and the infamous rsh and rlogin packages).&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; If you really insist on eliminating these policies from your system you can edit files under &lt;tt&gt;/etc/pam.d&lt;/tt&gt; that are used to configure the options and restrictions of the programs that are compiled against the PAM (pluggable authentication modules) model and libraries. Here's an example of one of them (&lt;tt&gt;/etc/pam.d/login&lt;/tt&gt; which is used by the in.telnetd service):&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;pre&gt;#&lt;br /&gt;# The PAM configuration file for the Shadow `login' service&lt;br /&gt;#&lt;br /&gt;# NOTE: If you use a session module (such as kerberos or NIS+)&lt;br /&gt;# that retains persistent credentials (like key caches, etc), you&lt;br /&gt;# need to enable the `CLOSE_SESSIONS' option in /etc/login.defs&lt;br /&gt;# in order for login to stay around until after logout to call&lt;br /&gt;# pam_close_session() and cleanup.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# Outputs an issue file prior to each login prompt (Replaces the&lt;br /&gt;# ISSUE_FILE option from login.defs). Uncomment for use&lt;br /&gt;# auth       required   pam_issue.so issue=/etc/issue&lt;br /&gt;&lt;br /&gt;# Disallows root logins except on tty's listed in /etc/securetty&lt;br /&gt;# (Replaces the `CONSOLE' setting from login.defs)&lt;br /&gt;auth       requisite  pam_securetty.so&lt;br /&gt;&lt;br /&gt;# Disallows other than root logins when /etc/nologin exists&lt;br /&gt;# (Replaces the `NOLOGINS_FILE' option from login.defs)&lt;br /&gt;auth       required   pam_nologin.so&lt;br /&gt;&lt;br /&gt;# This module parses /etc/environment (the standard for setting&lt;br /&gt;# environ vars) and also allows you to use an extended config&lt;br /&gt;# file /etc/security/pam_env.conf.&lt;br /&gt;# (Replaces the `ENVIRON_FILE' setting from login.defs)&lt;br /&gt;auth       required   pam_env.so&lt;br /&gt;&lt;br /&gt;# Standard Un*x authentication. The "nullok" line allows passwordless&lt;br /&gt;# accounts.&lt;br /&gt;auth       required   pam_unix.so nullok&lt;br /&gt;&lt;br /&gt;# This allows certain extra groups to be granted to a user&lt;br /&gt;# based on things like time of day, tty, service, and user.&lt;br /&gt;# Please uncomment and edit /etc/security/group.conf if you&lt;br /&gt;# wish to use this.&lt;br /&gt;# (Replaces the `CONSOLE_GROUPS' option in login.defs)&lt;br /&gt;# auth       optional   pam_group.so&lt;br /&gt;&lt;br /&gt;# Uncomment and edit /etc/security/time.conf if you need to set&lt;br /&gt;# time restrainst on logins.&lt;br /&gt;# (Replaces the `PORTTIME_CHECKS_ENAB' option from login.defs&lt;br /&gt;# as well as /etc/porttime)&lt;br /&gt;# account    requisite  pam_time.so&lt;br /&gt;&lt;br /&gt;# Uncomment and edit /etc/security/access.conf if you need to&lt;br /&gt;# set access limits.&lt;br /&gt;# (Replaces /etc/login.access file)&lt;br /&gt;# account  required       pam_access.so&lt;br /&gt;&lt;br /&gt;# Standard Un*x account and session&lt;br /&gt;account    required   pam_unix.so&lt;br /&gt;session    required   pam_unix.so&lt;br /&gt;&lt;br /&gt;# Sets up user limits, please uncomment and read /etc/security/limits.conf&lt;br /&gt;# to enable this functionality.&lt;br /&gt;# (Replaces the use of /etc/limits in old login)&lt;br /&gt;# session    required   pam_limits.so&lt;br /&gt;&lt;br /&gt;# Prints the last login info upon succesful login&lt;br /&gt;# (Replaces the `LASTLOG_ENAB' option from login.defs)&lt;br /&gt;session    optional   pam_lastlog.so&lt;br /&gt;&lt;br /&gt;# Prints the motd upon succesful login&lt;br /&gt;# (Replaces the `MOTD_FILE' option in login.defs)&lt;br /&gt;session    optional   pam_motd.so&lt;br /&gt;&lt;br /&gt;# Prints the status of the user's mailbox upon succesful login&lt;br /&gt;# (Replaces the `MAIL_CHECK_ENAB' option from login.defs). You&lt;br /&gt;# can also enable a MAIL environment variable from here, but it&lt;br /&gt;# is better handled by /etc/login.defs, since userdel also uses&lt;br /&gt;# it to make sure that removing a user, also removes their mail&lt;br /&gt;# spool file.&lt;br /&gt;session    optional   pam_mail.so standard noenv&lt;br /&gt;&lt;br /&gt;# The standard Unix authentication modules, used with NIS (man nsswitch) as&lt;br /&gt;# well as normal /etc/passwd and /etc/shadow entries. For the login service,&lt;br /&gt;# this is only used when the password expires and must be changed, so make&lt;br /&gt;# sure this one and the one in /etc/pam.d/passwd are the same. The "nullok"&lt;br /&gt;# option allows users to change an empty password, else empty passwords are&lt;br /&gt;# treated as locked accounts.&lt;br /&gt;#&lt;br /&gt;# (Add `md5' after the module name to enable MD5 passwords the same way that&lt;br /&gt;# `MD5_CRYPT_ENAB' would do under login.defs).&lt;br /&gt;#&lt;br /&gt;# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in&lt;br /&gt;# login.defs. Also the "min" and "max" options enforce the length of the&lt;br /&gt;# new password.&lt;br /&gt;&lt;br /&gt;password   required   pam_unix.so nullok obscure min=4 max=8&lt;br /&gt;&lt;br /&gt;# Alternate strength checking for password. Note that this&lt;br /&gt;# requires the libpam-cracklib package to be installed.&lt;br /&gt;# You will need to comment out the password line above and&lt;br /&gt;# uncomment the next two in order to use this.&lt;br /&gt;# (Replaces the `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH')&lt;br /&gt;#&lt;br /&gt;# password required       pam_cracklib.so retry=3 minlen=6 difok=3&lt;br /&gt;# password required       pam_unix.so use_authtok nullok md5&lt;/pre&gt; &lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; This is from  &lt;a href="http://www.debian.org/" mce_href="http://www.debian.org/"&gt;Debian&lt;/a&gt; machine (mars.starshine.org) and thus has far more comments (all those lines starting with "#" hash marks) than those that &lt;a href="http://www.redhat.com/" mce_href="http://www.redhat.com/"&gt;Red Hat&lt;/a&gt; installs. It's good that Debian comments these files so verbosely, since that's practically the only source of documentation for PAM files and modules.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; In this case the entry that you really care about is the one for 'securetty.so'  This module checks the file &lt;tt&gt;/etc/securetty&lt;/tt&gt; which is classically a list of those terminals on which your system will allow direct root logins.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; You could comment out this line in &lt;tt&gt;/etc/pam.d/login&lt;/tt&gt; to disable this check for those services which call the &lt;tt&gt;/bin/login&lt;/tt&gt; command.  You can look for similar lines in the various other &lt;tt&gt;/etc/pam.d&lt;/tt&gt; files so see which other services are enforcing this policy.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; This leads us to the question of why your version of 'su' is not working. Red Hat's version of 'su' is probably also "PAMified" (almost certainly, in fact). So there should be a &lt;tt&gt;/etc/pam.d/su&lt;/tt&gt; file that controls the list of policies that your copy of 'su' is checking. You should look through that to see why 'su' isn't allowing your 'webmaster' account to become 'root'.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; It seems quite likely that your version of Red Hat contains a line something like:&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;pre&gt;# Uncomment this to force users to be a member of group root&lt;br /&gt;# before than can use `su'. You can also add "group=foo" to&lt;br /&gt;# to the end of this line if you want to use a group other&lt;br /&gt;# than the default "root".&lt;br /&gt;# (Replaces the `SU_WHEEL_ONLY' option from login.defs)&lt;br /&gt;auth       required   pam_wheel.so&lt;/pre&gt; &lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; Classically the 'su' commands on most versions of UNIX required that a user be in the "wheel" group in order to attain 'root' The traditional GNU implementation did not enforce this restriction (since rms found it distasteful).&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; On my system this line was commented out (which is presumably the Debian default policy, since I never fussed with that file on my laptop). I've uncommented here for this example.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; Note that one of the features of PAM is that it allows you to specify any group using a command line option. It defaults to "wheel" because that is an historical convention. You can also use the pam_wheel.so module on any of the PAMified services &lt;tt&gt;---&lt;/tt&gt; so you could have programs like 'ftpd' or 'xdm' enforce a policy that restricted their use to members of arbitrary groups.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; Finally note that most recent versions of SSH have PAM support enabled when they are compiled for Linux systems. Thus you may find, after you install any version of SSH, that you have an &lt;tt&gt;/etc/pam.d/ssh&lt;/tt&gt; file.  You may have to edit that to set some of your preferred SSH policies.  There is also an sshd_config file (mine's in &lt;tt&gt;/etc/ssh/sshd_config&lt;/tt&gt;) that will allow you to control other ssh options).&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; In generall the process of using ssh works something like this:&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;ol&gt;&lt;li&gt;Install the sshd (daemon) package on your servers (the systems that you want to access)&lt;/li&gt;&lt;li&gt; Install the ssh client package on your clients (the systems from which you'd like to initiate your connections).&lt;/li&gt;&lt;li&gt; Generate Host keys on all of these systems (normally done for you by the installation).&lt;/li&gt;&lt;/ol&gt; &lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; .... you could stop at this point, and just start using the ssh and slogin commands to access your remote accounts using their passwords. However, for more effective and convenient use you'd also:&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;ol&gt;&lt;li&gt; Generate personal key pairs for your accounts.&lt;/li&gt;&lt;li&gt; Copy/append the identity.pub (public) keys from each of your client accounts into the &lt;tt&gt;~/.ssh/authorized_keys&lt;/tt&gt; files on each of the servers.&lt;/li&gt;&lt;/ol&gt; &lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; This allows you to access those remote accounts without using your passwords on them. (Actually sshd can be configured to require the passwords AND/OR the identity keys, but the default is to allow access without a password if the keys work).&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; Another element you should be aware of is the "passphrases" and the ssh-agent. Basically it is normal to protect your private key with a passphrase. This is sort of like a password &lt;tt&gt;---&lt;/tt&gt; but it is used to decrypt or "unlock" your private key. Obviously there isn't much added convenience if you protect your private key with a passphrase so that you have to type that every time you use an ssh/slogin or scp (secure remote copy) command.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; ssh-agent allows you to start a shell or other program, unlock your identity key (or keys), and have all of the ssh commands you run from any of the descendents of that shell or program automatically use any of those unlocked keys. (The advantage of this is that the agent automatically dies when you exit the shell program that you started. That automatically "locks" the identity &lt;tt&gt;---&lt;/tt&gt; sort of.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; There are alot of other aspects to ssh. It can be used to create tunnels, through which one can use all sorts of traffic. People have created PPP/TCP/IP tunnels that run through ssh tunnels to support custom VPNs (virtual private networks). When run under X, ssh automatically performs "X11 forwarding" through one of the these tunnels. This is particularly handy for running X clients on remote systems beyond a NAT (IP Masquerading) router or through a proxying firewall.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; In other words ssh is a very useful package quite apart from its support for cryptographic authentication and encryption.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;p&gt; In fairness I should point out that there are a number of alternatives to ssh. Kerberos is a complex and mature suite of protocols for performing authentication and encryption. STEL is a simple daemon/client package which functions just like telnetd/telnet &lt;tt&gt;---&lt;/tt&gt; but with support for encrypted sessions. And there are SSL enabled versions telnet and ftp daemons and clients.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-603203250274727695?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/603203250274727695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=603203250274727695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/603203250274727695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/603203250274727695'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/02/remote-logins-telnet.html' title='Remote Logins - Telnet'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-3590603360404561101</id><published>2007-02-16T04:25:00.000-08:00</published><updated>2007-02-16T04:30:11.256-08:00</updated><title type='text'>How do I lock out a user after a set number of login attempts?</title><content type='html'>&lt;p&gt;The PAM (Pluggable Authentication Module) module &lt;tt&gt;pam_tally&lt;/tt&gt; keeps track of unsuccessful login attempts then disables user accounts when a preset limit is reached. This is often referred to as account lockout.&lt;/p&gt; &lt;p&gt;To lock out a user after 4 attempts, two entries need to be added in the &lt;tt&gt;/etc/pam.d/system-auth&lt;/tt&gt; file:&lt;/p&gt; &lt;pre&gt;auth        required        /lib/security/$ISA/pam_tally.so onerr=fail no_magic_root&lt;br /&gt;account     required        /lib/security/$ISA/pam_tally.so deny=3 no_magic_root reset&lt;/pre&gt; &lt;p&gt;The options used above are described below:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;tt&gt;onerr=fail&lt;/tt&gt;&lt;br /&gt;If something strange happens, such as unable to open the file, this determines how the module should react.&lt;/li&gt;&lt;li&gt;&lt;tt&gt;no_magic_root&lt;/tt&gt;&lt;br /&gt;This is used to indicate that if the module is invoked by a user with uid=0, then the counter is incremented. The sys-admin should use this for daemon-launched services, like &lt;tt&gt;telnet/rsh/login&lt;/tt&gt;.&lt;/li&gt;&lt;li&gt;&lt;tt&gt;deny=3&lt;/tt&gt;The deny=3 option is used to deny access if tally for this user exceeds 3.&lt;/li&gt;&lt;li&gt;&lt;tt&gt;reset&lt;/tt&gt;&lt;br /&gt;The reset option instructs the module to reset count to 0 on successful entry.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;See below for a complete example of implementing this type of policy:&lt;/p&gt; &lt;pre&gt;auth        required      /lib/security/$ISA/pam_env.so&lt;br /&gt;&lt;b&gt;auth        required      /lib/security/$ISA/pam_tally.so onerr=fail&lt;br /&gt;no_magic_root&lt;/b&gt; auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok&lt;br /&gt;auth        required      /lib/security/$ISA/pam_deny.so&lt;br /&gt;account     required      /lib/security/$ISA/pam_unix.so &lt;b&gt;&lt;br /&gt;account     required      /lib/security/$ISA/pam_tally.so deny=5&lt;br /&gt;no_magic_root reset&lt;/b&gt;  password    requisite     /lib/security/$ISA/$ISA/pam_cracklib.so retry=3&lt;br /&gt;password    sufficient    /lib/security/$ISA/$ISA/pam_unix.so nullok use_authtok md5 shadow password&lt;br /&gt;required      /lib/security/$ISA/$ISA/pam_deny.so  session&lt;br /&gt;required      /lib/security/$ISA/$ISA/pam_limits.so session&lt;br /&gt;required      /lib/security/$ISA/$ISA/pam_unix.so&lt;/pre&gt; &lt;p&gt;For more detailed information on the PAM system please see the documentation contained under &lt;tt&gt;/usr/share/doc/pam-&lt;version&gt;&lt;/tt&gt;&lt;/p&gt; &lt;p&gt;For information on how to unlock a user that has expired their &lt;tt&gt;deny&lt;/tt&gt; tally see additional Knowledgebase articles regarding unlocking a user account and seeing failed logins with the faillog command.&lt;/p&gt; &lt;p&gt;&lt;i&gt;contributed by David Robinson&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-3590603360404561101?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/3590603360404561101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=3590603360404561101' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/3590603360404561101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/3590603360404561101'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/02/how-do-i-lock-out-user-after-set-number.html' title='How do I lock out a user after a set number of login attempts?'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-5260064922639745499</id><published>2007-02-11T22:15:00.000-08:00</published><updated>2007-02-11T22:14:50.074-08:00</updated><title type='text'>Good Morning.</title><content type='html'>Well. Today is Monday. the most painful day of the week and  unfortunatley it rained today. i don't know why and for what good reason this happened but it made it worst day today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-5260064922639745499?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/5260064922639745499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=5260064922639745499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/5260064922639745499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/5260064922639745499'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2007/02/good-morning.html' title='Good Morning.'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-116282377947587278</id><published>2006-11-06T06:35:00.000-08:00</published><updated>2006-11-06T06:36:19.966-08:00</updated><title type='text'>Some Cool Commands.</title><content type='html'>&lt;p style="font-weight: bold; text-align: justify;"&gt;alias&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Create an alias, aliases allow a string to be substituted for a word when it is used as the first word of a simple command. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     alias [-p] [name[=value] ...]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;      unalias [-a] [name ... ]    &lt;br /&gt;If arguments are supplied, an alias is defined for each name whose value is given. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;If no value is given, `alias' will print the current value of the alias. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Without arguments or with the `-p' option, alias prints the list of aliases on the standard output in a form that allows them to be reused as input. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`unalias' will remove each name from the list of aliases. If `-a' is supplied, all aliases are removed. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`alias' and `unalias' are BASH built-ins.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The first word of each simple command, if unquoted, is checked to see if it has an alias. If so, that word is replaced by the text of the alias. The alias name and the replacement text may contain any valid shell input, including shell metacharacters, with the exception that the alias name may not contain `='. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. This means that one may alias ls to "ls -F", for instance, and Bash does not try to recursively expand the replacement text. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;If the last character of the alias value is a space or tab character, then the next command word following the alias is also checked for alias expansion. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;There is no mechanism for using arguments in the replacement text, as in csh. If arguments are needed, a shell function should be used . Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt . &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The rules concerning the definition and use of aliases are somewhat confusing. Bash always reads at least one complete line of input before executing any of the commands on that line. Aliases are expanded when a command is read, not when it is executed. Therefore, an alias definition appearing on the same line as another command does not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new alias. This behavior is also an issue when functions are executed. Aliases are expanded when a function definition is read, not when the function is executed, because a function definition is itself a compound command. As a consequence, aliases defined in a function are not available until after that function is executed. To be safe, always put alias definitions on a separate line, and do not use alias in compound commands. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;For almost every purpose, shell functions are preferred over aliases. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Examples&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;alias ls='ls -F' &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Now issuing the command 'ls' will actually run 'ls -F'&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Making an alias permanent:&lt;br /&gt;Use your favorite text editor to create a .bash_aliases file, and type the alias commands into the file.&lt;br /&gt;.bash_aliases will run at login (or you can just execute it with ..bash_aliases )&lt;br /&gt;___________________________________________________________________&lt;wbr&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="font-weight: bold; text-align: justify;"&gt;break&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Exit from a for, while, until, or select loop&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     break [n]&lt;br /&gt;If n is supplied, the nth enclosing loop is exited. n must be greater than or equal to 1. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The return status is zero unless n is not greater than or equal to 1. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="font-style: italic; text-align: justify;"&gt;Example&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;for myloop in 1 2 3 4 5&lt;br /&gt;do&lt;br /&gt; echo -n "$myloop"&lt;br /&gt; if [ "$myloop" -eq 3 ]&lt;br /&gt;  then&lt;br /&gt;  break # This line will break out of the loop&lt;br /&gt; fi&lt;br /&gt;done&lt;br /&gt;break is a POSIX `special' builtin&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold; text-align: justify;"&gt;builtin&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Run a shell builtin, passing it args, and return its exit status. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     builtin [shell-builtin [args]]&lt;br /&gt;This is useful when defining a shell function with the same name as a shell builtin, retaining the functionality of the builtin within the function. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;br /&gt;For example, to write a function to replace `cd' that writes the hostname and current directory&lt;br /&gt;to an xterm title bar:&lt;br /&gt;cd()&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; {&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  builtin cd "$@" &amp;&amp;amp; xtitle "$HOST: $PWD"&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; }&lt;br /&gt;The return status is non-zero if shell-builtin is not a shell builtin command.&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;cal&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Display a calendar&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     cal [-mjy] [[month] year]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;options:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     -m      Display monday as the first day of the week.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     -j      Display julian dates (days one-based, numbered from January 1).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     -y      Display a calendar for the current year.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    A single parameter specifies the 4 digit year (1 - 9999) to be displayed.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    Two parameters denote the Month (1 - 12) and Year (1 - 9999).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    If arguments are not specified, the current month is displayed.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    A year starts on 01 Jan.&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;case&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Conditionally perform a command, case will selectively execute the command-list corresponding to the first pattern that matches word. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;br /&gt;SYNTAX&lt;br /&gt;     case word in [ [(] pattern [| pattern]...) command-list ;;]... esac&lt;br /&gt;The `|' is used to separate multiple patterns, and the `)' operator terminates a pattern list. A list of patterns and an associated command-list is known as a clause. Each clause must be terminated with `;;'. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The word undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before matching is attempted. Each pattern undergoes tilde expansion, parameter expansion, command substitution, and arithmetic expansion. There may be an arbitrary number of case clauses, each terminated by a `;;'. The first pattern that matches determines the command-list that is executed. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Here is an example using case in a script that could be used to describe one interesting feature of an animal:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;echo -n "Enter the name of an animal: "&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;read ANIMAL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;echo -n "The $ANIMAL has " &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;case $ANIMAL in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  horse | dog | cat) echo -n "four";;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  man | kangaroo ) echo -n "two";;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  *) echo -n "an unknown number of";;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;esac&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;echo " legs."&lt;/span&gt;&lt;br /&gt;The return status is zero if no pattern is matched. Otherwise, the return status is the exit status of the command-list executed.&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;chroot&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Run a command with a different root directory&lt;br /&gt;'chroot' runs a command with a specified root directory. On many systems, only the super-user can do this. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;br /&gt;SYNTAX&lt;br /&gt;    chroot NEWROOT [COMMAND [ARGS]...]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     chroot OPTION&lt;br /&gt;Ordinarily, filenames are looked up starting at the root of the directory structure, i.e. '/' &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;'chroot' changes the root to the directory NEWROOT (which must exist) and then runs COMMAND with optional ARGS. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;If COMMAND is not specified, the default is the value of the `SHELL' environment variable or `/bin/sh' if not set, invoked with the `-i' option. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The only options are `--help' and `--version'&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;cksum&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Print CRC checksum and byte counts&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Computes a cyclic redundancy check (CRC) checksum for each given FILE, or standard input if none are given or for a FILE of `-'. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;br /&gt;SYNTAX&lt;br /&gt;     cksum [Option]... [File]...&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;cksum prints the CRC checksum for each file along with the number of bytes in the file, and the filename unless no arguments were given.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;cksum is typically used to ensure that files transferred by unreliable means (e.g., netnews) have not been corrupted, by comparing the cksum output for the received files with the cksum output for the original files (typically given in the distribution). &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The CRC algorithm is specified by the POSIX.2 standard. It is not compatible with the BSD or System V sum algorithms; it is more robust.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The only options are `--help' and `--version'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;cmp&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Compare two files, and if they differ, tells the first byte and line number where they differ.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;You can use the `cmp' command to show the offsets and line numbers where two files differ. `cmp' can also show all the characters that differ between the two files, side by side.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;br /&gt;SYNTAX&lt;br /&gt;     cmp options... FromFile [ToFile]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS   &lt;br /&gt;     Multiple single letter options (unless they take an argument) can be combined into a single command line word:&lt;br /&gt;     so `-cl' is equivalent to `-c -l'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-c'&lt;br /&gt;    Print the differing characters.  Display control characters as a `^' followed by a letter of the alphabet and precede characters that have the high bit set with `M-' (which stands for "meta"). &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`--ignore-initial=BYTES'&lt;br /&gt;    Ignore any differences in the the first BYTES bytes of the input files.  Treat files with fewer than BYTES bytes as if they are empty.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-l'&lt;br /&gt;    Print the (decimal) offsets and (octal) values of all differing bytes.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`--print-chars'&lt;br /&gt;    Print the differing characters.  Display control characters as a `^' followed by a letter of the alphabet and precede characters that have the high bit set with `M-' (which stands for "meta"). &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`--quiet'&lt;br /&gt;`-s'&lt;br /&gt;`--silent'&lt;br /&gt;    Do not print anything; only return an exit status indicating whether the files differ.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`--verbose'&lt;br /&gt;    Print the (decimal) offsets and (octal) values of all differing bytes.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-v'&lt;br /&gt;`--version'&lt;br /&gt;    Output the version number of `cmp'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;      The file name `-' is always the standard input.  `cmp' also uses the standard input if one file name is omitted.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;      An exit status of 0 means no differences were found, 1 means some differences were found, and 2 means trouble.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="font-style: italic; text-align: justify;"&gt;Example&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="font-style: italic; text-align: justify;"&gt;$ cmp tnsnames.ora tnsnames.old&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Notes&lt;br /&gt;`cmp' reports the differences between two files character by character, instead of line by line. As a result, it is more useful than `diff' for comparing binary files. For text files, `cmp' is useful mainly when you want to know only whether two files are identical. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;For files that are identical, `cmp' produces no output. When the files differ, by default, `cmp' outputs the byte offset and line number where the first difference occurs. You can use the `-s' option to suppress that information, so that `cmp' produces no output and reports whether the files differ using only its exit status.&lt;br /&gt;Unlike `diff', `cmp' cannot compare directories; it can only compare two files.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;dc&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Desk calculator&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;       dc &lt;options&gt;&lt;/options&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;-e EXPR --expression=EXPR      Evaluate EXPR as DC commands.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;-f FILE --file=FILE      Read and evaluate DC commands from FILE.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;-h --help      Print a usage message summarizing the command-line options, then&lt;br /&gt;    exit.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;-V --version      Print the version information for this program, then exit.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;To exit, use `q'.&lt;br /&gt;DESCRIPTION&lt;br /&gt;The desk calculator works with postfix notation; rather like many HP Calculators.&lt;br /&gt;Basic arithmetic uses the standard + - / * symbols but entered after the digits&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;so entering:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;100&lt;br /&gt;0.5&lt;br /&gt;*&lt;br /&gt;p&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;will return 50&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;dd&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Dump Data - convert and copy a file (use for RAW storage)&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;    dd [OPTION]...&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;DESCRIPTION&lt;br /&gt;    The numeric-valued options below (BYTES and BLOCKS) can be followed by a multiplier: `b'=512, `c'=1, `w'=2, `xM'=M, or any of the standard block size suffixes like `k'=1024 (*note Block size::). &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`if=FILE'&lt;br /&gt;    input file : Read from FILE instead of standard input.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`of=FILE'&lt;br /&gt;    output file : Write to FILE instead of standard output.  Unless `conv=notrunc' is given, `dd' truncates FILE to zero bytes (or the size specified with `seek=').&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`ibs=BYTES'&lt;br /&gt;    Read BYTES bytes at a time.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`obs=BYTES'&lt;br /&gt;    Write BYTES bytes at a time.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`bs=BYTES'&lt;br /&gt;    Both read and write BYTES bytes at a time.  This overrides `ibs' and `obs'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`cbs=BYTES'&lt;br /&gt;    Convert BYTES bytes at a time.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`skip=BLOCKS'&lt;br /&gt;    Skip BLOCKS `ibs'-byte blocks in the input file before copying.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`seek=BLOCKS'&lt;br /&gt;    Skip BLOCKS `obs'-byte blocks in the output file before copying.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`count=BLOCKS'&lt;br /&gt;    Copy BLOCKS `ibs'-byte blocks from the input file, instead of everything until the end of the file.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`conv=CONVERSION[,CONVERSION].&lt;wbr&gt;..'&lt;br /&gt;    Convert the file as specified by the CONVERSION argument(s).  (No spaces around any comma(s).)&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     Conversions:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `ascii'&lt;br /&gt;         Convert EBCDIC to ASCII.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `ebcdic'&lt;br /&gt;         Convert ASCII to EBCDIC.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `ibm'&lt;br /&gt;         Convert ASCII to alternate EBCDIC.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `block'&lt;br /&gt;         For each line in the input, output `cbs' bytes, replacing the input newline with a space and padding with spaces as necessary.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `unblock'&lt;br /&gt;         Replace trailing spaces in each `cbs'-sized input block with a newline.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `lcase'&lt;br /&gt;         Change uppercase letters to lowercase.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `ucase'&lt;br /&gt;         Change lowercase letters to uppercase.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `swab'&lt;br /&gt;         Swap every pair of input bytes.  GNU `dd', unlike others, works when an odd number of bytes are read--the last byte is simply copied (since there is nothing to swap it with). &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `noerror'&lt;br /&gt;         Continue after read errors.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `notrunc'&lt;br /&gt;         Do not truncate the output file.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `sync'&lt;br /&gt;         Pad every input block to size of `ibs' with trailing zero&lt;br /&gt;         bytes.&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; diff&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Display the differences between two files, or each corresponding file in two directories.&lt;br /&gt;Each set of differences is called a "diff" or "patch". For files that are identical, `diff' normally produces no output; for binary (non-text) files, `diff' normally reports only that they are different. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     diff [options] from-file to-file&lt;br /&gt;OPTIONS&lt;br /&gt;  Multiple single letter options (unless they take an argument) can be combined into a single command    line word: so `-ac' is equivalent to `-a -c'. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;      -lines  Show lines lines of context. This option is obsolete.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -a     Treat all files as text and compare  them  line-by-&lt;br /&gt;             line, even if they do not seem to be text.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -b     Ignore changes in amount of white space.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -B     Ignore  changes  that  just  insert or delete blank&lt;br /&gt;             lines.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --brief&lt;br /&gt;             Report only  whether  the  files  differ,  not  the&lt;br /&gt;             details of the differences.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -c     Use the context output format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -C lines   --context[=lines]&lt;br /&gt;             Use  the  context  output format, showing lines (an integer) lines of context, or three if lines is not given.  For proper operation, patch typically needs at least two lines of context.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --changed-group-format=format&lt;br /&gt;             Use format to output a line group  containing  differing  lines  from both files in if-then-else foRmat.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -d     Change the algorithm to perhaps find a smaller  set of changes.  This makes diff slower (sometimes much slower).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -D name      Make merged if-then-else format output, conditional on the preprocessor macro name.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -e&lt;br /&gt;      --ed   Make output that is a valid ed script.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --exclude=pattern&lt;br /&gt;             When comparing directories, ignore files and subdirectories whose basenames match pattern.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --exclude-from=file&lt;br /&gt;             When comparing directories, ignore files and subdirectories  whose  basenames  match any pattern contained in file.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --expand-tabs&lt;br /&gt;             Expand tabs to spaces in the  output,  to  preserve the alignment of tabs in the input files.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -f     Make  output  that  looks vaguely like an ed script but has changes in the order  they  appear  in  the file.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -F regexp&lt;br /&gt;             In  context  and  unified  format, for each hunk of differences, show some of the last  preceding  line that matches regexp.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --forward-ed&lt;br /&gt;             Make  output  that  looks vaguely like an ed script but has changes in the order  they  appear  in  the file.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -h     This  option currently has no effect; it is present for Unix compatibility.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -H     Use heuristics to speed  handling  of  large  files that have numerous scattered small changes.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --horizon-lines=lines&lt;br /&gt;             Do  not  discard the last lines lines of the common prefix and the first lines lines of the common suffix.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -i     Ignore  changes in case; consider upper- and lower-case letters equivalent.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -I regexp            Ignore changes that just  insert  or  delete  lines that match regexp.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --ifdef=name&lt;br /&gt;             Make merged if-then-else format output, conditional&lt;br /&gt;             on the preprocessor macro name.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --ignore-all-space&lt;br /&gt;             Ignore white space when comparing lines.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --ignore-blank-lines&lt;br /&gt;             Ignore changes that just  insert  or  delete  blank lines.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --ignore-case&lt;br /&gt;             Ignore  changes in case; consider upper- and lower-case to be the same.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --ignore-matching-lines=regexp&lt;br /&gt;             Ignore changes that just  insert  or  delete  lines that match regexp.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --ignore-space-change&lt;br /&gt;             Ignore changes in amount of white space.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --initial-tab&lt;br /&gt;             Output a tab rather than a space before the text of a line in normal or context  format.   This  causes the alignment of tabs in the line to look normal. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -l     Pass the output through pr to paginate it.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -L label&lt;br /&gt;      --label=label&lt;br /&gt;             Use label instead of the file name in the context format and unified format headers.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --left-column&lt;br /&gt;             Print only the left column of two common  lines in side by side format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --line-format=format&lt;br /&gt;             Use  format  to  output all input lines in in-then-else format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --minimal&lt;br /&gt;             Change the algorithm to perhaps find a smaller  set of changes.  This makes diff slower (sometimes much slower).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -n     Output RCS-format diffs; like -f except  that  each command specifies the number of lines affected.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -N&lt;br /&gt;      --new-file&lt;br /&gt;             In directory comparison, if a file is found in only one directory, treat it as present but empty in the other directory.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --new-group-format=format&lt;br /&gt;             Use  format  to  output a group of lines taken from just the second file in if-then-else format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --new-line-format=format&lt;br /&gt;             Use format to output a line  taken  from  just  the second file in if-then-else format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --old-group-format=format&lt;br /&gt;             Use  format  to  output a group of lines taken from just the first file in if-then-else format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --old-line-format=format&lt;br /&gt;             Use format to output a line  taken  from  just  the first file in if-then-else format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -p     Show which C function each change is in.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -P     When  comparing directories, if a file appears only in the second directory of the  two,  treat  it  as present but empty in the other.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --paginate&lt;br /&gt;             Pass the output through pr to paginate it.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -q     Report  only  whether  the  files  differ,  not the details of the differences.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -r     When comparing directories, recursively compare any subdirectories found.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --rcs  Output  RCS-format  diffs; like -f except that each command specifies the number of lines affected.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --recursive&lt;br /&gt;             When comparing directories, recursively compare any subdirectories found.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --report-identical-files&lt;br /&gt;      -s     Report when two files are the same.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -S file&lt;br /&gt;             When  comparing  directories,  start  with the file file.  This is used for resuming an aborted comparison.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --sdiff-merge-assist&lt;br /&gt;             Print extra information to help sdiff.  sdiff uses this option when it runs diff.  This option is  not intended for users to use directly. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --show-c-function&lt;br /&gt;             Show which C function each change is in.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --show-function-line=regexp&lt;br /&gt;             In  context  and  unified  format, for each hunk of differences, show some of the last  preceding  line that matches regexp.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --side-by-side&lt;br /&gt;             Use the side by side output format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --speed-large-files&lt;br /&gt;             Use  heuristics  to  speed  handling of large files that have numerous scattered small changes.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --starting-file=file&lt;br /&gt;             When comparing directories,  start  with  the  file file.  This is used for resuming an aborted comparison.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --suppress-common-lines&lt;br /&gt;             Do not print common lines in side by side format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -t     Expand tabs to spaces in the  output,  to  preserve the alignment of tabs in the input files.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -T     Output a tab rather than a space before the text of a line in normal or context  format.   This  causes the alignment of tabs in the line to look normal.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --text Treat  all  files as text and compare them line-by-line, even if they do not appear to be text.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -u     Use the unified output format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --unchanged-group-format=format&lt;br /&gt;             Use format to output a group of common lines  taken from both files in if-then-else format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --unchanged-line-format=format&lt;br /&gt;             Use format to output a line common to both files in if-then-else format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       --unidirectional-new-file&lt;br /&gt;             When comparing directories, if a file appears  only in  the  second  directory  of the two, treat it as present but empty in the other. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -U lines&lt;br /&gt;      --unified[=lines]&lt;br /&gt;             Use the unified output format,  showing  lines  (an integer) lines of context, or three if lines is not given.  For proper operation, patch typically needs  at least two lines of context.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -v&lt;br /&gt;      --version&lt;br /&gt;             Output the version number of diff.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -w     Ignore white space when comparing lines.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -W columns&lt;br /&gt;      --width=columns&lt;br /&gt;             Use an output width of columns in side by side format.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -x pattern&lt;br /&gt;             When comparing directories, ignore files and subdirectories whose basenames match pattern.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -X file&lt;br /&gt;             When comparing directories, ignore files and subdirectories whose basenames match  any  pattern  contained in file.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       -y     Use the side by side output format.&lt;br /&gt;In the simplest case, diff compares the contents of the two files from-file and to-file. A file name of - stands for text read from the standard input. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;If from-file is a directory and to-file is not, diff compares the file in from-file whose file name is that of to-file, and vice versa. The non-directory file must not be -. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;If both from-file and to-file are directories, diff compares corresponding files in both directories, in alphabetical order; this comparison is not recursive unless the -r or --recursive option is given. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;GNU `diff' can show whether files are different without detailing the differences.&lt;br /&gt;It also provides ways to suppress certain kinds of differences that are not important to you. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Most commonly, such differences are changes in the amount of white space between words or lines. `diff' also provides ways to suppress differences in alphabetic case or in lines that match a regular expression that you provide. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;These options can accumulate; for example, you can ignore changes in both white space and alphabetic case.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;End -of-Line markers&lt;br /&gt;In operating systems that distinguish between text and binary files, `diff' normally reads and writes all data as text. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Use the `--binary' option to force `diff' to read and write binary data instead. This option has no effect on a Posix-compliant system like GNU or traditional Unix. However, many personal computer operating systems represent the end of a line with a carriage return followed by a newline. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;On such systems, `diff' normally ignores these carriage returns on input and generates them at the end of each output line, but with the `--binary' option `diff' treats each carriage return as just another input character, and does not generate a carriage return at the end of each output line. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;This can be useful when dealing with non-text files that are meant to be interchanged with Posix-compliant systems.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Suppressing Differences in Blank and Tab Spacing&lt;br /&gt;The `-b' and `--ignore-space-change' options ignore white space at line end, and considers all other sequences of one or more white space characters to be equivalent.&lt;br /&gt;With these options, `diff' considers the following two lines to be equivalent, where `$' denotes the line end: &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Here lyeth muche rychnesse in lytell space. -- John Heywood$&lt;br /&gt;Here lyeth muche rychnesse in lytell space. -- John Heywood $ &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The `-w' and `--ignore-all-space' options are stronger than `-b'. They ignore difference even if one file has white space where the other file has none. "White space" characters include tab, newline, vertical tab, form feed, carriage return, and space; some locales may define additional characters to be white space.&lt;br /&gt;With these options, `diff' considers the following two lines to be equivalent, where `$' denotes the line end and `^M' denotes a carriage return: &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Here lyeth muche rychnesse in lytell space.-- John Heywood$&lt;br /&gt;He relyeth much erychnes seinly tells pace. --John Heywood&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;GNU `diff' can treat lowercase letters as equivalent to their uppercase counterparts, so that, for example, it considers `Funky Stuff', `funky STUFF', and `fUNKy stuFf' to all be the same.&lt;br /&gt;To request this, use the `-i' or `--ignore-case' option. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Suppressing Lines Matching a Regular Expression&lt;br /&gt;To ignore insertions and deletions of lines that match a regular expression, use the `-I REGEXP' or `--ignore-matching-lines&lt;wbr&gt;=REGEXP' option.&lt;br /&gt;You should escape regular expressions that contain shell metacharacters to prevent the shell from expanding them.  &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;For example, `diff -I '^[0-9]'' ignores all changes to lines beginning with a digit. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;However, `-I' only ignores the insertion or deletion of lines that contain the regular expression if every changed line in the hunk--every insertion and every deletion--matches the regular expression. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;In other words, for each nonignorable change, `diff' prints the complete set of changes in its vicinity, including the ignorable ones. You can specify more than one regular expression for lines to ignore by using more than one `-I' option. `diff' tries to match each line against each regular expression, starting with the last one given. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Summarizing Which Files Differ&lt;br /&gt;When you only want to find out whether files are different, and you don't care what the differences are, you can use the summary output format.&lt;br /&gt;In this format, instead of showing the differences between the files, `diff' simply reports whether files differ.&lt;br /&gt;The `-q' and `--brief' options select this output format.&lt;br /&gt;This format is especially useful when comparing the contents of two directories. It is also much faster than doing the normal line by line comparisons, because `diff' can stop analyzing the files as soon as it knows that there are any differences.&lt;br /&gt;You can also get a brief indication of whether two files differ by using `cmp'. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Using diff to patch a file&lt;br /&gt;To show context around the differing lines GNU `diff' provides these output formats &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Normal Format: An output format that shows each hunk of differences without any surrounding context&lt;br /&gt;Context Format:: An output format that shows surrounding lines.&lt;br /&gt;Unified Format:: A more compact output format that shows context. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`patch' can apply diffs by searching in the files for the lines of context around the differing lines; if those lines are actually a few lines away from where the diff says they are, `patch' can adjust the line numbers accordingly and still apply the diff correctly. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;For more on patching files and producing commands that direct the `ed' text editor to edit a file - see `info diff'&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;crontab (cron table)&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Schedule a command to run at a later time&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     crontab [ -u user ] file&lt;br /&gt;     crontab [ -u user ] { -l | -r | -e }&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Key&lt;br /&gt;  -l  List - display the current crontab entries.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -r  Remove the current crontab.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -e  Edit the current crontab using the editor specified by the&lt;br /&gt;      VISUAL or EDITOR environment variables.&lt;br /&gt;      After you exit from the editor, the modified crontab will be installed automatically.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Crontab is the program used to install, deinstall or list the tables used to drive the cron daemon in Vixie Cron.&lt;br /&gt;Each user can have their own crontab, and though these are files in /var, they are not intended to be edited directly. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;If the -u option is given, it specifies the name of the user whose crontab is to be tweaked. If this option is not given, crontab examines "your" crontab, i.e., the crontab of the person executing the command. Note that su can confuse crontab and that if you are running inside of su you should always use the -u option for safety's sake. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;cron file is used to install a new crontab from some named file or standard input if the pseudo-filename `-' is given.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Each line in the cron table follows the following format: 7 fields left to right &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Field Meaning&lt;br /&gt;1 Minute (0-59)&lt;br /&gt;2 Hour (2-24)&lt;br /&gt;3 Day of month (1-31)&lt;br /&gt;4 Month (1-12, Jan, Feb, ...)&lt;br /&gt;5 Day of week (0-6) 0=Sunday, 1=Monday ...&lt;br /&gt;or Sun, Mon, Tue, Wed, Thur, Fri&lt;br /&gt;6 User that the command will run as&lt;br /&gt;7 Command to execute &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;There are several ways of specifying multiple values in a field:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;• The comma (',') operator specifies a list of values, for example: "1,3,4,7,8"&lt;br /&gt;• The dash ('-') operator specifies a range of values, for example: "1-6", which is equivalent to "1,2,3,4,5,6"&lt;br /&gt;• The asterisk ('*') operator specifies all possible values for a field. e.g. every hour or every day.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;There is also an operator which some extended versions of cron support, the slash ('/') operator, which can be used to skip a given number of values. For example, "*/3" in the hour time field is equivalent to "0,3,6,9,12,15,18,21"; "*" specifies 'every hour' but the "/3" means that only the first, fourth, seventh...and such values given by "*" are used. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Cron will email to the user all output of the commands it runs, to silence this, redirect the output to a log file or to /dev/null&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="font-style: italic; text-align: justify;"&gt;Example&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Run /usr/bin/somecommand at 12.59 every day and supress the output (redirect to null) &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;59 12 * * * simon /usr/bin/somecommand &gt;&gt; /dev/null 2&gt;&amp;1&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Permissions&lt;br /&gt;If the allow file exists, then you must be listed therein in order to be allowed to use this command. If the allow file does not exist but the deny file does exist, then you must not be listed in the deny file in order to use this command. If neither of these files exists, then depending on site-dependent configuration parameters, only the super user will be allowed to use this command, or all users will be able to use this command. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;dircolors&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Color setup for `ls', outputs a sequence of shell commands to set up the terminal for color output from `ls' (and `dir', etc.).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;      eval `dircolors [options]... [file]`&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;If FILE is specified, `dircolors' reads it to determine which colors to use for which file types and extensions. Otherwise, a precompiled&lt;br /&gt;database is used. For details on the format of these files, run `dircolors --print-database'. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The output is a shell command to set the `LS_COLORS' environment variable. You can specify the shell syntax to use on the command line, or `dircolors' will guess it from the value of the `SHELL' environment variable.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS  &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-b'&lt;br /&gt;`--sh'&lt;br /&gt;`--bourne-shell'&lt;br /&gt;    Output Bourne shell commands.  This is the default if the `SHELL' environment variable is set and does not end with `csh' or `tcsh'.&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-c'&lt;br /&gt;`--csh'&lt;br /&gt;`--c-shell'&lt;br /&gt;    Output C shell commands.  This is the default if `SHELL' ends with `csh' or `tcsh'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-p'&lt;br /&gt;`--print-database'&lt;br /&gt;    Print the (compiled-in) default color configuration database.  This output is itself a valid configuration file, and is fairly descriptive of the possibilities.&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;dirs&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Display the list of currently remembered directories. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     dirs [+N | -N] [-clpv]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS&lt;br /&gt;    +N   Displays the Nth directory (counting from the left of the list&lt;br /&gt;         printed by dirs when invoked without options), starting with&lt;br /&gt;         zero. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     -N   Displays the Nth directory (counting from the right of the list&lt;br /&gt;         printed by dirs when invoked without options), starting with&lt;br /&gt;         zero.  &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     -c   Clears the directory stack by deleting all of the elements. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     -l   Produces a longer listing; the default listing format uses a tilde to denote&lt;br /&gt;         the home directory.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     -p   Causes dirs to print the directory stack with one entry per&lt;br /&gt;         line.&lt;br /&gt;    -v   Causes dirs to print the directory stack with one entry per&lt;br /&gt;         line, prefixing each entry with its index in the stack.&lt;br /&gt;Description&lt;br /&gt;Equivalent to `ls -C -b'; that is,by default files are listed in columns, sorted vertically, and special characters are represented by backslash escape sequences. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;du&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Estimate file space usage, reports the amount of disk space used by the specified files and for each subdirectory.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;br /&gt;SYNTAX&lt;br /&gt;     du [options]... [file]...&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;With no arguments, `du' reports the disk space for the current directory. Normally the disk space is printed in units of 1024 bytes, but this can be overridden&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-a'&lt;br /&gt;`--all'&lt;br /&gt;    Show counts for all files, not just directories.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-b'&lt;br /&gt;`--bytes'&lt;br /&gt;    Print sizes in bytes, overriding the default block size (*note Block size::).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-c'&lt;br /&gt;`--total'&lt;br /&gt;    Print a grand total of all arguments after all arguments have been processed.  This can be used to find out the total disk usage of a given set of files or directories.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-D'&lt;br /&gt;`--dereference-args'&lt;br /&gt;    Dereference symbolic links that are command line arguments.  Does not affect other symbolic links.  This is helpful for finding out the disk usage of directories, such as `/usr/tmp', which are often symbolic links.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-h'&lt;br /&gt;`--human-readable'&lt;br /&gt;    Append a size letter such as `M' for megabytes to each size. Powers of 1024 are used, not 1000; `M' stands for 1,048,576 bytes. Use the `-H' or `--si' option if you prefer powers of 1000. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-H'&lt;br /&gt;`--si'&lt;br /&gt;    Append a size letter such as `M' for megabytes to each size.  (SI is the International System of Units, which defines these letters as prefixes.)  Powers of 1000 are used, not 1024; `M' stands for&lt;br /&gt;    1,000,000 bytes.  Use the `-h' or `--human-readable' option if you&lt;br /&gt;    prefer powers of 1024.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-k'&lt;br /&gt;`--kilobytes'&lt;br /&gt;    Print sizes in 1024-byte blocks, overriding the default block size&lt;br /&gt;    (*note Block size::).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-l'&lt;br /&gt;`--count-links'&lt;br /&gt;    Count the size of all files, even if they have appeared already&lt;br /&gt;    (as a hard link).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-L'&lt;br /&gt;`--dereference'&lt;br /&gt;    Dereference symbolic links (show the disk space used by the file or directory that the link points to instead of the space used by the link).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`--max-depth=DEPTH'&lt;br /&gt;    Show the total for each directory (and file if -all) that is at most MAX_DEPTH levels down from the root of the hierarchy.  The root is at level 0, so `du --max-depth=0' is equivalent to `du -s'. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-m'&lt;br /&gt;`--megabytes'&lt;br /&gt;    Print sizes in megabyte (that is, 1,048,576-byte) blocks.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-s'&lt;br /&gt;`--summarize'&lt;br /&gt;    Display only a total for each argument.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-S'&lt;br /&gt;`--separate-dirs'&lt;br /&gt;    Report the size of each directory separately, not including the sizes of subdirectories.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-x'&lt;br /&gt;`--one-file-system'&lt;br /&gt;    Skip directories that are on different filesystems from the one that the argument being processed is on.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`--exclude=PAT'&lt;br /&gt;    When recursing, skip subdirectories or files matching PAT.  For example, `du --exclude='*.o'' excludes files whose names end in `.o'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-X FILE'&lt;br /&gt;`--exclude-from=FILE'&lt;br /&gt;    Like `--exclude', except take the patterns to exclude from FILE, one per line.  If FILE is `-', take the patterns from standard input.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;On BSD systems, `du' reports sizes that are half the correct values for files that are NFS-mounted from HP-UX systems.  On HP-UX systems, it reports sizes that are twice the correct values for files that are NFS-mounted from BSD systems.  This is due to a flaw in HP-UX; it also affects the HP-UX `du' program.&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; echo&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Display message on screen, writes each given STRING to standard output, with a space between each and a newline after the last one.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;    echo [options]... [string]...&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-n'&lt;br /&gt;    Do not output the trailing newline.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-E'&lt;br /&gt;    Disable the interpretation of the following backslash-escaped characters&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-e'&lt;br /&gt;    Enable interpretation of the following backslash-escaped&lt;br /&gt;    characters in each STRING:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\a'          alert (bell)&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\b'          backspace&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\c'          suppress trailing newline&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\e'          escape      `\f'          form feed&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\n'          new line&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\r'          carriage return&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\t'          horizontal tab&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\v'          vertical tab&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\\'          backslash&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\NNN'&lt;br /&gt;         the character whose ASCII code is NNN (octal); if NNN is not&lt;br /&gt;         a valid octal number, it is printed literally.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    `\xnnn'           the character whose ASCII code is the hexadecimal value           nnn (one to three digits)&lt;br /&gt;echo is a BASH built-in command&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;factor&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Print prime factors&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;    factor [number]...&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     factor option&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;If no number is specified on the command line, `factor' reads numbers from standard input, delimited by newlines, tabs, or spaces.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Example:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;factor 369&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;output:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;369&lt;br /&gt;3&lt;br /&gt;3&lt;br /&gt;41 &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;find&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Search a folder hierarchy for filename(s) that meet a desired criteria.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     find [path...] [expression]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;find searches the directory tree rooted at each given file name by evaluating the given expression from left to right, according to the rules of precedence (see section OPERATORS), until the outcome is known (the left hand side is false for and operations, true for or), at which point find moves on to the next file name. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The first argument that begins with - ( ) , or ! is taken to be the beginning of the expression; any arguments before it are paths to search, and any arguments after it are the rest of the expression. If no paths are given, the current directory is used. If no expression is given, the expression `-print' is used. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;find exits with status 0 if all files are processed successfully, greater than 0 if errors occur.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;EXPRESSIONS&lt;br /&gt;The expression is made up of options (which affect overall operation rather than the processing of a specific file,&lt;br /&gt;and always return true), tests (which return a true or false value), and actions (which have side effects and&lt;br /&gt;return a true or false value), all separated by operators. -and is assumed where the operator is omitted. If the&lt;br /&gt;expression contains no actions other than -prune, -print is performed on all files for which the expression is&lt;br /&gt;true.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS&lt;br /&gt;All options always return true. They always take effect, rather than being processed only when their place in the&lt;br /&gt;expression is reached. Therefore, for clarity, it is best to place them at the beginning of the expression. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;-daystart&lt;br /&gt;Measure times (for -amin,  -atime,  -cmin,  -ctime,-mmin,&lt;br /&gt;and  -mtime)  from  the  beginning of today&lt;br /&gt;rather than from 24 hours ago.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;-depth&lt;br /&gt;Process each directory's contents before the directory itself.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;-follow&lt;br /&gt;Dereference symbolic links.  Implies -noleaf.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;-help, --help&lt;br /&gt;Print  a  summary of the command-line usage of find and exit.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;-maxdepth levels&lt;br /&gt;Descend at most  levels  (a  non-negative  integer)  levels  of directories below the command line arguments.  `-maxdepth 0' means only  apply  the  tests  and actions to the command line arguments.&lt;br /&gt;&lt;br /&gt;mindepth levels&lt;br /&gt;Do  not  apply  any tests or actions at levels less  than levels (a non-negative  integer).   `-mindepth  1'  means process all files except the command line  arguments.&lt;br /&gt;&lt;br /&gt;mount   Don't descend directories on other filesystems.  An  alternate  name  for  -xdev, for compatibility with  some other versions of find.&lt;br /&gt;&lt;br /&gt;noleaf&lt;br /&gt;Do not optimize by assuming that  directories  contain  2  fewer  subdirectories than their hard link count.   This  option  is  needed  when   searching  filesystems  that do not follow the Unix directory- link convention, such as CD-ROM or MS-DOS  filesys tems or AFS volume mount points.  Each directory on  a normal Unix filesystem has at least 2 hard links:  its  name  and  its  `.'  entry.  Additionally, its  subdirectories (if any) each  have  a  `..'   entry  linked to that directory.  When find is examining a  directory, after it has statted 2 fewer subdirectories than the directory's link count, it knows that  the rest of the entries in the directory  are  non-&lt;br /&gt;directories  (`leaf'  files in the directory tree).&lt;br /&gt;If only the files' names need to be examined, there  is  no  need to stat them; this gives a significant  increase in search speed.&lt;br /&gt;&lt;br /&gt;-version, --version&lt;br /&gt;Print the find version number and exit.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;-xdev   Don't descend directories on other filesystems.&lt;br /&gt;&lt;br /&gt;TESTS&lt;br /&gt;Numeric arguments can be specified as&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    +n     for greater than n,&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -n     for less than n,&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     n     for exactly n.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -amin n&lt;br /&gt;          File was last accessed n minutes ago.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -anewer file&lt;br /&gt;          File was last accessed more recently than file  was modified.   -anewer  is affected by -follow only if-follow comes before -anewer on the command line.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -atime n&lt;br /&gt;          File was last accessed n*24 hours ago.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -cmin n&lt;br /&gt;          File's status was last changed n minutes ago.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -cnewer file&lt;br /&gt;          File's status was last changed more  recently  than file  was modified.  -cnewer is affected by -follow only if -follow comes before -cnewer on the command line.       &lt;br /&gt;   -ctime n&lt;br /&gt;          File's status was last changed n*24 hours ago.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -empty File is empty and is either a regular file or a directory.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -false Always false.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -fstype type&lt;br /&gt;          File is on a filesystem of type type.   The  valid filesystem  types  vary among different versions of Unix; an incomplete list of filesystem  types  that are accepted on some version of Unix or another is:&lt;br /&gt;          ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K.  You  can use  -printf with the %F directive to see the types of your filesystems. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -gid n File's numeric group ID is n.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -group gname&lt;br /&gt;          File belongs to group gname (numeric  group  ID    &lt;br /&gt;          allowed).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -ilname pattern&lt;br /&gt;          Like -lname, but the match is case insensitive.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -iname pattern&lt;br /&gt;          Like -name, but the match is case insensitive.  For example, the patterns `fo*'  and  `F??'  match  the file names `Foo', `FOO', `foo', `fOo', etc.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -inum n&lt;br /&gt;          File has inode number n.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -ipath pattern&lt;br /&gt;          Like -path, but the match is case insensitive.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -iregex pattern&lt;br /&gt;          Like -regex, but the match is case insensitive.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -links n&lt;br /&gt;          File has n links.&lt;br /&gt;                         &lt;br /&gt;   -lname pattern&lt;br /&gt;          File  is a symbolic link whose contents match shell pattern pattern.  The metacharacters do  not  treat `/' or `.' specially.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -mmin n&lt;br /&gt;          File's data was last modified n minutes ago.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -mtime n&lt;br /&gt;          File's data was last modified n*24 hours ago.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -name pattern&lt;br /&gt;          Base of file name (the path with the leading directories removed) matches shell pattern pattern.  The metacharacters  (`*', `?', and `[]') do not match a `.' at the start of the base  name.   To  ignore  a directory  and  the files under it, use -prune; see an example in the description of -path.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -newer file                          &lt;wbr&gt;          &lt;br /&gt;          File was modified more recently than file.   -newer is affected by -follow only if -follow comes before -newer on the command line. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -nouser&lt;br /&gt;          No user corresponds to file's numeric user ID.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -nogroup&lt;br /&gt;          No group corresponds to file's numeric group ID.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;    -path pattern&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;traceroute&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Print the route packets take to network host.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     traceroute [options] host [packetsize]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -d        Turn on socket-level debugging.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -g addr   Enable the IP LSRR (Loose Source Record Route) option in addition to the TTL tests, to ask how someone at IP address addr can reach a particular target.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -l        Include the time-to-live value for each packet received.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -m max_ttl  Set maximum time-to-live used in outgoing probe packets to max-ttl hops. Default is 30 hops.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -n        Show numerical addresses; do not look up hostnames.&lt;br /&gt;            (Useful if DNS is not functioning properly.)&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -p port   Set base UDP port number used for probe packets to port.&lt;br /&gt;            Default is (decimal) 33434.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -q n      Set number of probe packets for each time-to-live setting to the value n.&lt;br /&gt;            Default is 3.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -r        Bypass normal routing tables and send directly to a host on an&lt;br /&gt;            attached network.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -s src_addr&lt;br /&gt;            Use src_addr as the IP address that will serve as the source address&lt;br /&gt;            in outgoing probe packets.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -t tos    Set the type-of-service in probe packets to tos (default 0).&lt;br /&gt;            The value must be a decimal integer in the range 0 to 255.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -v        Verbose-received ICMP packets (other than TIME_EXCEEDED and PORT_UNREACHABLE)&lt;br /&gt;            will be listed.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -w wait   Set time to wait for a response to an outgoing probe packet to wait&lt;br /&gt;            seconds (default is 3 seconds).&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;units&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Convert units from one scale to another. The units are defined in an external data file. You can use the extensive data file that comes with this program, or you can provide your own data file to suit your needs. You can use the program interactively with prompts, or you can use it from the command line. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     units options [FROM-UNIT [TO-UNIT]]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-c'&lt;br /&gt;`--check'&lt;br /&gt;    Check that all units and prefixes defined in the units file reduce to primitive units.  The program will print a list of all units that cannot be reduced.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`--check-verbose'&lt;br /&gt;    Like the `-check' option, this option prints a list of units that cannot be reduced.  But to help find unit  definitions that cause endless loops, it lists the units as they are checked.  If `units'&lt;br /&gt;hangs, then the last unit to be printed has a bad definition.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-o format'&lt;br /&gt;`--output-format format'&lt;br /&gt;    Use the specified format for numeric output.  Format is the same as that for the printf function in the ANSI C standard.  For example, if you want more precision you might use `-o %.15g'. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-f filename'&lt;br /&gt;`--file filename'&lt;br /&gt;    Use filename as the units data file rather than the default units data file `units.dat'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-h'&lt;br /&gt;`--help'&lt;br /&gt;    Print out a summary of the options for `units'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-q'&lt;br /&gt;`--quiet'&lt;br /&gt;`--silent'&lt;br /&gt;    Suppress prompting of the user for units and the display of statistics about the number of units loaded.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-s'&lt;br /&gt;`--strict'&lt;br /&gt;    Suppress conversion of units to their reciprocal units.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-v'&lt;br /&gt;`--verbose'&lt;br /&gt;    Give slightly more verbose output when converting units.  When combined with the `-c' option this gives the same effect as `--check-verbose'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;`-V'&lt;br /&gt;`--version'&lt;br /&gt;    Print program version number, tell whether the readline library has been included, and give the location of the default units data file.&lt;br /&gt;To invoke units for interactive use, type `units' at your shell prompt. The program will print something like this:&lt;br /&gt;1161 units, 53 prefixes&lt;br /&gt;You have: &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;At the `You have:' prompt, type the quantity and units that you are converting *from*. For example, if you want to convert ten meters to feet, type `10 meters'. Next, `units' will print `You want:'. You should type the type of units you want to convert *to*. To convert to feet, you would type `feet'. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The answer will be displayed in two ways. The first line of output, which is marked with a `*' to indicate multiplication, gives the result of the conversion you have asked for. The second line of output, which is marked with a `/' to indicate division, gives the inverse of the conversion factor. If you convert 10 meters to feet, `units' will print &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;* 32.808399&lt;br /&gt;/ 0.03048 &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;which tells you that 10 meters equals about 32.8 feet. The second number gives the conversion in the reverse direction.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The `units' program can perform units conversions non-interactively from the command line. To do this, type the command, type the original units expression, and type the new units you want. You will probably need to protect the units expressions from interpretation by the shell using single quote characters.&lt;br /&gt;If you type &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;units '2 liters' 'quarts' &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;then `units' will print &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;* 2.1133764&lt;br /&gt;/ 0.47317647 &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;and then exit. The output tells you that 2 liters is about 2.1 quarts, or alternatively that a quart is about 0.47 times 2 liters.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Unit expressions&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   In order to enter more complicated units or fractions, you will need to use operations such as powers, products and division.  Powers of units can be specified using the `^' character as shown in the following example, or by simple concatenation: `cm3' is equivalent to `cm^3'.  If the exponent is more than one digit, the `^' is required.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;         You have: cm^3&lt;br /&gt;        You want: gallons&lt;br /&gt;                * 0.00026417205&lt;br /&gt;                / 3785.4118&lt;br /&gt;  &lt;br /&gt;        You have: arabicfoot-arabictradepound&lt;wbr&gt;-force&lt;br /&gt;        You want: ft lbf&lt;br /&gt;                * 0.7296&lt;br /&gt;                / 1.370614&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   Multiplication of units can be specified by using spaces, a hyphen (`-') or an asterisk (`*').  Division of units is indicated by the&lt;br /&gt;slash (`/').&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;         You have: furlongs/fortnight&lt;br /&gt;        You want: m/s&lt;br /&gt;                * 0.00016630986&lt;br /&gt;                / 6012.8727&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   Multiplication has a higher precedence than division and is evaluated left to right, so `m/s * s/day' is equivalent to `m / s s day' and has dimensions of length per time cubed.  In effect, the first `/' character marks the beginning of the denominator of your unit.  In particular, this means that writing `1/2 meter' refers to a unit of reciprocal length equivalent to .5/meter, which is probably not what you would intend if you entered that expression.  To indicate division&lt;br /&gt;of numbers, use the vertical dash (`|').  No spaces area permitted on either side of the vertical dash character.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;         You have: 1|2 inch&lt;br /&gt;        You want: cm&lt;br /&gt;                * 1.27&lt;br /&gt;                / 0.78740157&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   Prefixes are defined separately from base units.  In order to get centimeters, the units database defines `centi-' and `c-' as prefixes. Prefixes can appear alone with no unit following them.  An exponent applies only to the immediately preceding unit and its prefix so that&lt;br /&gt;`cm^3' or `centimeter^3' refer to cubic centimeters but `centi-meter^3' refers to hundredths of cubic meters.  Only one prefix is permitted per unit, so `micromicrofarad' will fail, but `micro-microfarad' will work.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   For `units', numbers are just another kind of unit.  They can appear as many times as you like and in any order in a unit expression.  For example, to find the volume of a box which is 2 ft by 3 ft by 12 ft in steres, you could do the following:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;         You have: 2 ft 3 ft 12 ft&lt;br /&gt;        You want: stere&lt;br /&gt;                * 2.038813&lt;br /&gt;                / 0.49048148&lt;br /&gt;  &lt;br /&gt;        You have: $ 5 / yard&lt;br /&gt;        You want: cents / inch&lt;br /&gt;                *  13.888889&lt;br /&gt;                / 0.072&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;And the second example shows how the dollar sign in the units conversion can precede the five.  Be careful:  `units' will interpret `$5' with no space as equivalent to dollars^5.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   Outside of the SI system, it is often desirable to add values of different units together.  Sums of conformable units are written with the `+' character.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;         You have: 2 hours + 23 minutes + 32 seconds&lt;br /&gt;        You want: seconds&lt;br /&gt;                * 8612&lt;br /&gt;                / 0.00011611705&lt;br /&gt;  &lt;br /&gt;        You have: 12 ft + 3 in&lt;br /&gt;        You want: cm&lt;br /&gt;                * 373.38&lt;br /&gt;                / 0.0026782366&lt;br /&gt;  &lt;br /&gt;        You have: 2 btu + 450 ft-lbf&lt;br /&gt;        You want: btu&lt;br /&gt;                * 2.5782804&lt;br /&gt;                / 0.38785542&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The expressions which are added together must reduce to identical expressions in primitive units, or an error message will be displayed:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;         You have: 12 printerspoint + 4 heredium&lt;br /&gt;        Illegal sum of non-conformable units:&lt;br /&gt;                12 printerspoint reduces to 0.0042175176 m&lt;br /&gt;                4 heredium reduces to 20145.828 m^2 &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Because `-' is used for products, it cannot  also be used to form differences of units.  If a `-' appears before numerical digits as the very first character on the input line or if it appears immediately after a `+' then the number will be evaluated as a negative number.  So  you can compute 20 degrees minus 12 minutes by entering `20 degrees+-12 arcmin'.  The `+' character is sometimes used in exponents like `3.43e+8'.  Exponents of this form cannot be used when forming sums of units, but they may be used otherwise. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Unit definitions&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   The conversion information is read from a units data file which is called `units.dat' and is probably located in the `/usr/local/share' directory.  If you invoke `units' with the `-V' option, it will print the location of this file.  The default file includes definitions for all familiar units, abbreviations and metric prefixes.  It also includes many obscure or archaic units.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   Many constants of nature are defined, including these:&lt;br /&gt;    pi          ratio of circumference to diameter&lt;br /&gt;    c           speed of light&lt;br /&gt;    e           charge on an electron&lt;br /&gt;    force       acceleration of gravity&lt;br /&gt;    mole        Avogadro's number&lt;br /&gt;    water       pressure per unit height of water&lt;br /&gt;    Hg          pressure per unit height of mercury&lt;br /&gt;    au          astronomical unit&lt;br /&gt;    k           Boltzman's constant&lt;br /&gt;    mu0         permeability of vacuum&lt;br /&gt;    epsilon0    permitivity of vacuum&lt;br /&gt;    G           Gravitational constant&lt;br /&gt;    mach        speed of sound&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The database includes atomic masses for all of the elements and numerous other constants.  Also included are the densities of various ingredients used in baking so that `2 cups flour_sifted' can be converted to `grams'.  This is not an exhaustive list.  Consult the units data file to see the complete list, or to see the definitions that are used.&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   The unit `pound' is a unit of mass.  To get force, multiply by the force conversion unit `force' or use the shorthand `lbf'.  (Note that `g' is already taken as the standard abbreviation for the gram.)  The unit `ounce' is also a unit of mass.  The fluid ounce is `fluidounce' or `floz'.  British capacity units that differ from their US counterparts, such as the British Imperial gallon, are prefixed with `br'.  Currency is prefixed with its country name: `belgiumfranc', `britainpound'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   The US Survey foot, yard, and mile can be obtained by using the `US' prefix.  These units differ slightly from the international length units.  They were in use until 1959, but for geographic surveys, they are still used.  The acre is officially defined in terms of the US&lt;br /&gt;Survey foot.  If you want an acre defined according to the international foot, use `intacre'.  The difference between these units is about 4 parts per million.  The British also used a slightly&lt;br /&gt;different length measure before 1959.  These can be obtained with the prefix `UK'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   When searching for a unit, if the specified string does not appear exactly as a unit name, then the `units' program will try to remove a trailing `s' or a trailing `es'.  If that fails, `units' will check for a prefix.  All of the standard metric prefixes are defined.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   To find out what units and prefixes are available, read the standard units data file.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;All of the units and prefixes that `units' can convert are defined in the units data file.&lt;br /&gt;&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;useradd&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Create new user accounts or update default account information.&lt;br /&gt;Unless invoked with the -D option, user must be given. useradd will create new entries in system files. Home directories and initial files may also be created as needed. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     useradd [options] [user]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS&lt;br /&gt; -c comment    Comment field.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -d dir        Home directory.&lt;br /&gt;                   The default is to use user as the directory name&lt;br /&gt;                   under the home directory specified with the -D option.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -e date      Account expiration date.&lt;br /&gt;                   date is in the format MM/DD/YYYY.&lt;br /&gt;                   Two-digit year fields are also accepted.&lt;br /&gt;                   The value is stored as the number of days since January 1, 1970.&lt;br /&gt;                   This option requires the use of shadow passwords.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -f days       Permanently disable account this many days after the password has expired.&lt;br /&gt;                    A value of -1 disables this feature.&lt;br /&gt;                    This option requires the use of shadow passwords.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -g group     Initial group name or ID number.&lt;br /&gt;If a different default group has not been specified using the -D option, the default group is 1.&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;  -G groups  Supplementary groups given by name or number in a comma-separated&lt;br /&gt;                     list with no whitespace.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -k [dir]      Copy default files to user's home directory.&lt;br /&gt;                    Meaningful only when used with the -m option.&lt;br /&gt;                    Default files are copied from /etc/skel/ unless an alternate dir is specified. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -m              Make user's home directory if it does not exist.&lt;br /&gt;                    The default is not to make the home directory.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -o               Override. Accept a nonunique uid with the -u option. (Probably a bad idea.)&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -s shell       Login shell.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -u uid         Numerical user ID. The value must be unique unless the -o option is used.&lt;br /&gt;                    The default value is the smallest ID value greater than 99 and greater&lt;br /&gt;                    than every other uid. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -D [options]  Set or display defaults. If options are specified, set them.&lt;br /&gt;                    If no options are specified, display current defaults. The options are:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;                  -b dir        Home directory prefix to be used in creating home directories.&lt;br /&gt;                                   If the -d option is not used when creating an account, the&lt;br /&gt;                                  user name will be appended to dir. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;                 -e date        Expire date. Requires the use of shadow passwords.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;                 -f days        Number of days after a password expires to disable an account.&lt;br /&gt;                                    Requires the use of shadow passwords.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;                 -g group      Initial group name or ID number.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;                 -s shell         Default login shell.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;users&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Print login names of users currently logged in, print on a single line a blank-separated list of user names of users currently logged in to the current host.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     users [file]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;With no file argument, `users' extracts its information from the file `/var/run/utmp'. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;If a file argument is given, `users' uses that file instead. A common choice is `/var/run/wtmp'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The only options are `--help' and `--version'.&lt;br /&gt;Each user name corresponds to a login session, so if a user has more than one login session, that user's name will appear the same number of times in the output. &lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;______________________________&lt;wbr&gt;______________________________&lt;br /&gt;&lt;wbr style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;env&lt;/span&gt;&lt;br /&gt;Display, set, or remove environment variables, Run a command in a modified environment.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;br /&gt;SYNTAX&lt;br /&gt;    env [OPTION]... [NAME=VALUE]... [COMMAND [ARGS]...]&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;OPTIONS&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -u NAME&lt;br /&gt; --unset=NAME  Remove variable NAME from the environment, if it was in the environment.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  -&lt;br /&gt; -i    --ignore-environment Start with an empty environment, ignoring the  inherited enviornment. Arguments of the form `VARIABLE=VALUE' set the environment variable VARIABLE to value VALUE.  VALUE may be empty (`VARIABLE='). Setting a variable to an empty value is different from unsetting it.&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The first remaining argument specifies the program name to invoke; it is searched for according to the `PATH' environment variable. Any remaining arguments are passed as arguments to that program.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;If no command name is specified following the environment specifications, the resulting environment is printed. This is like specifying a command name of `printenv'. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;watch&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Execute a program periodically, showing output full screen&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;SYNTAX&lt;br /&gt;     watch [options] command command_options&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Options&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -n --interval=n                  Specify an interval to run command&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -d --differences[=cumulative]]         Highlight the differences between successive updates&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -h --help        Display Help&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   -v --version     Display version&lt;br /&gt;watch runs command repeatedly, displaying its output (the first screenfull). This allows you to watch the program output change over time. By default, the program is run every 2 seconds. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The --cumulative option makes highlighting "sticky", presenting a running display of all positions that have ever changed.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;watch will run until interrupted.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Note that command is given to "sh -c" which means that you may need to use extra quoting to get the desired effect.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;POSIX option processing is used (i.e., option processing stops at the first non-option argument). This means that command_options don't get interpreted by watch itself.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;EXAMPLES&lt;/span&gt;&lt;br /&gt;      To watch for mail, you might do&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;              watch -n 60 from&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       To watch the contents of a directory change, you could use&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;              watch -d ls -l&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       If  you're only interested in files owned by user joe, you&lt;br /&gt;      might use&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;              watch -d 'ls -l | fgrep joe'&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       To see the effects of quoting, try these out&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;              watch echo $$&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;              watch echo '$$'&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;              watch echo "'"'$$'"'"&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       You can watch for your administrator to install the latest&lt;br /&gt;      kernel with&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;              watch uname -r&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       (Just kidding.)&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;Bugs&lt;/span&gt;&lt;br /&gt;Upon terminal resize, the screen will not be correctly repainted until the next scheduled update. All differences highlighting is lost on that update as well.&lt;br /&gt;Non-printing characters are stripped from program output. Use "cat -v" as part of the command pipeline if you want to see them.&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Date&lt;/span&gt;&lt;br /&gt;By default, date pads numeric fields with zeroes.  GNU date recognizes the following modifiers between `%' and a numeric directive.&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  `-' (hyphen) do not pad the field;  useful if the output is intended for human consumption.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;  `_' (underscore) pad the field with spaces; useful if you need a fixed number of characters in the output, but zeroes are too distracting.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The - and _ are GNU extensions.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   Here is an example illustrating the differences:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     date +%d/%m -d "Feb 1"&lt;br /&gt;    =&gt; 01/02&lt;br /&gt;    date +%-d/%-m -d "Feb 1"&lt;br /&gt;    =&gt; 1/2&lt;br /&gt;    date +%_d/%_m -d "Feb 1"&lt;br /&gt;    =&gt;  1/ 2&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Setting the time&lt;br /&gt;----------------&lt;br /&gt;If given an argument that does not start with `+', `date' sets the system clock to the time and date specified by that argument (as described below).  You must have appropriate privileges to set the  system clock.  The `--date' and `--set' options may not be used with such an argument.  The `--universal' option may be used with such an argument to indicate that the specified time and date are relative to Coordinated Universal Time rather than to the local time zone.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The argument must consist entirely of digits, which have the following meaning:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;MM     month&lt;br /&gt;DD     day within month&lt;br /&gt;HH     hour&lt;br /&gt;MM     minute&lt;br /&gt;CC     first two digits of year (optional)&lt;br /&gt;YY     last two digits of year (optional)&lt;br /&gt;SS     second (optional)&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;The `--set' option also sets the system clock; see the next section.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Examples of `date'&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * To print the date of the day before yesterday:&lt;br /&gt;         date --date='2 days ago'&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * To print the date of the day three months and one day hence:&lt;br /&gt;         date --date='3 months 1 day'&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * To print the day of year of Christmas in the current year:&lt;br /&gt;         date --date='25 Dec' +%j&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * To print the current full month name and the day of the month:&lt;br /&gt;         date '+%B %d'&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     But this may not be what you want because for the first nine days of the month, the `%d' expands to a zero-padded two-digit field, for example `date -d 1may '+%B %d'' will print `May 01'.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * Print a date without the leading zero for one-digit days of the month, you can use the (GNU extension) `-' modifier to suppress The padding altogether.&lt;br /&gt;         date -d=1may '+%B %-d'&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * Print the current date and time in the format required by many non-GNU versions of `date' when setting the system clock:&lt;br /&gt;         date +%m%d%H%M%Y.%S&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * Set the system date and time&lt;br /&gt;         date --set="2002-6-29 11:59 AM"   &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * Set the system clock forward by two minutes:&lt;br /&gt;         date --set='+2 minutes'&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * Print the date in the format specified by RFC-822, use `date&lt;br /&gt;    --rfc'.  I just did and saw this:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;          Mon, 25 Mar 1996 23:34:17 -0600&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * To convert a date string to the number of seconds since the epoch (which is 1970-01-01 00:00:00 UTC), use the `--date' option with The `%s' format.  That can be useful in sorting and/or graphing and/or comparing data by date.  The following command outputs the&lt;br /&gt;    number of the seconds since the epoch for the time one second later than the epoch, but in time zone five hours later (Cambridge, Massachusetts), thus a total of five hours and one second after the epoch:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;          date --date='1970-01-01 00:00:01 UTC +5 hours' +%s&lt;br /&gt;         18001&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     Suppose you had _not_ specified time zone information in the example above.  Then, date would have used your computer's idea of the time zone when interpreting the string.  Here's what you would get if you were in Greenwich, England:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;          # local time zone used&lt;br /&gt;         date --date='1970-01-01 00:00:01' +%s&lt;br /&gt;         1&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;   * If you're sorting or graphing dated data, your raw date values may be represented as seconds since the epoch.  But few people can look at the date `946684800' and casually note "Oh, that's the first second of the year 2000."&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;          date --date='2000-01-01 UTC' +%s&lt;br /&gt;         946684800&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     To convert such an unwieldy number of seconds back to a more readable form, use a command like this:&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;          date -d '1970-01-01 946684800 sec' +"%Y-%m-%d %T %z"&lt;br /&gt;         2000-01-01 00:00:00 +0000&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-116282377947587278?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/116282377947587278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=116282377947587278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/116282377947587278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/116282377947587278'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2006/11/some-cool-commands.html' title='Some Cool Commands.'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-116282150509648451</id><published>2006-11-06T05:55:00.000-08:00</published><updated>2006-11-06T05:58:25.343-08:00</updated><title type='text'>Lo</title><content type='html'>&lt;p style="font-weight: bold;"&gt;for&lt;/p&gt; &lt;p&gt;Expand words, and execute commands once for each member in the resultant list, with name bound to the current member.&lt;/p&gt; &lt;p&gt;SYNTAX&lt;br /&gt;      for name [in words ...]; do commands; done&lt;br /&gt;If `in words' is not present, the for command executes the commands once for each positional parameter that is set, as if `in "&lt;a href="mailto:$@%22%27" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; $@"'&lt;/a&gt; had been specified (see Positional Parameters below.)&lt;br /&gt;The return status is the exit status of the last command that executes. If there are no items in the expansion of words, no commands are executed, and the return status is zero. An alternate form of the for command is also supported:&lt;br /&gt;for (( expr1 ; expr2 ; expr3 )) ; do commands ; done&lt;br /&gt;First, the arithmetic expression expr1 is evaluated according to shell arithmetic expression rules. The arithmetic expression expr2 is then evaluated repeatedly until it evaluates to zero. &lt;/p&gt; &lt;p&gt;Each time expr2 evaluates to a non-zero value, commands are executed and the arithmetic expression expr3 is evaluated. If any expression is omitted, it behaves as if it evaluates to 1. &lt;/p&gt; &lt;p&gt;The return value is the exit status of the last command in list that is executed, or false if any of the expressions is invalid. &lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;Positional Parameters&lt;/span&gt;&lt;br /&gt;These are assigned from the shell's arguments when the shell is invoked, they can be reassigned using the set builtin command.&lt;br /&gt;Positional parameter N may be referenced as ${N}, or as $N when N consists of a single digit. $1, $2 etc  &lt;/p&gt; &lt;p style="font-style: italic;"&gt;Example&lt;/p&gt; &lt;p&gt;#! /bin/bash# List of manufacturersfor m in Apple Sony Panasonic "Hewlett Packard" Nokiado  echo "Manufacturer is:" $mdone&lt;/p&gt; &lt;p&gt;&lt;br /&gt;# The above could also be written as a single line...&lt;br /&gt;for m in Apple Sony Panasonic "Hewlett Packard" Nokia; do echo "Manufacturer is:" $m;done&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;__________________ &lt;/p&gt; &lt;p style="font-weight: bold;"&gt;case&lt;/p&gt; &lt;p&gt;Conditionally perform a command, case will selectively execute the command-list corresponding to the first pattern that matches word. &lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SYNTAX &lt;/span&gt;&lt;br /&gt;      case word in [ [(] pattern [| pattern]...) command-list ;;]... esac&lt;br /&gt;The `|' is used to separate multiple patterns, and the `)' operator terminates a pattern list. A list of patterns and an associated command-list is known as a clause. Each clause must be terminated with `;;'. &lt;/p&gt; &lt;p&gt;The word undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before matching is attempted. Each pattern undergoes tilde expansion, parameter expansion, command substitution, and arithmetic expansion. There may be an arbitrary number of case clauses, each terminated by a `;;'. The first pattern that matches determines the command-list that is executed. &lt;/p&gt; &lt;p&gt;Here is an example using case in a script that could be used to describe one interesting feature of an animal:&lt;br /&gt;echo -n "Enter the name of an animal: "&lt;br /&gt;read ANIMAL&lt;br /&gt;echo -n "The $ANIMAL has "&lt;br /&gt;case $ANIMAL in&lt;br /&gt;  horse | dog | cat) echo -n "four";;&lt;br /&gt;  man | kangaroo ) echo -n "two";;&lt;br /&gt;  *) echo -n "an unknown number of";;&lt;br /&gt;esac&lt;br /&gt;echo " legs."&lt;br /&gt;The return status is zero if no pattern is matched. Otherwise, the return status is the exit status of the command-list executed.&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;__________________&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;eval&lt;/p&gt; &lt;p&gt;Evaluate several commands/arguments&lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;SYNTAX&lt;/span&gt;&lt;br /&gt;      eval [arguments]&lt;br /&gt;The arguments are concatenated together into a single command, which is then read and executed, and its exit status returned as the exit status of eval. If there are no arguments or only empty arguments, the return status is zero. &lt;/p&gt; &lt;p&gt;eval is a POSIX `special' builtin&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;__________________&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;if&lt;/p&gt; &lt;p&gt;Conditionally perform a command. &lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;SYNTAX&lt;/span&gt;&lt;br /&gt;      if test-commands; then&lt;br /&gt;      consequent-commands;&lt;br /&gt;      [elif more-test-commands; then&lt;br /&gt;      more-consequents;]&lt;br /&gt;      [else alternate-consequents;]&lt;br /&gt;      fi&lt;br /&gt;The test-commands list is executed, and if its return status is zero, the consequent-commands list is executed. &lt;/p&gt; &lt;p&gt;If test-commands returns a non-zero status, each elif list is executed in turn, and if its exit status is zero, the corresponding more-consequents is executed and the command completes.&lt;/p&gt; &lt;p&gt;If `else alternate-consequents' is present, and the final command in the final if or elif clause has a non-zero exit status, then alternate-consequents is executed.&lt;/p&gt; &lt;p&gt;The return status is the exit status of the last command executed, or zero if no condition tested true.&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;__________________&lt;/p&gt;  &lt;p style="font-weight: bold;"&gt;while&lt;/p&gt; &lt;p&gt;Execute consequent-commands as long as test-commands has an exit status of zero&lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;SYNTAX&lt;/span&gt;&lt;br /&gt;      while test-commands; do consequent-commands; done&lt;br /&gt;The return status is the exit status of the last command executed in consequent-commands, or zero if none were executed.&lt;br /&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;______________________________&lt;wbr&gt;__________________ &lt;/p&gt; &lt;p style="font-weight: bold;"&gt;until&lt;/p&gt; &lt;p&gt;Execute consequent-commands as long as test-commands has an exit status which is not zero.&lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;SYNTAX&lt;/span&gt;&lt;br /&gt;      until test-commands; do consequent-commands; done&lt;br /&gt;The return status is the exit status of the last command executed in consequent-commands, or zero if none was executed.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-116282150509648451?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/116282150509648451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=116282150509648451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/116282150509648451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/116282150509648451'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2006/11/lo.html' title='Lo'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-116270851123369853</id><published>2006-11-04T22:33:00.000-08:00</published><updated>2006-11-04T22:35:12.180-08:00</updated><title type='text'>Shell scripts</title><content type='html'>&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_1"&gt;1. Alias&lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+1.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_1.1"&gt;1.1. Defining alias &lt;/a&gt;&lt;br /&gt;For commands that are used a lot, it's better to define an alias:&lt;br /&gt;  alias yourAlias='theRealCommand'&lt;br /&gt;For example, in the following case, the command 'l' will call 'ls -al':&lt;br /&gt;  alias l='ls -al'&lt;br /&gt;Note: The definition of the alias can be placed in .bashrc so that it will be defined for each new shell.&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+1.2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_1.2"&gt;1.2. Deleting alias &lt;/a&gt;&lt;br /&gt;To delete an alias, just call&lt;br /&gt;  unalias yourAlias&lt;br /&gt;For example, to delete the cp alias, call&lt;br /&gt;  unalias cp&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+1.3" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_1.3"&gt;1.3. Temporarily disabling alias &lt;/a&gt;&lt;br /&gt;If you want disable just for this time un alias, call&lt;br /&gt;  \alias parameter1 parameter2 ...&lt;br /&gt;For example, you have defined such an alias&lt;br /&gt;  alias cp='cp -v'&lt;br /&gt;and you want to copy something without showing what it is doing. Call&lt;br /&gt;  \cp file1 file2&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+1.4" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_1.4"&gt;1.4. Defining "function" instead of alias &lt;/a&gt;&lt;br /&gt;It's not a good idea to define an alias to starting an application, because if the '&amp;' character is not placed after the call, the application will block the shell until the application self will be closed.&lt;br /&gt;For such case it's better to define a function:&lt;br /&gt;  functionName() { yourApplication yourParameters $* }&lt;br /&gt;For example, in the following case, the command 'n myFile' will call 'nedit -rows 50 myFile':&lt;br /&gt;  n() { nedit -rows 50 $* &amp; }&lt;br /&gt;The '$*' indicates the list of arguments that you can give at the command line.&lt;br /&gt;Note: The definition of the function can be placed in .bashrc so that it will be defined for each new shell.&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2"&gt;2. Basic operations &lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+2.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2.1"&gt;2.1. Input command &lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#2.1.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2.1.1"&gt;2.1.1. Input &lt;/a&gt;&lt;br /&gt;  echo "A="&lt;br /&gt;  read A&lt;br /&gt;  echo "You entered $A"&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#2.1.2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2.1.2"&gt;2.1.2. Keypress &lt;/a&gt;&lt;br /&gt;  read -s -n2 -p "Hit a key " keypress&lt;br /&gt;  echo&lt;br /&gt;  echo "pressed '$keypress'"&lt;br /&gt;-s: don't echo input&lt;br /&gt;-n: accept only N characters of input&lt;br /&gt;-p: echo the following prompt before reading input&lt;br /&gt;If you want to show what key as been pressed, just remove the -s option.&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+2.2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2.2"&gt;2.2. Check arguments &lt;/a&gt;&lt;br /&gt;  if [ ! $# = 2 ]&lt;br /&gt;  then&lt;br /&gt;    echo "  usage: `basename $0` first_argument second_argument"&lt;br /&gt;    exit 1;&lt;br /&gt;  fi&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+2.3" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2.3"&gt;2.3. Check return code &lt;/a&gt;&lt;br /&gt;  `your_script`&lt;br /&gt;  if [ $? ]&lt;br /&gt;     echo "ERROR"&lt;br /&gt;     exit 1;&lt;br /&gt;  else&lt;br /&gt;     echo "OK"&lt;br /&gt;  fi&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+2.4" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2.4"&gt;2.4. Print to screen and simultaneously log in a file &lt;/a&gt;&lt;br /&gt;  grep myword *  tee -a file.log&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+2.5" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2.5"&gt;2.5. Arithmetic calculations &lt;/a&gt;&lt;br /&gt;  expr 5 + 4&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+2.6" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2.6"&gt;2.6. Logical operators &lt;/a&gt;&lt;br /&gt;  if [ "$a" -eq 24 ] &amp;&amp;amp; [ "$b" -eq 47 ]&lt;br /&gt;  if [ "$a" -eq 24 -a "$b" -eq 47 ]&lt;br /&gt;  if [ "$a" = rhino ] &amp;&amp;amp; [ "$b" = crocodile ]&lt;br /&gt;See &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/%3Ca%20href=" target="_blank"&gt;http://www.tldp.org/LDP/abs/html/abs-guide.html#ORREF&lt;/a&gt;" target=""&gt;Advanced Bash-Scripting Guide.&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+2.7" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2.7"&gt;2.7. If ... else if  ... else &lt;/a&gt;&lt;br /&gt;  if [ $A -gt 0 ]&lt;br /&gt;  then&lt;br /&gt;    echo "$A is bigger than zero"&lt;br /&gt;  elif [ $A -lt 0 ]&lt;br /&gt;  then&lt;br /&gt;    echo "$A is smaller than zero"&lt;br /&gt;  else&lt;br /&gt;    echo "$A is equal to zero"&lt;br /&gt;  fi&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+2.8" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_2.8"&gt;2.8. Sequence &lt;/a&gt;&lt;br /&gt;A sequence of number can be indicates as following:&lt;br /&gt;  seq 0 9&lt;br /&gt;Example:&lt;br /&gt;  for i in $(seq 0 9)&lt;br /&gt;  do&lt;br /&gt;    echo $i&lt;br /&gt;  done&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+3" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_3"&gt;3. Case&lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+3.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_3.1"&gt;3.1. Changing case &lt;/a&gt;&lt;br /&gt;To change the case from lowercase to uppercase:&lt;br /&gt;  echo "word"  tr [:lower:] [:upper:]&lt;br /&gt;To change the case from uppercase to lowercase:&lt;br /&gt;  echo "word"  tr [:upper:] [:lower:]&lt;br /&gt;To rename all files in a directory from lowercase to uppercase:&lt;br /&gt;  for i in *; do (echo $itr [:lower:] [:upper:]); done&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+4" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_4"&gt;4. File&lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+4.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_4.1"&gt;4.1. Reading file line by line &lt;/a&gt;&lt;br /&gt;  exec &lt; fileName&lt;br /&gt;  while read line&lt;br /&gt;  do&lt;br /&gt;    echo $line&lt;br /&gt;  done&lt;br /&gt;  LINES=( `cat "$FILE"` )&lt;br /&gt;  for LINE in ${LINES[@]}&lt;br /&gt;  do&lt;br /&gt;    echo $line&lt;br /&gt;  done&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+4.2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_4.2"&gt;4.2. Remove commented lines from a file &lt;/a&gt;&lt;br /&gt;  sed '/^#/d' fileName&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+5" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_5"&gt;5. Find&lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+5.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_5.1"&gt;5.1. Doing something only for searched elements &lt;/a&gt;&lt;br /&gt;  find PATH -name FILENAME -exec COMMAND {} \;&lt;br /&gt;The&lt;br /&gt;  {}&lt;br /&gt;indicates the output of the find command.&lt;br /&gt;Example. Search all text file in home directory and copy them to /tmp:&lt;br /&gt;  find ~ -name "*.txt" -exec cp {} /tmp \;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+5.2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_5.2"&gt;5.2. Search in more specified directories &lt;/a&gt;&lt;br /&gt;  echo "/tmp/ /usr/" &gt; directories&lt;br /&gt;  cat directories  xargs -i find {} -name "*.txt"&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+6" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_6"&gt;6. Loop&lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+6.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_6.1"&gt;6.1. For &lt;/a&gt;&lt;br /&gt;  for file in `ls *`&lt;br /&gt;  do&lt;br /&gt;    echo $file&lt;br /&gt;  done&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+6.2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_6.2"&gt;6.2. For with list &lt;/a&gt;&lt;br /&gt;  LIST="one two three"&lt;br /&gt;  for ELEMENT in $LIST&lt;br /&gt;  do&lt;br /&gt;    echo $ELEMENT&lt;br /&gt;  done&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+6.3" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_6.3"&gt;6.3. While &lt;/a&gt;&lt;br /&gt;  while [ 1 ]&lt;br /&gt;  do&lt;br /&gt;    echo "hello";&lt;br /&gt;  done&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+7" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_7"&gt;7. Process&lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+7.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_7.1"&gt;7.1. Own process id &lt;/a&gt;&lt;br /&gt;To known the process id of the script it self, use the special variable&lt;br /&gt;  $$&lt;br /&gt;Example:&lt;br /&gt;  echo "My process id is $$"&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+7.2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_7.2"&gt;7.2. Pidof &lt;/a&gt;&lt;br /&gt;Returns all the process having the specified name:&lt;br /&gt;  pidof nedit&lt;br /&gt;  17277 17270 17267&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+8" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_8"&gt;8. Shortcuts&lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+8.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_8.1"&gt;8.1. Case &lt;/a&gt;&lt;br /&gt;  ALT + U: uppercase until end of word&lt;br /&gt;  ALT + L: lowercase until end of word&lt;br /&gt;  ALT + C: uppercase current char, lowercase the rest&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+8.2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_8.2"&gt;8.2. Cut, copy, paste &lt;/a&gt;&lt;br /&gt;  CTRL + Y: paste&lt;br /&gt;  CTRL + U: cut begin of the line until char on the left&lt;br /&gt;  ALT + BACKSPACE: cut from current char to begin of current word&lt;br /&gt;  CTRL + K: cut from current char to end of line&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+8.3" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_8.3"&gt;8.3. Enter &lt;/a&gt;&lt;br /&gt;  CTRL + J: enter&lt;br /&gt;  CTRL + M: enter&lt;br /&gt;  CTRL + O: enter&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+8.4" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_8.4"&gt;8.4. History &lt;/a&gt;&lt;br /&gt;  CTRL + P: same as cursor up (history backwards)&lt;br /&gt;  CTRL + N: same as cursor down (history forwards)&lt;br /&gt;  CTRL + R: reverse search in history (from last command to first)&lt;br /&gt;  ALT + P: search in history (from first command to last)&lt;br /&gt;  !cucu: repeat last command started with the word cucu&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+8.5" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_8.5"&gt;8.5. Jumping &lt;/a&gt;&lt;br /&gt;  CTRL + A: jump to begin of the line&lt;br /&gt;  CTRL + E: jump to end of line&lt;br /&gt;  CTRL + F: same as cursor right&lt;br /&gt;  CTRL + B: same as cursor left&lt;br /&gt;  ALT + B: jump one word backwards&lt;br /&gt;  ALT + F: jump one word forwards&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+8.6" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_8.6"&gt;8.6. Process &lt;/a&gt;&lt;br /&gt;  CTRL + Z: send SIGSTOP to current process&lt;br /&gt;  CTRL + C: send SIGTERM to current process&lt;br /&gt;  CTRL + D: exit&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+8.7" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_8.7"&gt;8.7. Screen &lt;/a&gt;&lt;br /&gt;  CTRL + L: clear screen&lt;br /&gt;  CTRL + S: stop video scrolling&lt;br /&gt;  CTRL + Q: restart video scrolling&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+8.8" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_8.8"&gt;8.8. Others &lt;/a&gt;&lt;br /&gt;  CTRL + T: swap current char with them on the left&lt;br /&gt;  CTRL + H: backspace&lt;br /&gt;  CTRL + I: tabulator&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+9" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_9"&gt;9. Tricks&lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+9.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_9.1"&gt;9.1. Beeping until key pressing &lt;/a&gt;&lt;br /&gt;To announce to the user a long job has been done, the command&lt;br /&gt;  alarm&lt;br /&gt;will beep until the user press a key.&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+9.2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_9.2"&gt;9.2. Counting files &lt;/a&gt;&lt;br /&gt;To get the number of files/directory present in the current directory:&lt;br /&gt;  ls  wc -l&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+9.3" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_9.3"&gt;9.3. Extracting IP number from ifconfig &lt;/a&gt;&lt;br /&gt;  ifconfig eth0   grep inet  cut -d : -f 2  cut -d \  -f 1&lt;br /&gt;or using awk:&lt;br /&gt;  ifconfig eth0  awk -F ':' '/inet/ {print $2}'  cut -f 1 -d ' '&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+9.4" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_9.4"&gt;9.4. Removing last slash in path &lt;/a&gt;&lt;br /&gt;  A="/usr/lib/"&lt;br /&gt;  B=${A/%\//}&lt;br /&gt;  echo $A&lt;br /&gt;  echo $B&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+9.5" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_9.5"&gt;9.5. Renaming file with blanks &lt;/a&gt;&lt;br /&gt;  find $DIR -maxdepth 1 -type f -print0      xargs -0 -n1 bash -c    'newname=${0// /_}; if [[ ! -e $newname ]];then eval mv \"$0\" $newname;fi;'&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+9.6" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_9.6"&gt;9.6. Wildcards &lt;/a&gt;&lt;br /&gt;To get a list of specified files:&lt;br /&gt;  FILE='lib*.so'&lt;br /&gt;or&lt;br /&gt;  FILE=`ls lib*.so`&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+10" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_10"&gt;10. Variables &lt;/a&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+10.1" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_10.1"&gt;10.1. Asking for returned value &lt;/a&gt;&lt;br /&gt;When a script or programm is called, it returns a value giving informations about the result of its call (without error, error 1, error 2, ...).&lt;br /&gt;This value is stored in the variable $? and can be easily checked.&lt;br /&gt;  myScript&lt;br /&gt;  echo $?&lt;br /&gt;This value will be overwritten by the next call of a script or programm.&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.planamente.ch/emidio/pages/programming_shell.php#HOC+10.2" target="_blank" name="10eb2dd2a4639db1_10eb2dc91862ce78_10.2"&gt;10.2. Defining and clearing &lt;/a&gt;&lt;br /&gt;Normally, variables doesn't need to be declared. But if a variable is needed outside the script which declares it, it must be exported:&lt;br /&gt;  export MY_VARIABLE=Hello&lt;br /&gt;Here how to verify that the variable has been correctly exported:&lt;br /&gt;  export  grep  MY_VARIABLE&lt;br /&gt;To undo the operation:&lt;br /&gt;  unset MY_VARIABLE&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-116270851123369853?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/116270851123369853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=116270851123369853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/116270851123369853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/116270851123369853'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2006/11/shell-scripts.html' title='Shell scripts'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-116239387899929374</id><published>2006-11-01T07:11:00.000-08:00</published><updated>2006-11-01T07:11:19.430-08:00</updated><title type='text'>Generate passwords with openssl</title><content type='html'>write 6 random bits of base64-encoded data. This will produce an eight character string making a good unix (crypt based) password:&lt;br /&gt;&lt;br /&gt;$ openssl rand -base64 6&lt;br /&gt;$RcqcGq4h&lt;br /&gt;&lt;br /&gt;This is an example used to generate a 16 character password&lt;br /&gt;&lt;br /&gt;$ openssl rand -base64 12&lt;br /&gt;$IEoOfT/LKimAf/sd&lt;br /&gt;&lt;br /&gt;When random data goes through the base encoding process the string output is always a multiple of 4 possibly padded on the end with one or more '=' characters. So if you want a password that is not a multiple of 4 you need to artifically chop it where you want it.&lt;br /&gt;An example used to generate a 37 character password:&lt;br /&gt;with cut:&lt;br /&gt;&lt;br /&gt;$ openssl rand -base64 37 cut -c1-37&lt;br /&gt;$X/UhqF1I9qO57Uz8hPufpvbOLYCeuuvqnerUM&lt;br /&gt;&lt;br /&gt;or sed:&lt;br /&gt;&lt;br /&gt;$ openssl rand -base64 37 sed -e 's/^\(.\{37\}\).*/\1/g' $sAPpFoGnbXnJrQc8Cl/QqrNwn0QK3hHrgANt1&lt;br /&gt;&lt;br /&gt;or awk:&lt;br /&gt;&lt;br /&gt;$ openssl rand -base64 37 awk 'BEGIN{FS=""} {for (i=1;i&lt;=37;i++) printf("%s",$i);} {printf "\n"}'&lt;br /&gt;$WhGWSCp8Y2uilxWfOfAyQXa4QqlE78uJeH3sn&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-116239387899929374?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/116239387899929374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=116239387899929374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/116239387899929374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/116239387899929374'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2006/11/generate-passwords-with-openssl_01.html' title='Generate passwords with openssl'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-116221757359888165</id><published>2006-10-30T06:12:00.000-08:00</published><updated>2006-11-01T21:40:24.043-08:00</updated><title type='text'>Blade server</title><content type='html'>IBM HS20 blade server. Two bays for SCSI hard drives can be noticed in the upper left area of the image.&lt;br /&gt;Blade servers are self-contained computer servers, designed for high density. Whereas a standard rack-mount server can exist with (at least) a power cord and network cable, blade servers have many components removed for space, power and other considerations while still having all the functional components to be considered a computer. A blade enclosure provides services such as power, cooling, networking, various interconnects and management - though different blade providers have differing principles around what should and should not be included in the blade itself (and sometimes in the enclosure altogether). Together these form the blade system.&lt;br /&gt;In a standard server-rack configuration, 1U (one rack unit, 19" wide and 1.75" tall) is the minimum possible size of any equipment. The principal benefit of, and the reason behind the push towards, blade computing is that components are no longer restricted to these minimum size requirements. The most common computer rack form-factor being 42U high, this limits the number of discrete computer devices directly mounted in a rack to 42 components. Blades do not have this limitation; densities of 100 computers per rack and more are achievable with the current generation of blade systems.&lt;br /&gt;Server blade&lt;br /&gt;In the purest definition of computing (a Turing machine, simplified here), a computer requires only;&lt;br /&gt;memory to read input commands and data&lt;br /&gt;a processor to perform commands manipulating that data, and&lt;br /&gt;memory to store the results.&lt;br /&gt;Today (contrast with the first general-purpose computer) these are implemented as electrical components requiring (DC) power, and in operation produce heat. Other components such as hard drives, power supplies, storage and network connections, basic IO (such as KVM and serial) etc. only support the basic computing function, yet add bulk, heat and complexity, not to mention moving parts that are more prone to failure than solid-state components.&lt;br /&gt;In practice, these components are all required if the computer is to perform real-world work. In the blade paradigm, most of these functions are removed from the blade computer, being either provided by the blade enclosure (e.g. DC power supply), virtualised (e.g. iSCSI storage, remote console over IP) or discarded entirely (e.g. serial ports). The blade itself becomes vastly simpler, hence smaller and (in theory) cheaper to manufacture.&lt;br /&gt;&lt;a id="Blade_enclosure" name="Blade_enclosure"&gt;&lt;/a&gt;Blade enclosure&lt;br /&gt;The enclosure (or chassis) performs many of the non-core computing services found in most computers. Non-blade computers require components that are bulky, hot and space-inefficient, and duplicated across many computers that may or may not be performing at capacity. By locating these services in one place and sharing them between the blade computers, the overall utilisation is more efficient. The specifics of which services are provided and how vary by vendor.&lt;br /&gt;&lt;a id="Power" name="Power"&gt;&lt;/a&gt;Power&lt;br /&gt;Computers operate over a range of DC voltages, yet power is delivered from utilities as AC, and at higher voltages than required within the computer. Converting this current requires power supply units (or PSUs). To ensure that the failure of one power source does not affect the operation of the computer, even entry-level servers have redundant power supplies, again adding to the bulk and heat output of the design.&lt;br /&gt;The blade enclosure's power supply provides a single power source for all blades within the enclosure. This single power source may be in the form of a power supply in the enclosure or a dedicated separate PSU supplying DC to multiple enclosures [http://h18004.www1.hp.com/products/quickspecs/12330_div/12330_div.html]. This setup not only reduces the number of PSUs required to provide a resilient power supply, but it also improves efficiency because it reduces the number of idle PSUs.&lt;br /&gt;&lt;a id="Cooling" name="Cooling"&gt;&lt;/a&gt;Cooling&lt;br /&gt;Operating the electrical and mechanical components of a computer produces heat, which must be displaced to ensure proper function of all these components. Fans are the most common method used to remove this heat in computers, but these add bulk and more moving parts. The blade enclosure typically provides fans to remove hot air from within the blades.&lt;br /&gt;A frequently underestimated conflict in the design of a high-performance computer is the trade-off between design for density and the ability of the fans to move hot air away from the system. Since much of the bulk of a traditional server is removed from a blade, it can be designed to allow for excellent airflow.&lt;br /&gt;&lt;a id="Networking" name="Networking"&gt;&lt;/a&gt;Networking&lt;br /&gt;Computers are increasingly being produced with high-speed, integrated network interfaces, and most are expandable to allow for the addition of connections that are faster, more resilient and run over different media (copper and fiber). These may require extra engineering effort in the design and manufacture of the blade, consume space in both the installation and capacity for installation (empty expansion slots) and hence more complexity. High-speed network topologies require expensive, high-speed integrated circuits and media, while most computers do not utilise all the bandwidth available.&lt;br /&gt;The blade enclosure provides one or more network buses to which the blade will connect, and either presents these ports individually in a single location (versus one in each computer chassis), or aggregates them into fewer ports, reducing the cost of connecting the individual devices. These may be presented in the chassis itself, or in networking blades.&lt;br /&gt;&lt;a id="Storage" name="Storage"&gt;&lt;/a&gt;Storage&lt;br /&gt;While computers typically need hard-disks to store the operating system, application and data for the computer, these are not necessarily required locally. Many storage connection methods (e.g. FireWire, SATA, SCSI, DAS, Fibre Channel and iSCSI) are readily moved outside the server, though not all are used in enterprise-level installations. Implementing these connection interfaces within the computer presents similar challenges to the networking interfaces (indeed iSCSI runs over the network interface), and similarly these can be removed from the blade and presented individually or aggregated either on the chassis or through other blades.&lt;br /&gt;In particular, the ability to boot the blade from a Storage Area Network (SAN) allows for an entirely disk-free blade, resulting in exceptional reliability and space utilisation.&lt;br /&gt;&lt;a id="Other_blades" name="Other_blades"&gt;&lt;/a&gt;Other blades&lt;br /&gt;Since the blade enclosure provides a standard method for delivering basic services to computer devices, these can be leveraged by other types of devices. Blades providing switching, routing, SAN and fibre-channel access can be inserted into the enclosure to provide these services to all members of the enclosure.&lt;br /&gt;&lt;a id="Uses" name="Uses"&gt;&lt;/a&gt;Uses&lt;br /&gt;&lt;a title="'A" href="http://en.wikipedia.org/wiki/Image:Pile_of_IBM_HS20s.jpg"&gt;&lt;/a&gt;&lt;a title="'A" href="http://en.wikipedia.org/wiki/Image:Pile_of_IBM_HS20s.jpg"&gt;&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Image:Pile_of_IBM_HS20s.jpg"&gt;http://en.wikipedia.org/wiki/Image:Pile_of_IBM_HS20s.jpg&lt;/a&gt;&lt;br /&gt;&lt;a title="Enlarge" href="http://en.wikipedia.org/wiki/Image:Pile_of_IBM_HS20s.jpg"&gt;&lt;/a&gt;&lt;br /&gt;A pile of IBM HS20 blade servers. Each "blade" has two 2.8 GHz Xeon CPUs, two 36 GB Ultra-320 SCSI hard drives and 2 GB RAM.&lt;br /&gt;Blade servers are ideal for specific purposes such as web hosting and cluster computing. Individual blades are typically hot-swappable.&lt;br /&gt;Although blade server technology in theory allows for open, cross-vendor solutions, at this stage of development of the technology, users find there are fewer problems when using blades, racks and blade management tools from the same vendor.&lt;br /&gt;Eventual standardization of the technology might result in more choices for consumers; increasing numbers of third-party software vendors are now entering this growing field.&lt;br /&gt;Blade servers are not, however, the answer to every computing problem. They may best be viewed as a form of productized server farm that borrows from mainframe packaging, cooling, and power supply technology. For large problems, server farms of blade servers are still necessary, and because of blade servers' high power density, can suffer even more acutely from the HVAC problems that affect large conventional server farms.&lt;br /&gt;&lt;a title="An IBM bladecenter, with an HS20 server partially removed. The top media tray can be switched between all servers." href="http://en.wikipedia.org/wiki/Image:IBM_bladecenter_%28front%29.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;An IBM bladecenter, with an HS20 server partially removed. The top media tray can be switched between all servers.&lt;br /&gt;&lt;a id="History" name="History"&gt;&lt;/a&gt;History&lt;br /&gt;Complete microcomputers were placed on cards and packaged in standard 19-inch racks in the 1970s soon after the introduction of 8-bit microprocessors. This architecture was used in the industrial process control industry as an alternative to minicomputer control systems. Programs were stored in EPROM on early models and were limited to a single function with a small realtime executive.&lt;br /&gt;The name blade server appeared when cards included small hard disks or flash memory program storage. This allowed complete server operating systems to be packaged on the blade.&lt;br /&gt;The architecture of blade servers is expected to move closer to mainframe architectures. Although current systems act as a cluster of independent computers, future systems may add resource virtualization and higher levels of integration with the operating system to increase reliability.&lt;br /&gt;The first company to produce a blade server was Houston-based RLX Technologies (although not proven), which consisted of mostly former Compaq Computer Corp employees. RLX was later acquired by Hewlett Packard (HP) in 2005.&lt;br /&gt;At present IBM remains the global leader in blade servers in terms of market share and revenue with their BladeCenter system and http://www.blade.org industry collaboration initiative. IBM also supports an Open Architecture called the "Blade Open Specification"&lt;br /&gt;Other major players in the blade server market include Hewlett-Packard (HP), Dell, Rackable (Hybrid Blade) and Verari Systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11534607-116221757359888165?l=osana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://osana.blogspot.com/feeds/116221757359888165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11534607&amp;postID=116221757359888165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/116221757359888165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11534607/posts/default/116221757359888165'/><link rel='alternate' type='text/html' href='http://osana.blogspot.com/2006/10/blade-server_30.html' title='Blade server'/><author><name>omp</name><uri>http://www.blogger.com/profile/04256614741599441225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://static.flickr.com/103/289302442_2d66b3ddf5_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11534607.post-116137674857455851</id><published>2006-10-20T13:36:00.000-07:00</published><updated>2006-10-20T13:52:32.310-07:00</updated><title type='text'>SUID - The Sticky Bit</title><content type='html'>Sometimes, unprivileged users must be able to accomplish tasks that require privileges. An example is the &lt;kbd class="command"&gt;passwd&lt;/kbd&gt; &lt;a class="indexterm" name="AUTOID-5440"&gt;&lt;/a&gt; program, which allows you to change your password. Changing a user's password requires modifying the password field in the &lt;i class="filename"&gt;/etc/passwd&lt;/i&gt; file. However, you should not give a user access to change this file directly - the user could change everybody else's password as well! Likewise, the &lt;kbd class="command"&gt;mail&lt;/kbd&gt; program requires that you be able to insert a message into the mailbox of another user, yet you should not to give one user unrestricted access to another's mailbox. &lt;p class="para"&gt;To get around these problems, &lt;span class="acronym"&gt;UNIX&lt;/span&gt; allows programs to be endowed with privilege. Processes executing these programs can assume another &lt;span class="acronym"&gt;UID&lt;/span&gt; or &lt;span class="acronym"&gt;GID&lt;/span&gt; when they're running. A program that changes its &lt;span class="acronym"&gt;UID&lt;/span&gt; is called a &lt;span class="acronym"&gt;SUID&lt;/span&gt; program (&lt;em class="emphasis"&gt;set-UID&lt;/em&gt;); a program that changes its &lt;span class="acronym"&gt;GID&lt;/span&gt; is called a &lt;span class="acronym"&gt;SGID&lt;/span&gt; program (&lt;em class="emphasis"&gt;set-GID)&lt;/em&gt;. A program can be both SUID and SGID at the same time.&lt;/p&gt; &lt;p class="para"&gt;When a SUID program is run, its &lt;a class="indexterm" name="AUTOID-5456"&gt;&lt;/a&gt; effective UID[22] becomes that of the owner of the file, rather than of the user who is running it. This concept is so clever that &lt;span class="acronym"&gt;AT&amp;T&lt;/span&gt; patented it.[23]&lt;/p&gt;  &lt;div class="sect2"&gt;&lt;h3 class="sect2"&gt;&lt;a class="title" name="PUIS-CHP-5-SECT-5.1"&gt;5.5.1 SUID, SGID, and Sticky Bits&lt;/a&gt;&lt;/h3&gt;&lt;p class="para"&gt;If a &lt;a class="indexterm" name="AUTOID-5467"&gt;&lt;/a&gt;&lt;a class="indexterm" name="AUTOID-5469"&gt;&lt;/a&gt;&lt;a class="indexterm" name="AUTOID-5472"&gt;&lt;/a&gt; program is SUID or SGID, the output of the &lt;kbd class="command"&gt;ls -l&lt;/kbd&gt; command will have the &lt;em class="emphasis"&gt;x&lt;/em&gt; in the display changed to an  &lt;em class="emphasis"&gt;s&lt;/em&gt;. If the program is sticky, the last &lt;em class="emphasis"&gt;x&lt;/em&gt; changes to a t as shown in &lt;a class="xref" href="http://www.unix.org.ua/orelly/networking/puis/ch05_05.htm#PUIS-CHP-5-TAB-13" title="SUID, SGID, and Sticky Bits"&gt;Table 5.13&lt;/a&gt; and &lt;a class="xref" href="http://www.unix.org.ua/orelly/networking/puis/ch05_05.htm#PUIS-CHP-5-FIG-3" title="Additional file permissions"&gt;Figure 5.3&lt;/a&gt;.&lt;/p&gt;&lt;h4 class="figure"&gt;&lt;a class="title" name="PUIS-CHP-5-FIG-3"&gt;Figure 5.3: Additional file permissions&lt;/a&gt;&lt;/h4&gt;&lt;img class="graphic" src="http://www.unix.org.ua/orelly/networking/puis/figs/puis_0503.gif" alt="Figure 5.3" /&gt;&lt;table class="table"&gt;&lt;caption class="table"&gt;&lt;a class="title" name="PUIS-CHP-5-TAB-13"&gt;Table 5.13: SUID, SGID, and Sticky Bits&lt;/a&gt;&lt;/caption&gt;&lt;thead class="thead"&gt;&lt;tr class="row" valign="top"&gt;&lt;th class="entry" rowspan="1" colspan="1" align="left"&gt;&lt;p class="para"&gt;Contents&lt;/p&gt;&lt;/th&gt;&lt;th class="entry" rowspan="1" colspan="1" align="left"&gt;&lt;p class="para"&gt;Permission&lt;/p&gt;&lt;/th&gt;&lt;th class="entry" rowspan="1" colspan="1" align="left"&gt;&lt;p class="para"&gt;Meaning&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody class="tbody"&gt;&lt;tr class="row" valign="top"&gt;&lt;td class="entry" rowspan="1" colspan="1"&gt;&lt;p class="para"&gt;---s------&lt;/p&gt;&lt;/td&gt;&lt;td class="entry" rowspan="1" colspan="1"&gt;&lt;p class="para"&gt;SUID&lt;/p&gt;&lt;/td&gt;&lt;td class="entry" rowspan="1" colspan="1"&gt;&lt;p class="para"&gt;A process that execs a SUID program has its effective UID set to be the UID of the program's owner.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="row" valign="top"&gt;&lt;td class="entry" rowspan="1" colspan="1"&gt;&lt;p class="para"&gt;------s---&lt;/p&gt;&lt;/td&gt;&lt;td class="entry" rowspan="1" colspan="1"&gt;&lt;p class="para"&gt;SGID&lt;/p&gt;&lt;/td&gt;&lt;td class="entry" rowspan="1" colspan="1"&gt;&lt;p class="para"&gt;A process that execs a SGID program has its effective GID changed to the program's GID. Files created by the process can have their primary group set to this GID as well, depending on the permissions of the directory in which the files are created. Under Berkeley-derived UNIX, a process that execs an SGID program also has the program's GID temporarily added to the process's list of GIDs. Solaris and other System V-derived versions of UNIX use the SGID bit on data files to enable mandatory file locking.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class="row" valign="top"&gt;&lt;td class="entry" rowspan="1" colspan="1"&gt;&lt;p class="para"&gt;---------t&lt;/p&gt;&lt;/td&gt;&lt;td class="entry" rowspan="1" colspan="1"&gt;&lt;p class="para"&gt;sticky&lt;/p&gt;&lt;/td&gt;&lt;td class="entry" rowspan="1" colspan="1"&gt;&lt;p class="para"&gt;This is obsolete with files, but is used for directories. See "The Origin of `Sticky' " sidebar later in this chapter.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="sidebar"&gt;&lt;h4 class="sidebar"&gt;&lt;a class="title" name="AUTOID-5519"&gt;The Origin of "Sticky"&lt;/a&gt;&lt;/h4&gt;&lt;p class="para"&gt;A very long time ago, &lt;span class="acronym"&gt;UNIX&lt;/span&gt; ran on machines with much less memory than today: 64 kilobytes, for instance. This amount of memory was expected to contain a copy of the operating system, I/O buffers, and running programs. This memory often wasn't sufficient when there were several large programs running at the same time.&lt;/p&gt;&lt;p class="para"&gt;To make the most of the limited memory, &lt;span class="acronym"&gt;UNIX&lt;/span&gt; &lt;i class="firstterm"&gt;&lt;a class="indexterm" name="AUTOID-5526"&gt;&lt;/a&gt;&lt;a class="indexterm" name="AUTOID-5528"&gt;&lt;/a&gt;swapped&lt;/i&gt; processes to and from secondary storage as their turns at the CPU ended. When a program was started, &lt;span class="acronym"&gt;UNIX&lt;/span&gt; would determine the amount of storage that might ultimately be needed for the program, its stack, and all its data. It then allocated a set of blocks on the swap partition of the disk or drum attached to the system. (Many systems still have a &lt;i class="filename"&gt;/dev/swap&lt;/i&gt;, or a &lt;kbd class="command"&gt;swapper&lt;/kbd&gt; process that is a holdover from these times.)&lt;/p&gt;&lt;p class="para"&gt;Each time the process got a turn from the scheduler, &lt;span class="acronym"&gt;UNIX&lt;/span&gt; would &lt;i class="firstterm"&gt;swap in&lt;/i&gt; the program and data, if needed, execute for a while, and then &lt;i class="firstterm"&gt;swap out&lt;/i&gt; the memory copy if the space was needed for the next process. When the process exited or &lt;i class="filename"&gt;exec&lt;/i&gt;'d another program, the swap space was reclaimed for use elsewhere. If there was not enough swap space to hold the process's memory image, the user got a "No memory error " (still possible on many versions of &lt;span class="acronym"&gt;UNIX&lt;/span&gt; if a large stack or heap is involved.)&lt;/p&gt;&lt;p class="para"&gt;Obviously, this is a great deal of I/O traffic that could slow computation. So, one of the eventual steps was development of compiler technology that constructed executable files with two parts: &lt;i class="firstterm"&gt;pure&lt;/i&gt; code that would not change, and everything else. These were indicated with a special &lt;i class="firstterm"&gt;magic number&lt;/i&gt; in the header inside the file. When the program was first executed, the program and data were copied to their swap space on disk first, then brought into memory to execute. However, when the time comes to &lt;em class="emphasis"&gt;swap&lt;/em&gt; out, the code portions were not written to disk - they would not have changed from what was already on disk! This change was a big savings.&lt;/p&gt;&lt;p class="para"&gt;The next obvious step was to stop some of that extra disk-to-disk copying at start-up time. Programs that were run frequently - such as &lt;kbd class="command"&gt;cc&lt;/kbd&gt;, &lt;kbd class="command"&gt;ed&lt;/kbd&gt;, and &lt;kbd class="command"&gt;rogue&lt;/kbd&gt; - could share the same program pages. Furthermore, even if no copy was currently running, we could expect another one to be run soon. Therefore, keeping the pages in memory and on the swap partition, even while we weren't using them, made sense. The "sticky bit" was added to mark those programs as worth saving.&lt;/p&gt;&lt;p class="para"&gt;Since those times, larger memories and better memory management methods have largely removed the original need for the sticky bit. &lt;a class="indexterm" name="AUTOID-5549"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;p class="para"&gt;In each of the cases above, the designator letter is capitalized if the bit is set, and the corresponding execute bit is not set. Thus, a file that has its sticky and &lt;span class="acronym"&gt;SGID&lt;/span&gt; bits set, and is otherwise mode 444, would appear in an ls listing as&lt;/p&gt;&lt;blockquote class="screen"&gt;&lt;pre class="screen"&gt;% &lt;b class="emphasis.bold"&gt;ls -l /tmp/example&lt;/b&gt;&lt;br /&gt;-r--r-Sr-T 1 root    user    12324 Mar 26 1995 /tmp/example &lt;/pre&gt;&lt;/blockquote&gt;&lt;p class="para"&gt;An example of a &lt;span class="acronym"&gt;SUID&lt;/span&gt; program is the &lt;kbd class="command"&gt;su&lt;/kbd&gt; command,&lt;br /&gt;&lt;/p&gt;&lt;blockquote class="screen"&gt;&lt;pre class="screen"&gt;% &lt;b class="emphasis.bold"&gt;ls -l /bin/su &lt;/b&gt;&lt;br /&gt;-rwsr-xr-x 1 root    user    16384 Sep 3 1989 /bin/su&lt;br /&gt;%&lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;div class="sect2"&gt;&lt;h3 class="sect2"&gt;&lt;a class="title" name="PUIS-CHP-5-SECT-5.2"&gt;5.5.2 Problems with SUID&lt;/a&gt;&lt;/h3&gt;&lt;p class="para"&gt;Any program can be &lt;span class="acronym"&gt;SUID&lt;/span&gt;, &lt;span class="acronym"&gt;SGID&lt;/span&gt;, or both &lt;span class="acronym"&gt;SUID&lt;/span&gt; and &lt;span class="acronym"&gt;SGID&lt;/span&gt;. Because this feature is so general, &lt;span class="acronym"&gt;SUID/SGID&lt;/span&gt; can open up some interesting security problems.&lt;/p&gt;&lt;p class="para"&gt;For example, any user can become the superuser simply by running a &lt;span class="acronym"&gt;SUID&lt;/span&gt; copy of &lt;a class="indexterm" name="AUTOID-5571"&gt;&lt;/a&gt;&lt;a class="indexterm" name="AUTOID-5573"&gt;&lt;/a&gt; &lt;kbd class="command"&gt;csh&lt;/kbd&gt; that is owned by &lt;i class="systemitem.username"&gt;root&lt;/i&gt;. Fortunately, you must be &lt;i class="systemitem.username"&gt;root&lt;/i&gt; already to create a &lt;span class="acronym"&gt;SUID&lt;/span&gt; version of &lt;kbd class="command"&gt;csh&lt;/kbd&gt; that is owned by &lt;i class="systemitem.username"&gt;root&lt;/i&gt;. Thus, an important objective in running a secure &lt;span class="acronym"&gt;UNIX&lt;/span&gt; computer is to ensure that somebody who has superuser privileges will not leave a &lt;span class="acronym"&gt;SUID&lt;/span&gt; &lt;kbd class="command"&gt;csh&lt;/kbd&gt; on the system, directly or indirectly.&lt;/p&gt;&lt;p class="para"&gt;If &lt;a class="indexterm" name="AUTOID-5585"&gt;&lt;/a&gt; you leave your terminal unattended, an unscrupulous passerby can destroy the security of your account simply by typing the commands:&lt;/p&gt;&lt;blockquote class="screen"&gt;&lt;pre class="screen"&gt;% &lt;b class="emphasis.bold"&gt;cp /bin/sh /tmp/break-acct &lt;/b&gt;&lt;br /&gt;%&lt;b class="emphasis.bold"&gt; chmod 4755 /tmp/break-acct&lt;/b&gt;&lt;br /&gt;%&lt;/pre&gt;&lt;/blockquote&gt;&lt;p class="para"&gt;These commands create a &lt;span class="acronym"&gt;SUID&lt;/span&gt; version of the &lt;a class="indexterm" name="AUTOID-5592"&gt;&lt;/a&gt; &lt;kbd class="command"&gt;sh&lt;/kbd&gt; program. Whenever the attacker runs this program, the attacker becomes you - with full access to all of your files and privileges. The attacker might even copy this &lt;span class="acronym"&gt;SUID&lt;/span&gt; program into a hidden directory so that it would only be found if the superuser scanned the entire disk for &lt;span class="acronym"&gt;SUID&lt;/span&gt; programs. Not all system administrators do such scanning on any regular basis.&lt;/p&gt;&lt;p class="para"&gt;Note that the program copied need not be a shell. Someone with malicious intent can cause you misery by creating a &lt;span class="acronym"&gt;SUID&lt;/span&gt; version of other programs. For instance, consider a &lt;span class="acronym"&gt;SUID&lt;/span&gt; version of the editor program. With it, not only can he read or change any of your files, but he can also spawn a shell running under your &lt;span class="acronym"&gt;UID&lt;/span&gt;.&lt;/p&gt;&lt;p class="para"&gt;Most &lt;span class="acronym"&gt;SUID&lt;/span&gt; system programs are &lt;span class="acronym"&gt;SUID&lt;/span&gt; &lt;i class="systemitem.username"&gt;root&lt;/i&gt;; that is, they become the superuser when they're executing. In theory, this aspect is not a security hole, because a compiled program can perform only the function or functions that were compiled into it. (That is, you can change your password with the &lt;kbd class="command"&gt;passwd&lt;/kbd&gt; program, but you cannot alter the program to change somebody else's password.) But many security holes have been discovered by people who figured out ways of making a &lt;span 
