Search
Search titles only
By:
Search titles only
By:
Log in
Register
Search
Search titles only
By:
Search titles only
By:
Menu
Install the app
Install
Forums
New posts
All threads
Latest threads
New posts
Trending threads
Trending
Search forums
What's new
New posts
New ads
New profile posts
Latest activity
Free Ads
Latest reviews
Search ads
Members
Current visitors
New profile posts
Search profile posts
Contact us
Latest ads
Cinnamoroll Soft Toy – Cute & Cuddly Plush
anil1961
Updated:
Yesterday at 4:59 AM
Google Pixel 9 Pro
vgp
Updated:
Thursday at 5:57 PM
Ad icon
Jobreceive.com for sale
Blogerwiki
Updated:
Sep 29, 2026
Post Your Vehicle for Sale — FREE! - https://libro.lk
Kalu_Puth
Updated:
Sep 29, 2026
ඔයාගෙ Assignment හෝ Thesis එක හරියට හදාගමු
ErMurazor
Updated:
Sep 26, 2026
Electronics
Vehicles
Property
Search
Reply to thread
Forums
General
Education
DevOps_UNIX / Linux_11_UNIX / Linux - disown, sleep, wait සහ තවත් අමතර commands කිහිප
Get the App
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Message
<blockquote data-quote="ja2k17ja" data-source="post: 21922239" data-attributes="member: 562617"><p><strong>DevOps_UNIX / Linux_11_UNIX / Linux - disown, sleep, wait සහ තවත් අමතර commands කිහිප</strong></p><p></p><p><span style="font-size: 12px"><strong>DevOps_UNIX / Linux_11_UNIX / Linux - disown, sleep, wait සහ තවත් අමතර commands කිහිපයක්</strong></span></p><p><span style="font-size: 12px">අපි අද පාඩමෙන් කතා කරන්න යන්නෙ තවත් අපිට වැදගත් වෙන UNIX / Linux කමාන්ඩ්ස් කිහිපයක් ගැන. මේ තමා අපේ මූලික UNIX / Linux කමාන්ඩ්ස් පාඩම් මාලාවේ අවසාන පාඩම.</span></p><p><span style="font-size: 12px">මේ දක්වා මගේ පාඩම් මාලාව සමග රැදී සිටියට මුලින්ම ඔයාලට ස්තුතියි!අද පාඩමෙන් මම කතා කරන්න බලාපොරොත්තු වෙන්නෙ </span></p><p><span style="font-size: 12px"> <ol> <li data-xf-list-type="ol">grep</li> <li data-xf-list-type="ol">sleep</li> <li data-xf-list-type="ol">disown</li> <li data-xf-list-type="ol">wait</li> <li data-xf-list-type="ol">tee</li> </ol><p>කමාන්ඩ්ස් ගැන කතා කරන්න. දැන් එහෙම නම් අපි වැඩේ පටන් ගනිමු.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px"><strong><u>1) grep</u></strong></span></p><p><span style="font-size: 12px"><strong><u></u></strong>අපිට පුළුවන් මෙම කමාන්ඩ් එක use කරල file එකක තිබෙන, අපි දෙන regular expression එකට match වෙන (ගැලපෙන) පේලි ටික සොයා ගන්න. regular expression කියල කියන එක ටික බර වචනයක්. එක නිසා මම උදාහරණයකින් පෙන්වන්නම් මොකක්ද ඒ කියල.</span></p><p><span style="font-size: 12px">අපි උදාහරණය ලෙස <strong>/proc/devices </strong>file එක ගනිමු. අපිට මේ කමාන්ඩ් එකෙන් පුළුවන් එම file එක තුල තිබෙන දේවල් ටික මුලින්ම බලාගන්න.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>cat /proc/devices</strong></span></p><p><span style="font-size: 12px">ඊළගට අපි බලමු අපි දෙන වචනය සම්පුර්ණ වචනයක් ලෙස හෝ වචනයක කොටසක් ලෙස ඇතුලත් lines ටික <strong>/proc/devices </strong>කියන<strong> </strong>file එකෙන් තෝරල බේරල print කරගන්නෙ කොහොමද කියල.</span></p><p><span style="font-size: 12px">අපි බලමු "sd" කියන වචනය තියෙන lines ටික ප්රින්ට් කරගන ආකාරය.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>grep <span style="color: #ff0000">sd</span> /proc/devices</strong> හෝ <strong>grep <span style="color: #0000ff">'</span><span style="color: #ff0000">sd</span><span style="color: #0000ff">'</span> /proc/devices</strong> හෝ <strong>grep <span style="color: #0000ff">"</span><span style="color: #ff0000">sd</span><span style="color: #0000ff">"</span> /proc/devices</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>grep "usb" /proc/devices</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ඔයාලට මතක ඇති මම මේ <strong>grep</strong> කමාන්ඩ් එක pipe මගින් cat කමාන්ඩ් එකත් එක්ක කලින් පාඩම් වලදි බාවිතා කරා. මෙන්න මේ වගේ.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>cat /proc/devices | grep sd</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">මම දැකපු UNIX / Linux admins ල සියලු දෙනාම වගේ grep කමාන්ඩ් එක use කරන්නෙ cat සහ | එකත් එක්ක. මමත් එහෙම තමයි. ඔයාලට පුළුවන් තමන් කැමති විදියකට grep බාවිතා කරන්න.</span></p><p><span style="font-size: 12px">අපි දැන් grep කමාන්ඩ් එකත් සමග switches කිහිපයක් ට්රයි කරලා බලමු. </span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>grep -v "sd" /proc/devices</strong> හෝ <strong>cat /proc/devices | grep sd -v</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">අපි මෙහිදී grep ට <strong>v</strong> කියන switch එක ලබාදීමෙන් "sd" කියන වචනය නොමැති lines ටික විතරක් තෝරලා ගන්න පුළුවන් වුනා.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>grep -c "sd" /proc/devices</strong> හෝ <strong>cat /proc/devices | grep sd -c</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">අපිට <strong>c</strong> කියන switch එක ලබාදීමෙන්, අපි ලබාදීපු වචනය (sd) අඩංගු lines කියක් file එකේ තියෙනවද කියල දැන ගන්න පුළුවන්. මේ කමාන්ඩ් එකෙන් වන දෙයම අපිට මෙවිදියටත් කරගන්න පුළුවන්.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>cat /proc/devices | grep sd | wc -l</strong> හෝ <strong>grep "sd" /proc/devices | wc -l</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">අපි මේ දක්වා කරපු උදාහරණ වල අපි දෙන වචනය සම්පුර්ණ වචනයක් හෝ වචනයක කොටසක් ලෙස අන්තර්ගතව තිබුනත් grep මගින් තෝරා දීමක් සිදු කරා.</span></p><p><span style="font-size: 12px">නමුත් ඇතැම් අවස්ථාවල අපිට හරියටම අපි දෙන වචනය පමණක් තිබෙන lines ටික තෝරා ගන්න අවශ්ය විටකදී අපි w කියන switch එක බාවිතා කරනව. එවිට අපිට ලැබෙන්නෙ හරියටම අපි දෙන වචනයම තිබෙන lines ටික විතරයි. අපි උදාහරණ ටිකක් ට්රයි කරලම බලමු.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>grep -w "usb" /proc/devices</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>cat /proc/devices | grep "usb" -w</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">දැන් අපි බලමු අපි සොයන වචනය තියෙන්නෙ කීවෙනි line එකේද කියල දන ගන්න විදිය. එකත් හරිම පහසුයි.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>grep -nw "usb" /proc/devices</strong> හෝ <strong>cat /proc/devices | grep "usb" -wn</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">දැන් ඔයාලට grep කමාන්ඩ් එක ගැන හොද දැනුමක් ලැබුන කියල මම හිතනව. අපිට DevOps පාඩම් ටික ඉදිරියට කරගෙන යන්න මේ දැනුම හොදටම ප්රමාණවත්. තව පොඩි සංකීර්ණ කරුණු කිහිපයක් grep ගෙ තියෙනව. මම ඉදිරියේදී ඒවත් විස්තර කරල දෙන්නම්.</span></p><p><span style="font-size: 12px">දැන් අපි යමු අපේ ඊලග කමාන්ඩ් එක වෙතට.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px"><strong><u>2) sleep</u></strong></span></p><p><span style="font-size: 12px">අපි මේ sleep කියන කමාන්ඩ් එක යොදාගන්නෙ අපිට යම්කිසි කමාන්ඩ් එකක් කිසියම් කාලයකට පසු execute කරගැනීමට. අපි terminal shell එකේදි sleep එතරම් යොදා නොගත්තත් අපිට shell scripts වලදි හුගක් වැදගත් වෙනව. අපි උදාහරණයකින්ම තේරුම් ගන්න බලමු. </span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>(sleep 120; echo -e "Hey, It's me.\n now you can press Enter")<span style="color: #ff0000">&</span></strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">තත්පර 120ක් ගියාට පස්සෙ අපිට මෙන්න මේ වගේ output එකක් ලැබෙනව </span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">මේ තියෙනෙ අපි echo කම්න්ඩ් එකෙන් ප්රින්ට් වෙන්න දාපු text එක. අපිට කමාන්ඩ් prompt එක ගන්න නම් Enter කීඑක press කරන්න වෙනව. Enter කී එකට කෙටුවට පස්සේ අපිට මේ වගේ පෙනවා.</span></p><p><span style="font-size: 12px">මේකෙන් කියන්නේ අපි (sleep 120; echo -e "Hey, It's me.\n now you can press Enter") කමාන්ඩ් එක & යොදා background job එකක් විදියට දීපු නිසා එම ජොබ් එකේ status එක ලෙස Done ලැබුන කියල.</span></p><p><span style="font-size: 12px">අපිට Linux වලදී sleep 120 වෙනුවට sleep 2m කියල යොදාගන්නත් පුළුවන්. නමුත් UNIX වලදී අපිට යොදාගන්න වෙන්නේ තත්පර ගණන integer value එකෙකින් පමණයි.මේ sleep කමාන්ඩ් එකට switches / options මොනවත් නෑ හොදද. interview වලදී හිටපු ගමන් අපි අහනව ඒවගේ දේවල්. මතකයි නේ ls ගැන. ? <img src="/styles/default/xenforo/smilies/default/happy.gif" class="smilie" loading="lazy" alt=":)" title="Happy :)" data-shortname=":)" /></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px"><strong><u>3) disown</u></strong></span></p><p><span style="font-size: 12px">මේ කමාන්ඩ් එක සම්බන්ද වෙන්නේ UNIX / Linux processes වලට තමයි. නමුත් මම එදා මේ ගැන කතා කරේ නෑ. මොකද අද තමයි හොදම දවස <img src="/styles/default/xenforo/smilies/default/happy.gif" class="smilie" loading="lazy" alt=":)" title="Happy :)" data-shortname=":)" /></span></p><p><span style="font-size: 12px">මම ඔයාලට කියල දුන්න කොහොමද අපි process එකක් job එකක් කරන්නේ කියල. ඔයාල දන්නව job එකක් කියන්නෙ daemon එකක් නොවෙන background process එකකට කියල. අපි කිසියම් process එකක් background එකේ රන් කරනවිට එය අපිට jobs -l කියන කමාන්ඩ් එකෙන් බලාගන්න පුළුවන් කියල.</span></p><p><span style="font-size: 12px">අමතක අය මේ විදියට මතක් කරගන්න හොදේ .</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>sleep 100 &</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>jobs -l</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">දැන් මතකයි නේ ....</span></p><p><span style="font-size: 12px">අපි මේ disown කමාන්ඩ් එකෙන් කරන්නෙ මෙන්නමේ jobs list එකේ තිබෙන job එකක් එයින් ඉවත් කරන ක්රියාවයි. අපි මේ විදියට jobs list එකෙන් අයින් කලත් එය පෙර පරිදිම process එකක් විදියට රන් වෙනව. අපි disown යොදාගෙන කිසියම් job එකක් jobs list එකෙන් අයින් කලපසු. shell එක terminate වුවත් එය පෙර පරිදිම background process එකක් විදියට රන් වෙනව. නමුත් එය තවදුරටත් background job එකක් නොවේ. අපි කිසියම් job එකක් disown කලට පසු තවදුරටත් අපිට jobs -l කමාන්ඩ් එක මගින් බලා ගැනීමට නොහැක. නමුත් ps බාවිතා කිරීමෙන් බලාගන්න පුළුවන්. තවදුරටත් උදාහරණ මගින් මේ කරුණු පැහැදිලි කරගන්න ට්රයි එකක් දෙමු.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>sleep 120 &</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">අපි දැන් බලමු background job එකක් විදියට ඒක රන් වෙනවද කියල.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි jobs -l</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ඔය තියෙන්නේ [1]+ 11657 Running කියල . දැන් අපි disown කමාන්ඩ් එක දීල බලමු.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>disown %<span style="color: #9900ff">1</span></strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">අපි මෙහිදී disown කමාන්ඩ් එකට % සමග job number එක දීල තමයි job එක disown කරන්නෙ. දැන් අපි බලමු තාමත් අපේ sleep කමාන්ඩ් එක current shell එකේ job list එකේ තියෙනවද කියල.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>jobs -l</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">අපිට jobs -l කමාන්ඩ් එකට කිසිම දෙයක් ලැබුනෙ නෑ. හරි දැන් sleep කමාන්ඩ් එක අපේ current shell එකෙන් job එකක් නෙවි. දැන් ඒක background process එකක් විතරයි. මේ බලන්න.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>ps -lf -C "sleep"</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">අපි දැන් terminal එක closed කරත් sleep process එක background එකේ රන් වෙනව.</span></p><p><span style="font-size: 12px">මේකත් හරියට nohup වගේ. නමුත් nohup යෙදිය යුත්තෙ job එක ආරම්බ කරනවිට. නමුත් disown අපිට job එක රන් වෙන අතරෙදි දෙන්න පුළුවන්.</span></p><p><span style="font-size: 12px">මේ කරුණත් හොදින් මතක තියාගන්න මම මේ පාඩම් මාලාවෙ UNIX / Linux Job control ගැන ඔයාලට කියල දුන්නෙ bash shell එක හා සම්බන්ද කරුණු පමණයි.</span></p><p><span style="font-size: 12px">UNIX / Linux processes සහ job control කරන ආකාරයන් ටිකක් සංකීර්ණ හා පැටලිලි සහිතයි. අපි බාවිතා කරන shell එක අනුව වෙනස් වෙනව. දැනට මේ කියල දුන්නු කරුණු ටික ගැන අවදානය යොමුකරන්න. වැඩි විස්තර මගේ සංකීර්ණ UNIX / Linux කමාන්ඩ් පාඩම් මාලාවෙන් කතා කරනව.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px"><strong><u>4) wait</u></strong>අපි දැන් බලමු මොකක්ද මේ wait කියන්නේ කියල. මේකත් හරියට "wait for me" කියනව වගේ දෙයක්. අපිට මේ විදියට විස්තර කරන්න පුළුවන්. අපි හිතමු දැන් අපිට කමාන්ඩ් කිහිපයක් එක පෙලට රන් කරගන්න ඕන කියල නමුත් එම කමාන්ඩ්ස් රන් වෙන්න ඕන එකක් රන් වෙලා අවසන් වුනාට පස්සෙ අනෙක් එක රන්වන ආකාරයට යි. අපි එහිදී wait බාවිතා කරනව.</span></p><p><span style="font-size: 12px">(අපිට terminal shell එකෙදිනම් wait නැතුව වෙන පහසු ක්රමයකටත් මෙය කළ හැකියි) .</span></p><p><span style="font-size: 12px">දැන් උදාහරණයක් ගෙන බලමු.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>seq 1000000000 1>/dev/null& wait; echo -e "Hey, I'm Echo"</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">අපි මේ කමාන්ඩ් එක දීපු ගමන්ම අපිට මෙන්න මේ වගේ output එකක් ලැබෙන්නෙ.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">නමුත් අපිට command prompt එක ලැබෙන්නෙ නැ. "seq 1000000000" කියන background job එක අවසන් වුනාට පස්සෙ තමයි echo -e "Hey, I'm Echo" කියන කමාන්ඩ් එක රන් වෙලා. අපිට </span></p><p><span style="font-size: 12px">මේ ටික දැක ගන්න ලැබෙන්නෙ </span></p><p><span style="font-size: 12px">අපි ඉහත කම්න්ඩ් එක wait නැතුව දීල ලැබෙන output එකෙන් වෙනස වැටහ ගනිමු.</span></p><p><span style="font-size: 12px">ට්රයි <strong>seq 1000000000 1>/dev/null& echo -e "Hey, I'm Echo"</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">අපි <strong>seq 1000000000 1>/dev/null& echo -e "Hey, I'm Echo"</strong> කමාන්ඩ් එක දීපු ගමන්ම අපිට මේ</span></p><p><span style="font-size: 12px"> </span></p><p><span style="font-size: 12px">output එක ලැබුන. එහිදී "Hey, I'm Echo" ප්රින්ට් වෙන්න "seq 1000000000" කමාන්ඩ් එක ඉවර වෙනකම් හිටියේ නැ. දැක්ක නේද වෙනස. ?</span></p><p><span style="font-size: 12px">අපි දැන් තවත් කමාන්ඩ් එකක් ඉගෙන ගනිමු.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px"><strong><u>5) tee</u></strong></span></p><p><span style="font-size: 12px">මේ tee කමාන්ඩ් එක ටිකක් පුදුමාකාර කමාන්ඩ් එකක්. මේ tee කමාන්ඩ් එකට පුළුවන් එයාගෙ stdin එකට ලැබෙන දේ 1:1 කොපියක් වගේ stdout එකට සහ තවත් file එකකට හෝ file කිහිපයකට කොපි කරන්න. අපි උදාහරණයක් කරල බලමු. මම මේ උදාහරණයට යොදාගන්නෙ මගේ ~/lsmore directory එකට ls -l කමාන්ඩ් එක දීල එහි stdout එක tee කමාන්ඩ් එකට pipe කිරීමයි.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>ls -l ~/lsmore<span style="color: #ff0000">|</span>tee ~/tee_out_file1</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">දැන් අපි බලමු <strong>~/tee_out_file1 </strong>file එකේ තියෙන දේවල් මොනවද කියල </span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>cat ~/tee_out_file1</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ඔයාලට පේනවා නේද ~/tee_out_file1 file එක තුල තියෙන්නෙත් tee හි stdout එකේ දුන්න දේම කියල. </span></p><p><span style="font-size: 12px">අපිට tee කමාන්ඩ් එක මේ විදියටත් බාවිතා කරන්න පුළුවන්.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>ls -l ~/lsmore|tee 1> ~/tee_out_file0 ~/tee_out_file1 ~/tee_out_file2</strong></span></p><p><span style="font-size: 12px"> </span></p><p><span style="font-size: 12px">මෙහිදී අපිට <strong>tee_out_file0, </strong><strong>tee_out_file1 </strong>සහ<strong> </strong><strong>tee_out_file2</strong> කියල files තුනක් ලැබුන.</span></p><p><span style="font-size: 12px">අපි දැන් බලමු කොහොමද අපි tee කමාන්ඩ් එකෙන් දැනට තියෙන file එකක් overwrite කරන්නැතුව ඒකට data append කරන්නෙ කියල. අපි මේ සදහා tee සමග a කියන switch එක යොදාගන්නව.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>ls -l ~/lsmore|tee -<span style="color: #0000ff">a</span> 1> ~/tee_out_file0 ~/tee_out_file1 ~/tee_out_file2</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">මේ කමාන්ඩ් එකෙන් වෙන්නෙ කලින් පාර tee හදපු ~/tee_out_file1 හා ~/tee_out_file2 කියන files දෙකට නැවත වාරයක් data එකතුවෙන එක. ඒ කියන්නෙ මෙම කමාන්ඩ් එක දුන්නට පස්සෙ ~/tee_out_file1 හා ~/tee_out_file2 කියන file දෙකේ ~/tee_out_file0 ගෙ තියෙන lines ප්රමාණය වගේ දෙගුණයක් lines තියෙන්න ඕන බව.</span></p><p><span style="font-size: 12px">අපි ඒක මේ විදියට චෙක් කරල බලමු.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>cat ~/tee_out_file0|wc -l</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>cat ~/tee_out_file1|wc -l</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">ට්රයි <strong>cat ~/tee_out_file2|wc -l</strong></span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px"><strong>~/tee_out_file0 </strong>එකේ lines ගණන 50ක් වෙන්නෙ <strong>ls -l</strong> හි stdout එකෙන් tee ට pipe කරන්නෙ lines 50ක් නිසා. මම ඔයාලට මුලින්ම කිවුව tee ට පුළුවන් කියල tee ගෙ stdin එකෙ 1:1 කොපියක් stdout එකෙන් පිටකරන්න. මෙහිදී <strong>1></strong> මගින් කරන්නෙ එම stdout එක standard output redirect මගින් file එකකට දෙන එකයි. </span></p><p><span style="font-size: 12px"> </span></p><p><span style="font-size: 12px">අපිට මේ tee කමාන්ඩ් එක binary data සමගත් යොදාගන්න පුළුවන්. අපි video encoding වැඩ කරනකොට එක Video source එකක් tee කමාන්ඩ් එක මගින් FFMpeg වගේ encoders කිහිපයකට දෙනව. මම ඉදිරියේදී ට්රයි එකක් දෙන්නම් ඔයාලට ඒ ගැනත් කියල දෙන්න.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">අපිට දැන් UNIX / Linux මූලික කමාන්ඩ්ස් ගැන හොද අවබෝදයක් තියෙන නිසා. shell script පාඩම් ටික පටන්ගන්න පුළුවන්.</span></p><p><span style="font-size: 12px"></span></p><p><span style="font-size: 12px">නැවතත් shell script වලින් හමුවෙමු.</span></p><p><span style="font-size: 12px">ස්තුතියි!</span></p></blockquote><p></p>
[QUOTE="ja2k17ja, post: 21922239, member: 562617"] [b]DevOps_UNIX / Linux_11_UNIX / Linux - disown, sleep, wait සහ තවත් අමතර commands කිහිප[/b] [SIZE="3"][b]DevOps_UNIX / Linux_11_UNIX / Linux - disown, sleep, wait සහ තවත් අමතර commands කිහිපයක්[/b] අපි අද පාඩමෙන් කතා කරන්න යන්නෙ තවත් අපිට වැදගත් වෙන UNIX / Linux කමාන්ඩ්ස් කිහිපයක් ගැන. මේ තමා අපේ මූලික UNIX / Linux කමාන්ඩ්ස් පාඩම් මාලාවේ අවසාන පාඩම. මේ දක්වා මගේ පාඩම් මාලාව සමග රැදී සිටියට මුලින්ම ඔයාලට ස්තුතියි!අද පාඩමෙන් මම කතා කරන්න බලාපොරොත්තු වෙන්නෙ [LIST=1] [*]grep [*]sleep [*]disown [*]wait [*]tee [/LIST] කමාන්ඩ්ස් ගැන කතා කරන්න. දැන් එහෙම නම් අපි වැඩේ පටන් ගනිමු. [b][u]1) grep [/u][/b]අපිට පුළුවන් මෙම කමාන්ඩ් එක use කරල file එකක තිබෙන, අපි දෙන regular expression එකට match වෙන (ගැලපෙන) පේලි ටික සොයා ගන්න. regular expression කියල කියන එක ටික බර වචනයක්. එක නිසා මම උදාහරණයකින් පෙන්වන්නම් මොකක්ද ඒ කියල. අපි උදාහරණය ලෙස [b]/proc/devices [/b]file එක ගනිමු. අපිට මේ කමාන්ඩ් එකෙන් පුළුවන් එම file එක තුල තිබෙන දේවල් ටික මුලින්ම බලාගන්න. ට්රයි [b]cat /proc/devices[/b] ඊළගට අපි බලමු අපි දෙන වචනය සම්පුර්ණ වචනයක් ලෙස හෝ වචනයක කොටසක් ලෙස ඇතුලත් lines ටික [b]/proc/devices [/b]කියන[b] [/b]file එකෙන් තෝරල බේරල print කරගන්නෙ කොහොමද කියල. අපි බලමු "sd" කියන වචනය තියෙන lines ටික ප්රින්ට් කරගන ආකාරය. ට්රයි [b]grep [color=#ff0000]sd[/color] /proc/devices[/b] හෝ [b]grep [color=#0000ff]'[/color][color=#ff0000]sd[/color][color=#0000ff]'[/color] /proc/devices[/b] හෝ [b]grep [color=#0000ff]"[/color][color=#ff0000]sd[/color][color=#0000ff]"[/color] /proc/devices[/b] ට්රයි [b]grep "usb" /proc/devices[/b] ඔයාලට මතක ඇති මම මේ [b]grep[/b] කමාන්ඩ් එක pipe මගින් cat කමාන්ඩ් එකත් එක්ක කලින් පාඩම් වලදි බාවිතා කරා. මෙන්න මේ වගේ. ට්රයි [b]cat /proc/devices | grep sd[/b] මම දැකපු UNIX / Linux admins ල සියලු දෙනාම වගේ grep කමාන්ඩ් එක use කරන්නෙ cat සහ | එකත් එක්ක. මමත් එහෙම තමයි. ඔයාලට පුළුවන් තමන් කැමති විදියකට grep බාවිතා කරන්න. අපි දැන් grep කමාන්ඩ් එකත් සමග switches කිහිපයක් ට්රයි කරලා බලමු. ට්රයි [b]grep -v "sd" /proc/devices[/b] හෝ [b]cat /proc/devices | grep sd -v[/b] අපි මෙහිදී grep ට [b]v[/b] කියන switch එක ලබාදීමෙන් "sd" කියන වචනය නොමැති lines ටික විතරක් තෝරලා ගන්න පුළුවන් වුනා. ට්රයි [b]grep -c "sd" /proc/devices[/b] හෝ [b]cat /proc/devices | grep sd -c[/b] අපිට [b]c[/b] කියන switch එක ලබාදීමෙන්, අපි ලබාදීපු වචනය (sd) අඩංගු lines කියක් file එකේ තියෙනවද කියල දැන ගන්න පුළුවන්. මේ කමාන්ඩ් එකෙන් වන දෙයම අපිට මෙවිදියටත් කරගන්න පුළුවන්. ට්රයි [b]cat /proc/devices | grep sd | wc -l[/b] හෝ [b]grep "sd" /proc/devices | wc -l[/b] අපි මේ දක්වා කරපු උදාහරණ වල අපි දෙන වචනය සම්පුර්ණ වචනයක් හෝ වචනයක කොටසක් ලෙස අන්තර්ගතව තිබුනත් grep මගින් තෝරා දීමක් සිදු කරා. නමුත් ඇතැම් අවස්ථාවල අපිට හරියටම අපි දෙන වචනය පමණක් තිබෙන lines ටික තෝරා ගන්න අවශ්ය විටකදී අපි w කියන switch එක බාවිතා කරනව. එවිට අපිට ලැබෙන්නෙ හරියටම අපි දෙන වචනයම තිබෙන lines ටික විතරයි. අපි උදාහරණ ටිකක් ට්රයි කරලම බලමු. ට්රයි [b]grep -w "usb" /proc/devices[/b] ට්රයි [b]cat /proc/devices | grep "usb" -w[/b] දැන් අපි බලමු අපි සොයන වචනය තියෙන්නෙ කීවෙනි line එකේද කියල දන ගන්න විදිය. එකත් හරිම පහසුයි. ට්රයි [b]grep -nw "usb" /proc/devices[/b] හෝ [b]cat /proc/devices | grep "usb" -wn[/b] දැන් ඔයාලට grep කමාන්ඩ් එක ගැන හොද දැනුමක් ලැබුන කියල මම හිතනව. අපිට DevOps පාඩම් ටික ඉදිරියට කරගෙන යන්න මේ දැනුම හොදටම ප්රමාණවත්. තව පොඩි සංකීර්ණ කරුණු කිහිපයක් grep ගෙ තියෙනව. මම ඉදිරියේදී ඒවත් විස්තර කරල දෙන්නම්. දැන් අපි යමු අපේ ඊලග කමාන්ඩ් එක වෙතට. [b][u]2) sleep[/u][/b] අපි මේ sleep කියන කමාන්ඩ් එක යොදාගන්නෙ අපිට යම්කිසි කමාන්ඩ් එකක් කිසියම් කාලයකට පසු execute කරගැනීමට. අපි terminal shell එකේදි sleep එතරම් යොදා නොගත්තත් අපිට shell scripts වලදි හුගක් වැදගත් වෙනව. අපි උදාහරණයකින්ම තේරුම් ගන්න බලමු. ට්රයි [b](sleep 120; echo -e "Hey, It's me.\n now you can press Enter")[color=#ff0000]&[/color][/b] තත්පර 120ක් ගියාට පස්සෙ අපිට මෙන්න මේ වගේ output එකක් ලැබෙනව මේ තියෙනෙ අපි echo කම්න්ඩ් එකෙන් ප්රින්ට් වෙන්න දාපු text එක. අපිට කමාන්ඩ් prompt එක ගන්න නම් Enter කීඑක press කරන්න වෙනව. Enter කී එකට කෙටුවට පස්සේ අපිට මේ වගේ පෙනවා. මේකෙන් කියන්නේ අපි (sleep 120; echo -e "Hey, It's me.\n now you can press Enter") කමාන්ඩ් එක & යොදා background job එකක් විදියට දීපු නිසා එම ජොබ් එකේ status එක ලෙස Done ලැබුන කියල. අපිට Linux වලදී sleep 120 වෙනුවට sleep 2m කියල යොදාගන්නත් පුළුවන්. නමුත් UNIX වලදී අපිට යොදාගන්න වෙන්නේ තත්පර ගණන integer value එකෙකින් පමණයි.මේ sleep කමාන්ඩ් එකට switches / options මොනවත් නෑ හොදද. interview වලදී හිටපු ගමන් අපි අහනව ඒවගේ දේවල්. මතකයි නේ ls ගැන. ? :) [b][u]3) disown[/u][/b] මේ කමාන්ඩ් එක සම්බන්ද වෙන්නේ UNIX / Linux processes වලට තමයි. නමුත් මම එදා මේ ගැන කතා කරේ නෑ. මොකද අද තමයි හොදම දවස :) මම ඔයාලට කියල දුන්න කොහොමද අපි process එකක් job එකක් කරන්නේ කියල. ඔයාල දන්නව job එකක් කියන්නෙ daemon එකක් නොවෙන background process එකකට කියල. අපි කිසියම් process එකක් background එකේ රන් කරනවිට එය අපිට jobs -l කියන කමාන්ඩ් එකෙන් බලාගන්න පුළුවන් කියල. අමතක අය මේ විදියට මතක් කරගන්න හොදේ . ට්රයි [b]sleep 100 &[/b] ට්රයි [b]jobs -l[/b] දැන් මතකයි නේ .... අපි මේ disown කමාන්ඩ් එකෙන් කරන්නෙ මෙන්නමේ jobs list එකේ තිබෙන job එකක් එයින් ඉවත් කරන ක්රියාවයි. අපි මේ විදියට jobs list එකෙන් අයින් කලත් එය පෙර පරිදිම process එකක් විදියට රන් වෙනව. අපි disown යොදාගෙන කිසියම් job එකක් jobs list එකෙන් අයින් කලපසු. shell එක terminate වුවත් එය පෙර පරිදිම background process එකක් විදියට රන් වෙනව. නමුත් එය තවදුරටත් background job එකක් නොවේ. අපි කිසියම් job එකක් disown කලට පසු තවදුරටත් අපිට jobs -l කමාන්ඩ් එක මගින් බලා ගැනීමට නොහැක. නමුත් ps බාවිතා කිරීමෙන් බලාගන්න පුළුවන්. තවදුරටත් උදාහරණ මගින් මේ කරුණු පැහැදිලි කරගන්න ට්රයි එකක් දෙමු. ට්රයි [b]sleep 120 &[/b] අපි දැන් බලමු background job එකක් විදියට ඒක රන් වෙනවද කියල. ට්රයි jobs -l ඔය තියෙන්නේ [1]+ 11657 Running කියල . දැන් අපි disown කමාන්ඩ් එක දීල බලමු. ට්රයි [b]disown %[color=#9900ff]1[/color][/b] අපි මෙහිදී disown කමාන්ඩ් එකට % සමග job number එක දීල තමයි job එක disown කරන්නෙ. දැන් අපි බලමු තාමත් අපේ sleep කමාන්ඩ් එක current shell එකේ job list එකේ තියෙනවද කියල. ට්රයි [b]jobs -l[/b] අපිට jobs -l කමාන්ඩ් එකට කිසිම දෙයක් ලැබුනෙ නෑ. හරි දැන් sleep කමාන්ඩ් එක අපේ current shell එකෙන් job එකක් නෙවි. දැන් ඒක background process එකක් විතරයි. මේ බලන්න. ට්රයි [b]ps -lf -C "sleep"[/b] අපි දැන් terminal එක closed කරත් sleep process එක background එකේ රන් වෙනව. මේකත් හරියට nohup වගේ. නමුත් nohup යෙදිය යුත්තෙ job එක ආරම්බ කරනවිට. නමුත් disown අපිට job එක රන් වෙන අතරෙදි දෙන්න පුළුවන්. මේ කරුණත් හොදින් මතක තියාගන්න මම මේ පාඩම් මාලාවෙ UNIX / Linux Job control ගැන ඔයාලට කියල දුන්නෙ bash shell එක හා සම්බන්ද කරුණු පමණයි. UNIX / Linux processes සහ job control කරන ආකාරයන් ටිකක් සංකීර්ණ හා පැටලිලි සහිතයි. අපි බාවිතා කරන shell එක අනුව වෙනස් වෙනව. දැනට මේ කියල දුන්නු කරුණු ටික ගැන අවදානය යොමුකරන්න. වැඩි විස්තර මගේ සංකීර්ණ UNIX / Linux කමාන්ඩ් පාඩම් මාලාවෙන් කතා කරනව. [b][u]4) wait[/u][/b]අපි දැන් බලමු මොකක්ද මේ wait කියන්නේ කියල. මේකත් හරියට "wait for me" කියනව වගේ දෙයක්. අපිට මේ විදියට විස්තර කරන්න පුළුවන්. අපි හිතමු දැන් අපිට කමාන්ඩ් කිහිපයක් එක පෙලට රන් කරගන්න ඕන කියල නමුත් එම කමාන්ඩ්ස් රන් වෙන්න ඕන එකක් රන් වෙලා අවසන් වුනාට පස්සෙ අනෙක් එක රන්වන ආකාරයට යි. අපි එහිදී wait බාවිතා කරනව. (අපිට terminal shell එකෙදිනම් wait නැතුව වෙන පහසු ක්රමයකටත් මෙය කළ හැකියි) . දැන් උදාහරණයක් ගෙන බලමු. ට්රයි [b]seq 1000000000 1>/dev/null& wait; echo -e "Hey, I'm Echo"[/b] අපි මේ කමාන්ඩ් එක දීපු ගමන්ම අපිට මෙන්න මේ වගේ output එකක් ලැබෙන්නෙ. නමුත් අපිට command prompt එක ලැබෙන්නෙ නැ. "seq 1000000000" කියන background job එක අවසන් වුනාට පස්සෙ තමයි echo -e "Hey, I'm Echo" කියන කමාන්ඩ් එක රන් වෙලා. අපිට මේ ටික දැක ගන්න ලැබෙන්නෙ අපි ඉහත කම්න්ඩ් එක wait නැතුව දීල ලැබෙන output එකෙන් වෙනස වැටහ ගනිමු. ට්රයි [b]seq 1000000000 1>/dev/null& echo -e "Hey, I'm Echo"[/b] අපි [b]seq 1000000000 1>/dev/null& echo -e "Hey, I'm Echo"[/b] කමාන්ඩ් එක දීපු ගමන්ම අපිට මේ output එක ලැබුන. එහිදී "Hey, I'm Echo" ප්රින්ට් වෙන්න "seq 1000000000" කමාන්ඩ් එක ඉවර වෙනකම් හිටියේ නැ. දැක්ක නේද වෙනස. ? අපි දැන් තවත් කමාන්ඩ් එකක් ඉගෙන ගනිමු. [b][u]5) tee[/u][/b] මේ tee කමාන්ඩ් එක ටිකක් පුදුමාකාර කමාන්ඩ් එකක්. මේ tee කමාන්ඩ් එකට පුළුවන් එයාගෙ stdin එකට ලැබෙන දේ 1:1 කොපියක් වගේ stdout එකට සහ තවත් file එකකට හෝ file කිහිපයකට කොපි කරන්න. අපි උදාහරණයක් කරල බලමු. මම මේ උදාහරණයට යොදාගන්නෙ මගේ ~/lsmore directory එකට ls -l කමාන්ඩ් එක දීල එහි stdout එක tee කමාන්ඩ් එකට pipe කිරීමයි. ට්රයි [b]ls -l ~/lsmore[color=#ff0000]|[/color]tee ~/tee_out_file1[/b] දැන් අපි බලමු [b]~/tee_out_file1 [/b]file එකේ තියෙන දේවල් මොනවද කියල ට්රයි [b]cat ~/tee_out_file1[/b] ඔයාලට පේනවා නේද ~/tee_out_file1 file එක තුල තියෙන්නෙත් tee හි stdout එකේ දුන්න දේම කියල. අපිට tee කමාන්ඩ් එක මේ විදියටත් බාවිතා කරන්න පුළුවන්. ට්රයි [b]ls -l ~/lsmore|tee 1> ~/tee_out_file0 ~/tee_out_file1 ~/tee_out_file2[/b] මෙහිදී අපිට [b]tee_out_file0, [/b][b]tee_out_file1 [/b]සහ[b] [/b][b]tee_out_file2[/b] කියල files තුනක් ලැබුන. අපි දැන් බලමු කොහොමද අපි tee කමාන්ඩ් එකෙන් දැනට තියෙන file එකක් overwrite කරන්නැතුව ඒකට data append කරන්නෙ කියල. අපි මේ සදහා tee සමග a කියන switch එක යොදාගන්නව. ට්රයි [b]ls -l ~/lsmore|tee -[color=#0000ff]a[/color] 1> ~/tee_out_file0 ~/tee_out_file1 ~/tee_out_file2[/b] මේ කමාන්ඩ් එකෙන් වෙන්නෙ කලින් පාර tee හදපු ~/tee_out_file1 හා ~/tee_out_file2 කියන files දෙකට නැවත වාරයක් data එකතුවෙන එක. ඒ කියන්නෙ මෙම කමාන්ඩ් එක දුන්නට පස්සෙ ~/tee_out_file1 හා ~/tee_out_file2 කියන file දෙකේ ~/tee_out_file0 ගෙ තියෙන lines ප්රමාණය වගේ දෙගුණයක් lines තියෙන්න ඕන බව. අපි ඒක මේ විදියට චෙක් කරල බලමු. ට්රයි [b]cat ~/tee_out_file0|wc -l[/b] ට්රයි [b]cat ~/tee_out_file1|wc -l[/b] ට්රයි [b]cat ~/tee_out_file2|wc -l[/b] [b]~/tee_out_file0 [/b]එකේ lines ගණන 50ක් වෙන්නෙ [b]ls -l[/b] හි stdout එකෙන් tee ට pipe කරන්නෙ lines 50ක් නිසා. මම ඔයාලට මුලින්ම කිවුව tee ට පුළුවන් කියල tee ගෙ stdin එකෙ 1:1 කොපියක් stdout එකෙන් පිටකරන්න. මෙහිදී [b]1>[/b] මගින් කරන්නෙ එම stdout එක standard output redirect මගින් file එකකට දෙන එකයි. අපිට මේ tee කමාන්ඩ් එක binary data සමගත් යොදාගන්න පුළුවන්. අපි video encoding වැඩ කරනකොට එක Video source එකක් tee කමාන්ඩ් එක මගින් FFMpeg වගේ encoders කිහිපයකට දෙනව. මම ඉදිරියේදී ට්රයි එකක් දෙන්නම් ඔයාලට ඒ ගැනත් කියල දෙන්න. අපිට දැන් UNIX / Linux මූලික කමාන්ඩ්ස් ගැන හොද අවබෝදයක් තියෙන නිසා. shell script පාඩම් ටික පටන්ගන්න පුළුවන්. නැවතත් shell script වලින් හමුවෙමු. ස්තුතියි![/SIZE] [/QUOTE]
Insert quotes…
Verification
Asuwa dahayen wadi kalama keeyada?
Post reply
Top
Bottom