Normal view

There are new articles available, click to refresh the page.
Before yesterdayMartin Vijay Deepak

 Presented my Talk on ILUGC Meet – April 2024

Topic: Linux Man Page Essentials
Description: In this talk we shall understand how to move and jump around man page, how to search a man page, what are the conventions of man page, we shall take a look into ls man page as an example, and what are man page sections.
Duration: 20 min
Full Name: Martin Vijai Deepak
About Yourself: Former IT Employee who worked only on Microsoft web application projects for 10 years. Currently Self employed (Non IT) and living in coimbatore.
Adapting to the Linux/Ubuntu ecosystem 5 years back. Started learning Linux Administration from jan 2024.


 Presented my Talk on ILUGC Meet – April 2024

Topic: Linux Man Page Essentials
Description: In this talk we shall understand how to move and jump around man page, how to search a man page, what are the conventions of man page, we shall take a look into ls man page as an example, and what are man page sections.
Duration: 20 min
Full Name: Martin Vijai Deepak
About Yourself: Former IT Employee who worked only on Microsoft web application projects for 10 years. Currently Self employed (Non IT) and living in coimbatore.
Adapting to the Linux/Ubuntu ecosystem 5 years back. Started learning Linux Administration from jan 2024.


மழலைக் காதல் – Tech Highlights 20

மதன்: என்ன ரொம்பத் தீவிரமா ஏதோ பாத்துட்டு இருக்கீங்க போல.
கார்த்திகா: Terminal’ல பயன்படுத்தும் editors பத்தி படிச்சேன், அதாங்க vi, emacs, nano
மதன்: Oh, எது easyயா இருக்கு?
கார்த்திகா: nano தான்.

மதன்: எது கஷ்டமா இருக்கு?
கார்த்திகா: vi
மதன்: இந்த emacs டிரை பண்ணீங்களா?
கார்த்திகா: பண்ணேன், ரொம்ப வித்தியாசமா இருக்கு.
மதன்: ஆமாம் emacs வித்தியாசமாத்தான் இருக்கும், ஏன்னா அது editor உருவத்துல இருக்குற ஒரு language interpreter, அதாவது python மாதிரி.
கார்த்திகா: என்னது, language interpreterரா?

மதன்: ஆமாம், emacs ஒரு Lisp language interpreter, Linux இருக்குறவங்க emacs ஐக் கிட்டத்தட்ட ஒரு operating systemனே சொல்லுவாங்க ஏன்னா அதுல இல்லாதது எதுவுமே இல்ல, அதுல இருக்குற plugins வேற எந்த ஒரு editorக்கும் கிடையாது.
கார்த்திகா: எனக்கு எத கத்துக்கிட்டா long runல useபுல்லா இருக்கும்?
மதன்: emacs தான், ஆனா நீங்க சொன்ன இந்த editors கத்துக்குறதுக்கு முன்னாடி ஒரு முக்கியமான editorர நீங்க கண்டிப்பாக் கத்துக்கனும், அந்த editorருக்குப் பேரு ed.
கார்த்திகா: அப்படி என்ன அது அவ்வளவு முக்கியம்?
மதன்: ஏன்னா orginal unixல இருந்த முதல் editor இதுதான்.
கார்த்திகா உடனே அதன் manualலை எடுத்துப் படிக்க ஆரம்பித்தாள்.
மதன்: எந்த manualல் page பார்க்குறீங்க?
கார்த்திகா: man ed command போட்டு வர manualலைத்தான்
மதன்: அது வேணாம் https://man.freebsd.org/ போய் ed கொடுத்து search பண்னுங்க, அதுல வர ed manualல படிங்க.

கார்த்திகா: ed ஒரு line oriented editorரா?
மதன்: ஆம், அதுக்கு இரண்டு mode உண்டு,

ஒன்னு command mode
இன்னொன்னு insert mode
ed modes

நீங்க ed command கொடுத்து enter கொடுத்ததுமே அது defaultடா command modeலதான் இருக்கும், command modeல ஓவ்வொரு key pressசுக்கும் ஒரு அர்த்தம் உண்டு,

i அல்லது a key press command modeல இருந்து insert modeக்குப் போக
ஒரு தனி lineன்ல . dot insert modeல இருந்து command modeக்கு வர
w key கொடுத்து ஒரு space கொடுத்து பக்கத்துல file name கொடுக்கனும்நாம செய்தத சேமிக்க
qed ல இருந்து வெளிய வர
command mode key press அர்த்தம்

command modeல இருந்து insert modeக்குப் போக i அல்லது a key press பண்ணனும். insert modeல எல்லா key pressசும் சாதாரண அர்த்தம்தான். insert modeல இருந்து command modeக்கு வர ஒரு தனி lineன்ல . dot வைக்கனும், நாம செய்தத சேமிக்க w key கொடுத்து ஒரு space கொடுத்து பக்கத்துல file name கொடுக்கனும், ed ல இருந்து வெளிய வர q கொடுக்கனும்.

அதன்படி கார்த்திகா செய்து பார்த்தாள்.

கார்த்திகா: Super, செம்மைய இருக்கு.
அவள் ed editorரில் உருவாக்கிய கோப்பை cat பயன்படுத்தி என்ன இருக்கின்றது என்று பார்த்தாள்.

கார்த்திகா: ‘இருங்க இப்ப நான் அதே fileல edit பண்ணிப் பார்க்குறேன்
அதே கோப்பை ed இல் மீண்டும் திறந்தாள்.

கார்த்திகா cat பயன்படுத்தி அந்தக் கோப்பைப் பார்ப்பதைக் கண்ட மதன்
மதன்: ஏன் cat use பண்ணிப் பார்க்குறீங்க, ed லயே 1,$p அப்படின்னு command modeல இருக்கும்போது கொடுத்தா முழு fileலயும் காமிக்கும், அதாவது முதல் வரில இருந்து கடைசி வரி வரைக்கும் காண்பிக்கச் சொல்றோம், இத இன்னும் simpleளா ,p கொடுத்தும் பார்க்கலாம்.

அதன்படிக் கார்த்திகா செய்தாள்

மதன்: இனிதான் ed யோட பவர பார்க்கப் போறீங்க, அந்த fileல world இருக்குற line மட்டும் காட்ட g/world/p அப்படின்னு கொடுங்க.

கார்த்திகா அப்படியே செய்தாள்.

மதன்: இதுதான் நாம use பண்ற grep command, அதாவது ed யோட g//p தான் grep commandடா மாறுச்சு.
மதன் கூறிவிட்டுச் சிரிக்க கார்த்திகாவும் புன்னகைத்தாள்.
மதன்: இன்னொரு power பார்க்கலாம், இப்போ world ல எடுத்துட்டு அதுக்கு பதிலா karthika அப்படின்னு வரவழைக்க 1,$s/world/karthika/g கொடுங்க, பிறகு ,p கொடுங்க
கார்த்திகாவும் அப்படியே செய்தாள்.

கார்த்திகா: இது என்ன ? காட்டுது
மதன்: ‘நீங்க world ஐ karthika ன்னு மாத்திட்டீங்கள்ள, அத save செய்யவில்லைன்னு காட்டுது, h கொடுங்க, இப்போ என்ன தவறு நடக்குதுன்னு காட்டும்.
கார்த்திகா அதைச் செய்தாள்.

கார்த்திகா: இப்போ w கொடுத்து save பண்ணனும் correctடா?
ஆம் என்பதுபோல் மதன் தலை ஆட்டினான்.

கார்த்திகா: எனக்கு இந்த editor ரொம்பப் பிடிச்சிருக்கு
மதன்: அப்போ உங்களுக்கு sed commandடும் மிகவும் பிடிக்கும், ஏன்னா sed என்பது stream editor அதாவது stream ed அப்படிங்குறத குறிக்குது. ed ல செய்யுற அத்தன commandசையும் sed லயும் செய்யலாம்.
கார்த்திகா: அப்போ, ed command தான் grep commandடுக்கும் sed commandடுக்கும் அடிப்படை correctக்டா?
மதன்: அதுமட்டும் இல்ல, regex அப்படிங்குற concept முதன் முதலா implement பண்ண applicationனும் ed editor தான்.
மதன்: கார்த்திகா, இப்ப நீங்க ஒரு முக்கியமான கட்டத்துக்கு வந்துட்டீங்க, https://man.freebsd.org ல sh கொடுத்து வரும் manualல போய்ப் படிங்க, அத இப்ப நீங்க படிச்சீங்கன்னா superரா shell scripting கத்துப்பீங்க, அதுக்குத் தேவையான எல்லாம் இப்ப உங்ககிட்ட இருக்கு.

கார்த்திகா: ok, என்ன train பண்ணதுக்கு குருதட்சணையா என்ன செய்யனும்?
மதன்: நீங்க எப்பவும் Linux பயன்படுத்தனும்.


One Of Us- Tech Highlights 19

கார்த்திகா: நேத்து நீங்க process பத்தி விளக்கிச் சொன்னீங்கல்ல, போய்ப் படிச்சேன். system’த்துல என்னென்ன process run ஆகுது, அந்த processகள எப்படிப் பார்க்கிறது, என்ன command use பண்ணனும், எல்லாம் தெரிஞ்சிக்கிட்டு வந்திருக்கேன். சொல்லட்டுமா?
மதன்: ok
கார்த்திகா: முதல்ல ps command, இந்த command மூலம் நம்ம systemத்தில் run ஆகிக்கொண்டிருக்கும் அத்தனை processகளையும் பார்க்க முடியும், இந்த command அப்படியே எந்த optionஷனும் கொடுக்காம run செஞ்சா current terminalலோட associate ஆகி இருக்கும் process மட்டும் list பண்ணும்.

கார்த்திகா: இதே commandடுக்கு x option கொடுத்தா, current userரோட எல்லா processகளையும் காட்டும்.

கார்த்திகா: இதே commandடுக்கு a option கொடுத்தால் systemத்தில் இருக்கும் terminalசோட associate ஆகி இருக்கும் அத்தனை processகளையும் காட்டும்.

கார்த்திகா: இப்போ ax ரெண்டு optionனையும் சேர்த்துக் கொடுத்தா systemத்துல current run ஆகும் அத்தனை processகளையும் காட்டும்.

கார்த்திகா: நான் சொன்னதெல்லாம் correctடா?
மதன்: correct.

கார்த்திகா: அடுத்து top command, இது ஒரு TUI (Terminal User Interface) வகை command
மதன்: அப்படின்னா?
கார்த்திகா: அதாவது இந்த TUI வகையான application, GUI (Graphical User Interface) application மாதிரியே menu, window எல்லாம் இருக்கும், ஆனா எல்லாமே terminal’லையே இருக்கும்.
மதன்: அப்ப GUI அப்படின்னா என்ன?
கார்த்திகா: கூகுள்ல சர்ச் பண்ணித் தெரிஞ்சிக்கோங்க
கார்த்திகா: top commandடுக்கு வருவோம். இந்த command system எவ்வளவு cpu use பண்ணிக்கிட்டு இருக்கு, எவ்வளவு memory use பண்ணிக்கிட்டு இருக்கு, எந்த process அதிகமா cpu use பண்ணுது, எந்த process அதிகமா memory use பண்ணுது இப்படி எல்லா detailஸ்சும் காட்டும், correctக்டா?


மதன்: correct, அது மட்டும் இல்லாம top command மூலம் processகள் பற்றிய பல விஷயங்கள நாம தெரிஞ்சிக்கலாம், processகல controlலும் பண்ணலாம்.
கார்த்திகா: free command, இந்த command மூலமா நம்ம சிஸ்டத்துல எவ்வளவு memory இருக்குன்னு தெரிஞ்சிக்கலாம்.

மதன்: free commandடோட எந்த fieldட பார்த்து current systemத்தோட memory usageஜ தெரிஞ்சிப்பீங்க?
கார்த்திகா: free command outputல Available fieldதான் systemத்துல எவ்வளவு memory மிச்சம் இருக்குன்னு காட்டும்
மதன்: சரி
மதன்: memory எவ்வளவு காலியா இருக்குன்னு வேற வழியிலயும் பார்க்கலாம்
கார்த்திகா: ஆமாம் top commandடும் எவ்வளவு memeory காலியா இருக்குன்னு avail mem fieldடுல காட்டும்
மதன்: ஆமாம், அது மட்டும் இல்லாம, இந்த commmandடும்

$ cat /proc/meminfo

available memory காட்டும்.

மதன்: இந்த outputல MemAvailable line தான் current systemத்தில் காலியா இருக்கும் memory
கார்த்திகா: இந்த /proc file systemத்துல process பத்தின எல்லா detailsசும் இருக்கும் போல
மதன்: ஆமாம்
மதன்: ஒரு முக்கியமான command விட்டுட்டீங்க, kill command பத்தி படிச்சீங்களா.
கார்த்திகா: ஆமாம், அதச் சொல்ல மறந்துட்டேன், kill command ஒரு processக்குப் பலவிதமான signalஸ் அனுப்பப் பயன்படுத்தப்படும் command.

$ kill 965


கார்த்திகா: இந்த 965 அப்படின்ற pid என்னோட current systemத்துல run ஆகும் pulseaudio அப்படின்ற processசோட pid, இப்ப நான் kill commandக்கு இந்த 965 pid கொடுத்தா pulseaudio process terminate ஆகிடும்.
மதன்: அது மட்டும் இல்லாம kill commandடுக்கு -L option கொடுத்தா ஒரு processசுக்கு எத்தனை விதமான signalஸ் அனுப்பலாம்னு காட்டும், signalஸ்சோட signal numberரையும் காட்டும்.

மதன்: இந்த signalஸ்ல முக்கியமான signalஸ்

9) SIGKILL
11) SIGSEGV
15) SIGTERM
18) SIGCONT
19) SIGSTOP

இதுல 15) SIGTERM தான் default signal, அதாவது kill commandக்கு எந்த signal கொடுக்கனும்னு சொல்லலைன்னா அது defaultடா 15) SIGTERM ஆ தான் processக்கு அனுப்பும், இந்த signal வந்தவுடன் அந்த processல இருக்குற SIGKILL signalலுக்கு உண்டான default signal handler அந்த processஸ terminalte பண்ணிடும்.

11) SIGSEGV சிக்னல் ஒரு process ஏதாவது கோக்குமாக்கா வேல செஞ்சதுனா, kernel பொடனியிலேயே ஒன்னு வச்சுப் போய் சாகுன்னு சாகடிக்கப் பயன்படுத்துற signal

19) SIGSTOP signal பயன்படுத்தி நாம ஒரு processச freeze பண்ண முடியும், அதாவது அது எந்த வேலையும் செய்யாது, ஆனா அந்த processச kernel terminate செய்யாது, அந்த processஸ 18) SIGCONT கொடுத்து மீண்டும் இயக்க வைக்கலாம்.

கார்த்திகா: 9) SIGKILL பத்தி சொல்லவே இல்லையே?
மதன்: 9) SIGKILL தான் ரொம்ப Dangerரான signal, ஒரு processச பாரபட்சமே இல்லாம உடனே சாகடிக்க பயன்படுத்துற signal, இந்த signal ஒரு processக்கு அனுப்பப்பட்டா அந்த processல இருக்குற சிக்னல் handlerருக்கு அந்த signal போகாம kernelலே அந்த processஸ்ச சாகடிச்சுடும், அதனால எப்பவும் இந்த SIGKILL பயன்படுத்தும்போது கவனமா இருக்கனும்.

கார்த்திகா: signalஸ்ல இவ்வளவு விஷயம் இருக்கா? Amazing.
ஒருவர் மதனின் Monitorரையும் கார்த்திகாவின் laptopப்பையும் சுட்டிக்காட்டி
ஒருவர்: Is anyone see what i see, that Desktop look like i3 and that other laptop look like cinnamon.
மதன்: Exactly Comrade, Its i3 on top of btw and another one in கார்த்திகாஸ் laptop, That is cinnamon on top of Mint.
கார்த்திகா: Mint புரியுது அது என்ன i3, cinnamon, btw?
மதன்: cinnamon உங்கள் desktop environment, நீங்க login பண்ண உடனே வர்ற UI screen, Linuxல பல desktop environment இருக்கு, i3 என்னோட desktop environment, well, i3 is actually a window manager.

Cinnamon on top of Mint
i3 on top of Archlinux

ஒருவர்: That’s Great Comrade, never thought she is also one of us, btw I too use arch, Seems you are using default i3? why don’t you RICE?
மதன்: I am not good in Art Comrade
கார்த்திகா: So you guys are talking about Archlinux, But what is btw?
மதன்: btw expansion by the way, Archlinux use பண்றவங்க, அவங்க Archlinux use பண்றத பெருமிதமாச் சொல்லிக்காட்ட btw I use arch அப்படின்னு சொல்லி மத்தவங்கள கடுப்பேத்துவாங்க, அதுவே போகப்போக மத்தவங்க அவங்கள கிண்டல் பண்றதுக்கும் அவங்களே அவங்கள கிண்டல் பண்ணிக்குறதுக்கும் ஒரு memeமா மாறிடுச்சு, அதுல இருந்து வந்ததுதான் இந்த btw, Archlinux க்கு இன்னொரு nick name.

கார்த்திகா: அடப் பாவிகளா, இப்படியுமா கலாய்ப்பீங்க? But what is that RICE?
மதன்: அதுவா, உங்கள் Desktopப்ப உங்களுக்குப் புடிச்ச மாதிரி customize பண்றது, ஒரு சாதாரண கார் வாங்கி அதுல வித விதமா sticker ஒட்டி silincer மாத்தி உள்ள இருக்குற spare parts மாத்தி அதோட performance improve பண்றாங்கள்ள, அதுக்கு பேர் Race Inspired Cosmetic Enhancements (RICE), இதே terminologyயதான் unix உலகத்துல அவங்களோட desktop அவங்களுக்குப் புடிச்சாமாதிரி customize பண்றதுக்கு use பண்றாங்க, நீங்க unixporn [https://www.reddit.com/r/unixporn] reddit communityடில இருக்குற postடுங்க பாத்திங்கன்னா எல்லாம் இப்படி customize பண்ண Linux Desktop screen shot போஸ்ட்டுங்களாத்தான் இருக்கும்.

கார்த்திகா: Is this Linux?
மதன்: Linux மட்டும் இல்ல BSD (Berkeley Software Distribution), macOS.
கார்த்திகா: Anyway, நேரமாச்சு, see you next time Comrade.


நெஞ்சில் உள்ளாடும் ராகம் – Tech Highlights 18

மதன்: இப்ப நான் ஏன் உங்களுக்கு இந்த C program எப்படி compile பண்ணி run பண்றதுன்னு சொல்லிக் கொடுத்தேன் தெரியுமா?
கார்த்திகா: இருங்க நானே சொல்றேன், ஒரு command அப்படிங்கறது machine புரியிற ELF format’ல இருக்குற ஒரு binary executable, அது நம்ம file system’த்துல ஒரு இடத்தில் save ஆகி இருக்கும் அந்த இடத்தைக் கண்டுபிடிக்க type command use பண்ணனும்.

type command’டால அந்த command கண்டுபிடிக்க முடியலன்னா எந்த இடத்துல அந்த command இருக்கோ அந்த Directory’ரிய PATH environment variable’ள்ல சேக்கனும் அப்படி இல்லன்னா direct’டா full path கொடுத்து execute பண்ணனும்.
மதன்: Correct, ஆனா நான் சொல்ல வந்தது அதுமட்டுமில்ல, நீங்க /home/karthika/a.out அப்படின்னு command type பண்ணி enter கொடுத்தீங்கள்ள, அப்ப என்ன நடந்தது?
கார்த்திகா: என்ன நடந்தது, hello world அப்படின்னு output வந்தது. அதுக்குத்தான நாம C program எழுதினோம்?
மதன்: அதுதான் எப்படி அந்த output வந்தது?
கார்த்திகா: a.out command execute ஆச்சு, அந்த command வேலை hello world அப்படின்னு print பண்றது, அதனால hello world output வந்தது, அதானே?
மதன்: அந்த a.out எப்படி execute ஆச்சு?
கார்த்திகா: தெரியல, நீங்களே சொல்லுங்க
மதன்: இங்க தான் நாம process அப்படின்னா என்னன்னு தெரிஞ்சுக்கனும்.
மதன் process பற்றி விவரிக்க ஆரம்பித்தான்.
நீங்க /home/karthika/a.out command type பண்ணி enter தட்டும்போது உங்க shell அந்த a.out binary executable file’லோட full path வாங்கி kernel கிட்ட கொடுத்து execute பண்ணச் சொல்லும், அப்ப linux kernel முதல்ல அந்த a.out fileல read பண்ணும், அது எந்த மாதிரியான binary formatல இருக்குன்னு முதல்ல கண்டுபிடிக்கும், நாம ஏற்கனவே பாத்தா மாதிரி, அந்த executable ELF formatல இருக்குன்னு தெரிஞ்சுக்கிட்டு அப்புறம் அந்த fileல read பண்ணி memoryயில் ஒரு இடத்துல அந்த a.out file contentட வெச்சிக்கும், அடுத்து a.out executable execute பண்ணத் தேவையான வேற சில libraries memoryயில் load செஞ்சிக்கும், இதுக்கு பேரு dynamic linking. அடுத்து அந்த a.out executableள execute பண்ணத் தேவையானது எல்லாம் load பண்ணதும் அந்த executableளோட entry point, அதாவது நம்ம C programல main() function இருக்குல்ல, அந்த functionன invoke பண்ணும், இப்படித்தான் நாம create பண்ண a.out executableள kernel memoryயில ஏத்தி ஒரு processசா மாத்தி execute பண்ணும், ஒவ்வொரு processக்கும் ஒரு id இருக்கு அதுக்கு பேரு process id அத pid அப்படின்னு சொல்லுவாங்க, ஒரு processசோட detail தெரிஞ்சிக்க cat /proc//status command run பண்ணித் தெரிஞ்சிக்கலாம்,

a.out executableல kernel கிட்ட கொடுத்து execute பண்ண சொல்லுச்சில்ல நம்ம shell, அதுதான் நம்ம a.out processசுக்கு parent process, அந்த shellலுக்கு நம்ம a.out process, one of the child process. ஒவ்வொரு processசுக்கும் ஒரு parent process இருக்கும், அந்த parent processஸ்ஸ child processஸ்ல இருந்து தெரிஞ்சுக்க easyயா child processஸ்ல parent processஸோட pid ய ppid அப்படின்னு save பண்ணி இருப்பாங்க. ppid மூலமா எந்த ஒரு processசோட parent processசையும் கண்டுபிடிச்சிடலாம்.
கார்த்திகா: நம்ம a.out processஸோட pid எப்படித் தெரிஞ்சிக்கிறது?
மதன்: அதுக்கு C ல getpid() அப்படின்னு ஒரு function இருக்கு
மதன் அவள் laptopப்பை வாங்கி source codeடைச் சரி செய்து அதை compile செய்து run செய்தும் காட்டினான்,


கார்த்திகா: அப்ப cat /proc/9810/status command run பண்ணா a.out processசோட details வரும் correctடா?
மதன்: Run பண்ணிப் பாருங்க
கார்த்திகா உடனே cat /proc/9810/status என்று type செய்து enter தட்டினாள்,
கார்த்திகா: என்ன /proc/9810/status அப்படிங்குற fileலே இல்லன்னு சொல்லுது? ok, நம்ம a.out command execute ஆகி முடிஞ்சிருச்சு அதனாலயா?


மதன்: Correct, 8300 try பண்ணிப் பாருங்க
கார்த்திகா cat /proc/8300/status என்று type செய்து enter தட்டினாள்,


கார்த்திகா: நிறைய information இருக்கு, ஒன்னும் புரியல
மதன்: கொஞ்சம் கொஞ்சமாகத்தான் புரியும், process, parent process, child process அப்படின்னா என்னன்னு புரிஞ்சதில்ல?
கார்த்திகா: புரிஞ்சது, ஒரு doubt, அப்ப ppid track பண்ணிக்கிட்டு போனா, நாம boot பண்ணவுடன் start ஆன முதல் process detail கிடைச்சிடும் இல்ல?
மதன்: ஆமாம், ஆனா இப்படி ppid track பண்ணிக்கிட்டுப் போறத விட simpleளா cat /proc/1/status அப்படின்னு போட்டு boot ஆனவுடனே start ஆன முதல் process details பாத்துடலாம்.
கார்த்திகா cat /proc/1/status என்று command run செய்தாள்

கார்த்திகா: systemd? இதுதான் எல்லாத்துக்கும் parent processசா?

மதன்: ஆமாம், அதுதான் நாம boot பண்ணவுடன் start ஆகும் முதல் process, அந்த process தான் பல child process start பண்ணும். pid 1 process init processஸ்னு சொல்லுவாங்க. அதோட binary executable எங்க இருக்குன்னு கண்டுபிடிங்க பாப்போம்?

கார்த்திகா type systemd என்ற command’டை run செய்ய
/bin/systemd என்று வந்தது

மதன்: இன்னும் easyயா ஒரு வழி சொல்றேன்


sudo ls /proc/1/exe

command run பண்ணுங்க.
கார்த்திகாவும் அதையே செய்தாள்

கார்த்திகா: Oh, அப்ப pid 1 executable /lib/systemd/systemd தானா?
மதன்: ஆமாம்
கார்த்திகா உடனே ls -l /proc/1 என்று ரன் செய்ய பல fileகள் இருந்தன


கார்த்திகா: இந்த fileகள்ல இருந்து அந்த pid 1 processஸுக்குனடான எல்லா detailsஸும் எடுத்துடலாம்போல?
மதன்: Exactly, pickup பண்ணிட்டீங்க.


நெஞ்சில் உள்ளாடும் ராகம் – Tech Highlights 17

மதன்: இப்ப gcc command பத்தித் தெரிஞ்சுக்க என்ன பண்ணுவீங்க?
கார்த்திகா: man gcc அப்படின்னு டைப் செய்து gcc யோட manual page படிக்கணும். SYNOPSIS ல just ஒரு input file மட்டும் கொடுத்தால் போதும்னு இருக்கு?


மதன்: ஆமாம் ஒரே ஒரு input file மட்டும் கொடுத்தால் போதும், என்ன ஆகுதுன்னு பாப்போமா?

கார்த்திகா Terminal’லில் தனது home directory’யில் இருந்து gcc helloworld.c என்ற command execute செய்தாள்.
கார்த்திகா: என்னது conio.h இல்லையா?
மதன்: உங்களோட source code காட்டுங்க?
கார்த்திகா அவள் எழுதிய Hello world program’மை cat command மூலம் terminal’லில் காட்டிவிட்டு gcc command output’டையும் காட்டினாள்

மதன்: conio.h header windows’ல மட்டும்தான் இருக்கும், linux’ஸில் இருக்காது, அது C language’ஜோட standard header இல்ல.
கார்த்திகா: அப்ப அத remove பண்ணிடட்டா?
மதன்: ஆமாம்
அதன்படியே கார்த்திகா #include line remove செய்து மறுபடியும் gcc helloworld.c என்று run செய்தாள்.
கார்த்திகா: ரெண்டு warning, கடைசியில் ஏதோ error மாதிரி இருக்கு?
கார்த்திகா மறுபடியும் terminalலில் இருந்த output’டைக் காட்டினாள்,

மதன்: ok, முதல் warning main function’னுக்கு default return type int அப்படின்னு சொல்லுது, அதனால நீங்க program முடிவுல return 0 அப்படின்னு return value கொடுக்கணும், ரெண்டாவது warning, getch() அப்படின்னு ஒரு function implicit’டா declare ஆகி இருக்குன்னு வருது, அடுத்து இருக்குற error, getch() அப்படிங்குற function’னே இல்லன்னு சொல்லுது
கார்த்திகா: அப்ப main க்கு முன்னாடி int போட்டு கடைசீயில return 0; line சேக்கனும், அப்புறம் getch() லைன தூக்கனும் அப்படித்தானே?
மதன்: அவ்வளவுதான்
அதன்படி கார்த்திகா தன் source code மாற்றிக் காட்டினாள்,

கார்த்திகா: இப்ப ok’வா?
மதன்: ok மாதிரிதான் தெரியுது, இப்ப compile பண்ணுங்க.
கார்த்திகா gcc helloworld.c என்று ரன் செய்தாள்.
கார்த்திகா: என்ன எந்த output’டும் வரல?
கார்த்திகா வியப்புடன் டெர்மினலைக் காட்டினாள்,


மதன்: அப்படின்னா சுக்கிரன் உச்சத்துல இருக்கான்னு அர்த்தம். எந்த complilation error’ரும் வரலைன்னு அர்த்தம்.
கார்த்திகா: இப்ப எப்படி Hello world program output பார்க்கிறது?
மதன்: இப்ப நான் சில கேள்விகள் கேட்பேன், compile அப்படின்னா என்ன?
கார்த்திகா: அதாவது text format’ட்ல இருக்குற source code’ட binary executable’லா மாத்துரது, அதுக்குத்தான் compiler தேவைப்படுது, அந்த compiler’தான் gcc.
மதன்: இப்ப உங்க compile command எந்த ஒரு errorரையும் காட்டல, அப்படின்னா என்ன அர்த்தம்?
கார்த்திகா: அப்படின்னா compiler successful’ல்லா binary executable’பில create பண்ணிடுச்சுன்னு அர்த்தம், அப்ப அந்த binary executable எங்க?
மதன்: நீங்க எந்த Directory’யில் gcc command run பண்ணீங்களோ அதே Directory’ரியில் தான் இருக்கு.
கார்த்திகா ls கமாண்ட் ரன் செய்தாள்
கார்த்திகா: a.out அப்படின்னு இருக்கு? இதுதான் binary executableளா?
கார்த்திகா கூகுளில் தேட file command கண்டுபிடித்தாள். file command manual படித்து அதை எப்படி run செய்ய வேண்டும் என்பதைக் கற்றுக் கொண்டாள். அதன்படி file a.out என்ற command run செய்தாள்,

கார்த்திகா: ஒரு மண்ணாங்கட்டியும் புரியல
மதன்: மண்ணாங்கட்டிய புரிஞ்சுக்க கொஞ்சம் Time ஆகும், இப்போதைக்கு அந்த outputல ELF ன்னு இருக்குல்ல, அப்படின்னா a.out ஒரு ELF binary formatல இருக்குற ஒரு executable, அத நாம run பண்ணலாம்னு அர்த்தம், எங்க a.out command run பண்ணுங்க பாப்போம்.
கார்த்திகா a.out என்ற command run செய்தாள்,

கார்த்திகா: command இல்லையா, அதான் இருக்கே?
மதன்: a.out எங்க இருக்குன்னு நமக்கு தெரியும், bash shellலுக்கு தெரியணுமே, அதுக்கு என்ன பண்ணனும்?
கார்த்திகா: Oh, right PATH environment variable set பண்ணனும்
மதன்: அப்படியும் பண்ணலாம், இல்ல simple’பிளா a.out executable’ளோட full path கொடுக்கலாம்.
கார்த்திகா full path’த்தையும் கொடுத்து a.out excutable’பிளை run செய்தாள்.

கார்த்திகா: Super


நெஞ்சில் உள்ளாடும் ராகம் – Tech Highlights 16

கார்த்திகா: Linux commands படிக்க படிக்க வந்துக்கிட்டே இருக்கு எப்படி நியாபகம் வெச்சிருக்கீங்க?
மதன்: எல்லாத்தையும் நியாபகம் வச்சிருக்க முடியாது, நாம regular’ரா use பண்றது மட்டும் தான் நம்ம நியாபகத்துல இருக்கும், நாம regular’ரா linux use பண்ண கத்துக்க வேண்டியது ரெண்டு விஷயம், ஒன்னு File system structure, ரெண்டாவது Process. நேத்திக்கு நீங்க சொன்ன commands எல்லாம் file system சம்பந்தப்பட்ட commands, இப்ப நீங்க தெரிஞ்சுக்க வேண்டியது Process, உங்களுக்கு process’னா என்னன்னு தெரியுமா?

Process தான் ஒரு Operating system’த்தின் நாடித் துடிப்பு


கார்த்திகா: Collegeல operating system பத்தி படிக்கிறப்ப கேள்விப்பட்டிருக்கேன். ஆனா முழுசா என்னன்னு தெரியாது
மதன்: Process தான் ஒரு Operating system’த்தின் நாடித் துடிப்பு, நீங்க C ல Hello world program எழுதி இருக்கீங்களா?
கார்த்திகா: என்னங்க, C programming கத்துக்கிறவங்க அந்த program தான் முதல்ல எழுதுவாங்க, எனக்கும் C programming தெரியும்.
மதன்: அப்ப எப்படி நீங்க C ல Hello world எழுதுவீங்கன்னு சொல்லுங்க பாப்போம்?
கார்த்திகா: TurboC’ல, C program எழுதி alt-f9 அழுத்துனா compile ஆகும், ctrl-f9 அழுத்துனா நாம எழுதின program run ஆகி Hello world அப்படின்னு output காட்டும்.

Turbo C IDE

மதன்: Right ,TurboC’ன்னு ஒன்னு double click பண்றீங்களே, அது என்னன்னு தெரியுமா?
கார்த்திகா: TurboC compiler
மதன்: TurboC வெறும் compiler மட்டும் இல்லைங்க, அது ஒரு IDE. ஆனா ஒரு C programming எழுத நமக்கு IDE வேணும்கற அவசியம் இல்ல, ஒரு சாதாரண text file create பண்ற ஒரு text editor இருந்தாப் போதும். அடுத்து நாம அந்த editor’ல எழுதின C source கோட machine’க்கு புரியிற binary executable’ளா மாத்த ஒரு compiler வேணும் அவ்வளவுதான்.
கார்த்திகா: அப்படின்னா ஒரு சாதாரண notepad’ல நாம C program எழுதலாமா?
மதன்: கண்டிப்பா, முதல்ல ஒரு text editor ஒப்பன் பண்ணுங்க. Hello world C program type செஞ்சு save பண்ணுங்க.
கார்த்திகா: /home/karthika/helloworld.txt அப்படின்னு save பண்ணி இருக்கேன்.
மதன்: அந்த .txt எடுத்துட்டு .c அப்படின்னு save பண்ணுங்க
கார்த்திகா: ஓ, ஆமாம்ல, C program .c அப்படின்னு தான் extension இருக்கனும்ல, மறந்துட்டேன்.
மதன்: Linux’ஸில் இருக்குற C compiler .txt க்கும் .c க்கும் வித்தியாசம் பாக்காதுங்க, அத பொருத்தவர நீங்க compile பண்ண கொடுக்கிறது ஒரு சாதாரண text file.
கார்த்திகா: அப்ப .txt அப்படின்னு extension இருந்தாலும் compile பண்ணுமா?
மதன்: Extension’ஷனே இல்லாம ஒரு text file கொடுத்தாலும் compile பண்ணும், அதுக்கு தேவ ஒரு C source அவ்வளவுதான், நாம easy’யா கண்டுபிடிக்கத்தான் .txt அப்படின்னு இருந்தத .c க்கு மாத்த சொன்னேன்.
கார்த்திகா: சரி, இப்ப இந்த /home/karthika/helloworld.c file’ல எப்படி Linux’ல compile பண்றது?
மதன்: அதுக்கு apt command use பண்ணி gcc compiler package install பண்ணுங்க, gcc மட்டும் install பண்றதுக்கு பதிலா packaging-dev அப்படின்னு ஒரு meta package இருக்கு, அத install பண்ணா இன்னும் முக்கியமான சில package’கள் install ஆகும், அதனால, gcc க்கு பதிலா packaging-dev இன்ஸ்டால் பண்ணுங்க.
அதன்படியே கார்த்திகாவும் terminal’லில் apt install packaging-dev, type செய்து install செய்தாள்.
மதன்: இப்ப நீங்க install பண்ண C compiler பேரு gcc, அதாவது gnu-compiler-collection, நான் Linux history சொல்லும்போது கூட Stallman ஒரு C compiler முதல்ல ருவாக்குனார், அதத்தான் Linus Torvalds linux kernal’னல உருவாக்கப் பயன்படுத்தினார்னு சொன்னேன்ல, அந்த compiler இதுதான்.
கார்த்திகா: Linux’ல் உண்மையிலேயே ஒவ்வொரு command’டுக்கு பின்னாடி ஒரு சுவாரஸ்யமான history இருக்கு, அத தெரிஞ்சிக்கிட்டு அந்த command use பண்றது ரொம்ப interesting’கா இருக்கு.
மதன்: இப்ப gcc command install ஆகி இருக்கா இல்லையான்னு எப்படிக் கண்டுபிடிப்பீங்க?
கார்த்திகா: Just அந்த command run பண்ணும் போது அந்த command install ஆகலைன்னா command not found அப்படின்னு error வரும்.
மதன்: Run பண்ணாம கண்டுபிடிக்கனும்.
கார்த்திகா Google’ளில் தேடி type என்ற ஒரு command நாம் கொடுக்கும் command இருக்கா இல்லையா என்று சொல்லும் என்று கண்டுபிடித்தாள்.
மதன்: Super, இப்ப அந்த type command எப்படி run பண்ணுவீங்க?
கார்த்திகா: அதான் man page இருக்கே.
கார்த்திகா man type என்று கொடுத்தாள்,ஆனால் type command’டுக்கு manual pageஇல்லை என்று வந்தது.

கார்த்திகா: என்னங்க, Manual இல்லைன்னு வருது?
மதன்: எல்லா command’டுக்கும் manual page இருக்காதுங்க, அதுக்கு பதிலா type –help அப்படின்னு run பண்ணுங்க.
கார்த்திகாவும் அதன்படியே command type செய்து enter தட்டினாள். type command’டின் சிறிய help வந்தது அதில் அந்த command’டுக்கு என்னவெல்லாம் option’ன்கள் கொடுக்கலாம் என்று குறிப்பிடப்பட்டிருந்தது. ஆனால் manual page’ஜைப் போல் விவரமாக இல்லை.


மதன்: Linux’ஸ்ல இருக்குற தொண்ணூறு சதவீதம் command’ஸுக்கு –help அல்லது -h option கொடுத்தால் அந்த command பத்திச் சின்னதா details output காட்டும், ஆனா அந்த details, proper manual page மாதிரி இருக்காது.
கார்த்திகா type –help output’டில் இருந்த விவரங்களைப் படித்துவிட்டு type gcc என்ற command run செய்தாள், உடனே gcc command இருக்கும் இடம் /usr/bin/gcc என்று type command காட்டியது.


கார்த்திகா: கண்டுபிடிச்சிட்டேன்.
மதன்: Super.

Universe’சின் நிறம் – Tech Highlights 15

chown command

கார்த்திகா: அடுத்து chown, இது ஒரு file அல்லது folder’ரோட owner அண்டு group change பண்ண use பண்றது, For example

$ chown karthika:karthika /tmp/rootfile.txt
$

command /tmp/rootfile.txt file’லோட owner karthika and group karthika அப்படின்னு மாத்திடும். correct’டா?
மதன்: correct, அது மட்டும் இல்லாம

$ chmod -R karthika:karthika /home/karthika
$

command /home/karthika folder மட்டும் இல்லாம அதுக்கு உள்ள இருக்குற எல்லா file and folder’ரோட user மற்றும் group’ப்ப karthika யூசருக்கும் karthika குரூப்பிற்கும் மாத்திடும்.

df command

கார்த்திகா: அடுத்து df, இந்த command file system’த்தோட map ஆயிருக்குற ஒவ்வொரு partition’ஷனோட usage செல்லும்’.
மதன்: முக்கியமா df -h command partition’ஷனோட size giga byte(G)/mega byte(M)/kilo byte(K) கணக்கில் காட்டும்.

$ df -h
Filesystem Size Used Avail Use% Mounted on
dev 3.9G 0 3.9G 0% /dev
run 3.9G 1.4M 3.9G 1% /run
/dev/sda2 239G 171G 68G 72% /
tmpfs 3.9G 728K 3.9G 1% /dev/shm
tmpfs 3.9G 16K 3.9G 1% /tmp
/dev/sda1 250M 73M 178M 30% /boot
tmpfs 784M 88K 784M 1% /run/user/1000
$

du command


கார்த்திகா: அடுத்து du, இந்த command current folder’டரில் இருக்கும் ஒவ்வொரு file’லோட size காட்டும், அது மட்டும் இல்லாம

$ du -sh
637M
$

current folder’ரோட size காட்டும்
மதன்: ஆமாம்.

mount command

கார்த்திகா: அடுத்து mount command, இது system’த்துல எந்தெந்த device எந்தெந்த folder’ர்ல map ஆகி இருக்குன்னு காட்டும்.

$ mount
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
dev on /dev type devtmpfs (rw,relatime,size=500092k,nr_inodes=125023,mode=755)
/dev/sda1 on / type ext4 (rw,relatime)
tmpfs on /rwroot type tmpfs (rw,relatime,size=10088960k)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
$

find command

கார்த்திகா: find, இது current folder’ரில் இருக்கும் எல்லா file and folder name’கள காட்டும், அப்புறம் current folder’ருக்கு உள்ள இருக்குற ஒவ்வொன்னு உள்ளேயும் போய் அதுக்குள்ள இருக்கிற file and folder’டர காட்டும் இப்படியே எல்லா file name அண்ட் folder name’கள காட்டும்.
மதன்: அது மட்டும் இல்லைங்க, find வச்சிப் பல விஷயங்களைப் பண்ணலாம், உதாரணத்துக்கு

$ find . -mtime +730
/home/karthika/emptyfile.txt
$

command உங்க current folder’ருக்குள்ள ஏதாவது ஒரு sub folders’குள்ள ஒரு file அல்லது folder ரெண்டு வருஷத்துக்கு முன்னாடி modify ஆகியிருந்தா அந்த file அல்லது folder name மட்டும் காட்டும். நாம touch கமாண்ட் வெச்சு emptyfile.txt பைல் மோடிபைட் டைம்ஸ்டாம்ப 1900-01-01 டேட்டுக்கு மாத்தினோம்ல, அத இந்த find கமாண்ட் தேடிக் கண்டுபிடிச்சுக் காட்டிடும்.


Universe’சின் நிறம் – Tech Highlights 14

touch command

கார்த்திகா : அடுத்து touch, இது ஒரு file அல்லது folder’ரோட last access time, last modified time change பண்ண உதவும்.

$ touch -d 1900-01-01 /home/karthika/emptyfile.txt
$

command என்னோட home folder’ரில் emptyfile.txt file already இருந்தா அதோட last access time and last modified time’ம 1900-01-01 date’க்கு மாத்திடும், file already இல்லைன்னா create பண்ணிட்டு அப்புறமா timestamp’புகள மாத்திடும்.

மதன்: correct.

stat command

கார்த்திகா : அடுத்து stat, இந்த command ஒரு file அல்லது folder’ரோட details பாக்க use பண்ணலாம்.

$ stat /home/karthika
File: /home/karthika
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 254,0 Inode: 269123004 Links: 21
Access: (0710/drwx–x—) Uid: ( 1000/ karthika) Gid: ( 1000/ karthika)
Access: 2021-11-05 04:48:07.031256486 +0530
Modify: 2021-11-05 18:18:12.595115460 +0530
Change: 2021-11-05 18:18:12.595115460 +0530
Birth: 2021-09-23 09:06:54.099246949 +0530
$

command என்னோட home folder’ரோட size, security bits, கடைசியாக access பண்ண time, கடைசியாக change ஆன time, last creation time, owner யார், எந்த எந்த group access பண்ணலாம் போன்ற நிறைய details பாக்கலாம்
மதன்: ஆமாம்

rm command

கார்த்திகா : அடுத்து rm, very dangerous command, ஒரு file அல்லது folder’டர remove பண்ண use பண்ற command.

$ rm /home/karthika/emptyfile.txt
$

command என்னோட home folder’டர்ல இருக்கும் emptyfile.txt fileல தூக்கிடும்.

$ rm -fr /home/karthika
$

command கேள்வியே கேட்காம என்னோட home folder’டரையே தூக்கிடும்

மதன்: முக்கியமா

$ rm -fr /
$

command பாரபட்சம் பாக்காம entire file system’த்தையே தூக்கிடும்.

கார்த்திகா : இல்லையே rm man page’ல –no-preserve-root option’ன கொடுத்தாத்தான் root folder’டரைத் தூக்கும் இல்லனா root folder’ரைத் தூக்காதுன்னு போட்டிருக்கே?
மதன்: man page படிச்சிருக்கீங்களா இல்லையான்னு test பண்ணேன்.

chmod command

கார்த்திகா : அடுத்து chmod, இது நீங்க ஏற்கனவே சொன்ன மாதிரி ஒரு file அல்லது folder’ரோட permission bit’கள மாத்த உதவும். For example

$ chmod u+rwx,g+rx,o+rx /home/karthika/emptyfile.txt
$

command, emptyfile.txt file’லோட user (u) permission, படிக்க (r), எழுத (w) மற்றும் செயல்படுத்த (x) அனுமதிக்கும் (+), அப்புறம் emptyfile.txt file’லோட group permission, படிக்க (r), செயல்படுத்த (x) அனுமதிக்கும் (+), அதே போல மற்றவர்களுக்கு (o) படிக்க (r) மற்றும் செயல்படுத்த (x) அனுமதிக்கும். இங்க (+) symbol’லுக்கு பதில் (-) symbol போட்டா அனுமதி மறுக்கப்படும். இப்படி ugo+-rwx characters பயன்படுத்துவதற்கு பதிலா அதே permission’ன

$ chmod 755/home/karthika/emptyfile.txt
$

command use பண்ணியும் set பண்ணலாம், இங்க முதல்ல இருக்கிற 7, user permission bit set பண்ணும், 7=4+2+1, அதாவது படிக்க (4), எழுத (2) மற்றும் செயல்படுத்த (1) அனுமதிக்கும், அடுத்து இருக்கும் 5, group permission bit set பண்ணும், 5=4+1, அதாவது படிக்க (r) மற்றும் செயல்படுத்த (x) மட்டும் அனுமதி அளிக்கும். அடுத்து இருக்கும் 5, others permission set பண்ணும். கரெக்டா?
மதன்: Amazing, super’ப்பரா explain பண்றீங்க, சீக்கிரம் ilugc ல class எடுங்க


Universe’சின் நிறம் – Tech Highlights 13

ls command

கார்த்திகா: அடுத்து ls, இந்த command terminal open பண்ணிட்டு ஒரு முறையாவது use பண்ணாம இருக்க மாட்டீங்க.

ls commandcurrent folder’ரில் இருக்கும் file மற்றும் folder’களை list பண்ணும்
ls -R command உள்ளுக்குள்ள எத்தன folder இருந்தாலும் அத்தனை folder’ரில் இருக்கும் file மற்றும் folder’களையும் list பண்ணும்
ls -l commanddetailed list பண்ணும்
ls command with folder pathகொடுத்த folder’ரில் இருக்கும் file மற்றும் folder’களை list பண்ணும்
ls command

கார்த்திகா: வெறும் ls command current folder’ரில் இருக்கும் file மற்றும் folder’களை list பண்ணும். அதுவே ls -R command, உள்ளுக்குள்ள எத்தன folder இருந்தாலும் அத்தனை folder’ரில் இருக்கும் file மற்றும் folder’களையும் list பண்ணும். அப்புறம் ls -l command detailed list பண்ணும், இந்த ls command’க்கு ஒரு folder’ரோட path கொடுத்தா, அது current folderர விட்டுட்டு கொடுத்த folder’ரில் இருக்கும் file மற்றும் folder’களை list பண்ணும். உதாரணத்துக்கு ls -l ~/Downloads command current folder’ரை விட்டுட்டு, Home folder’ரில், அதாவது /home/karthika folder’க்குல்ல இருக்குற Downloads folder’ர list பண்ணும்.

$ ls
Videos Documents Downloads
$ ls -R
Videos Documents Downloads
./Downloads:
test.txt
$ ls -l
drwxr-xr-x 2 karthika karthika 6 Sep 23 09:38 Videos
drwxr-xr-x 3 karthika karthika 21 Jul 10 12:06 Documents
drwxr-xr-x 3 karthika karthika 21 Jul 10 12:06 Downloads
$ ls -l Downloads
-rw-r–r– 1 karthika karthika 11 Jul 17 01:25 test.txt
$

உதாரணம்

மதன்: Correct, அது மட்டும் இல்லாம -l option கொடுக்கும் போது output’ல ஒவ்வொரு line’னில் முதல்ல இருக்கிற பத்து character’கள் தான் அந்த entry’க்கு சொந்தமான file அல்லது folder’ருக்கான permission bits, இத நான் முன்னாடியே உங்ககிட்ட சொல்லியிருக்கேன்.
கார்த்திகா: நியாபகம் இருக்கு.

mkdir command

கார்த்திகா: அடுத்து mkdir, இது மூலமா ஒரு folder create பண்ணலாம். அது மட்டும் இல்லாம

mkdir -p one/two/three 

command மூனு folder’ர்களை ஒன்னுக்குள்ள ஒன்னா create பண்ணும். correct’டா?

$ mkdir -p one/two/three
$ ls -R one
one:
two
one/two:
three
one/two/three:
$

உதாரணம்

மதன்: ஆமாம்.

rmdir command

கார்த்திகா: அடுத்து rmdir, இது ஒரு folder remove பண்ண use பண்றது. அது மட்டும் இல்லாம

rmdir -p one/two/three 

command முதல்ல three folder’ரை delete பண்ணும் அப்புறம் two folder’ரை delete பண்ணும் கடைசியா one folder’ரை delete பண்ணும். முக்கியமா rmdir command folder’ருக்குள்ள ஏதாவது content இருந்தா அந்த folder’ரை delete பண்ணாது.

$ rmdir -p one/two/three
$ ls -R one
ls: cannot access ‘one’: No such file or directory
$

உதாரணம்

மதன்: Great.

cp command

கார்த்திகா: அடுத்து cp, இது ஒரு file அல்லது folder’ர copy பண்ண உதவுது. For example

$ cp /etc/fstab /home/karthika/fstab
$

command /etc க்குள்ள இருக்குற fstab file என்னோட /home/karthika folder’ருக்கு copy செய்யும். அது மட்டும் இல்லாம

$ cp -r /etc /home/karthika/etc
$

கமாண்ட் /etc folder மட்டும் இல்லாம அதுக்குள்ள இருக்கிற அத்தனை file’களையும் folder’களையும் /home/karthika folder’ருக்குள்ள copy செய்யும்.
மதன்: correct.

mv command

கார்த்திகா : அடுத்து mv, இது ஒரு file அல்லது folder’ரோட name change அல்லது வேற ஒரு folder’ருக்கு move பண்ண use பண்ற command. For example,

$ mv /home/karthika/one.txt /home/karthika/two.txt
$

command என்னோட home folder’ரில் இருக்குற one.txt file name’மை two.txt அப்படின்னு மாத்திடும், அதே

$ mv /home/karthika/two.txt /home/karthika/Downloads/
$

command name change பண்ணின two.txt file’ல என்னோட home folder’ரில் இருக்குற Downloads folder’ருக்கு move பண்ணிடும்.
மதன்: ஆமாம் .


Universe’சின் நிறம் – Tech Highlights 12

cd command

கார்த்திகா: அடுத்து cd, இது ஒரு folder’ரில் இருந்து இன்னொரு folder’ருக்கு மாற உதவும்.
மதன்: இப்படியும் சொல்லலாம், terminal process’சோட current folder’ர change பண்ண use பண்ற command அப்படின்னும் சொல்லலாம்.
கார்த்திகா: என்ன குழப்பாதீங்க, simple’ளா சொல்லனும்னா,

cd /home/karthika/Downloads

command, Downloads folder’ருக்குள்ள போக உதவும்.
மதன்: அதைத்தான் நானும் சொல்றேன்,

cd /home/karthika/Downloads

command, current terminal process’சோட current folder’ரை /home/karthika/Downloads folder’ருக்கு மாத்தும்.

ஒன்னு absolute path, அடுத்தது relative path

மதன்: அது மட்டும் இல்லைங்க unix’ல ஒரு file அல்லது folder’ரோட இடத்த இரண்டு வகையாக் குறிப்பிடலாம், ஒன்னு absolute path, அடுத்தது relative path, உங்க home folder’ரில் இருக்குற Downloads folder’ருக்கு போகனும்னா

cd /home/karthika/Downloads

அப்படின்னு கொடுக்கலாம், இல்லாட்டி உங்க home folder’ரில் இருந்துகிட்டு வெறும்

cd Downloads

அப்படின்னு கொடுக்கலாம். வெறும் Downloads அப்படின்னு குறிப்பிடுவதற்குப் பேரு relative path, /home/karthika/Downloads அப்படின்னு குறிப்பிடுவது absolute path. Relative path கொடுக்கும்போது ஆட்டோமேட்டிக்கா cd command current folder’ர கணக்குல எடுத்துக்கும்.

$ cd /home/karthika/Downloads
$ pwd
/home/karthika/Downloads
$ cd Downloads
$ pwd
/home/karthika/Downloads

உதாரணம்

home folder’ரைக் குறிக்கும் ~ symbol

மதன்: இன்னும் simple’ளா

cd ~/Downloads

command’டும் Downloads folder’க்குள்ள போக உதவும், இங்க ~ symbol உங்க home folder’ரைக் குறிக்குது, அதனால இங்க நீங்க use பண்றது relative path இல்ல, absolute path.

$ cd ~
$ pwd
/home/karthika
$ cd ~/Downloads
$ pwd
/home/karthika/Downloads
$

உதாரணம்

வெறும் cd command

மதன்: cd command’டோட இன்னொரு விஷயம், நீங்க எந்த folder’க்குல்ல இருந்தாலும் வெறும் cd type பண்ணிட்டு enter அழுத்தினீங்கன்னா உடனே நீங்க உங்க home folder’ரில் இருப்பீங்க.

$ pwd
/home/karthika/Downloads
$ cd
$ pwd
/home/karthika

உதாரணம்

cd – command

மதன்: அதேபோல் மறுபடியும் last’டா இருந்த folder’ருக்கு போகனும்னா cd – command கொடுத்தா போதும், automatic’க்கா நீங்க last’டா இருந்த folder’ருக்கு மாறிடுவீங்க

$ cd –
$ pwd
/home/karthika/Downloads
$ cd
$ pwd
/home/karthika
$

உதாரணம்

கார்த்திகா: Interesting, cd command’ல இவ்வளவு இருக்கா?


Universe’சின் நிறம் – Tech Highlights 11

கார்த்திகா: Hi
மதன்: வாங்க, என்ன ஏதோ அவசரமா வந்திருக்கீங்க.

pwdcdlsmkdir
rmdircpmvtouch
statrmchmodchown
dfdumoundfind
Few important commands

கார்த்திகா: அதெல்லாம் ஒன்னும் இல்ல, last time file system’டத்த பத்தி சொல்லும்போது mount, cd, ls, chmod பத்திச் சொன்னீங்கள்ல, இந்த command’களோட manual page படிச்சு use பண்ணிப் பாத்தேன், அது மட்டும் இல்லாம google பண்ணும்போது pwd, mkdir, rmdir, cp, mv, touch, stat, rm, chown, dh, du, find command’களும் important’னு சொல்லுச்சு. அதுங்களோட manual page படிச்சேன், எனக்குப் புரிஞ்சது சொல்றேன் correct’டான்னு சொல்லுங்க.

Command Prompt

கார்த்திகா: First ஒரு Terminal open பண்ணா முதல்ல நாம பாக்குறது command prompt, உதாரணத்துக்கு

[karthika@karthikalaptop0 ~] $

உதாரணம்

போல இருக்கும், @ symbol’லுக்கு முன்னாடி இருக்கிறது இப்ப login ஆகி இருக்கும் user’ரோட user name, @ symbol’லுக்கு அடுத்து இருக்குறது இப்ப use பண்ணிட்டு இருக்குற computer’ரோட name. space character’டருக்கு அடுத்து இருக்கும் ~ symbol terminal’லோட current folder Home folder‘னு குறிப்பிடுது, அதாவது /home/karthika folder’ரைக் குறிக்குது.
மதன்: Correct, அதுமட்டுமில்லாம unix’ல ஒவ்வொரு process’சுக்கும் current folder’னு ஒன்னு இருக்கு, terminal’லும் ஒரு process, ஆரம்பிக்குறப்போ அதோட current folder current user’ரோட home folderருக்கு set பண்ணிக்கும்.

pwd command

$ pwd
/home/karthika
$

கார்த்திகா: அடுத்து pwd, இது file system’த்துல நாம இப்ப எந்த folder’ரில் இருக்கோம்னு சொல்லும். அந்த folder’ரோட full path சொல்லும். correct’டா?
மதன்: இத இன்னொரு விதமாகவும் செல்லலாம், pwd command, terminal process’சோட current folder’ரோட முழு path’தையும் காட்டும்.


மழலைக் காதல் – Tech Highlights 20

மதன்: என்ன ரொம்பத் தீவிரமா ஏதோ பாத்துட்டு இருக்கீங்க போல.
கார்த்திகா: Terminal’ல பயன்படுத்தும் editors பத்தி படிச்சேன், அதாங்க vi, emacs, nano
மதன்: Oh, எது easyயா இருக்கு?
கார்த்திகா: nano தான்.

மதன்: எது கஷ்டமா இருக்கு?
கார்த்திகா: vi
மதன்: இந்த emacs டிரை பண்ணீங்களா?
கார்த்திகா: பண்ணேன், ரொம்ப வித்தியாசமா இருக்கு.
மதன்: ஆமாம் emacs வித்தியாசமாத்தான் இருக்கும், ஏன்னா அது editor உருவத்துல இருக்குற ஒரு language interpreter, அதாவது python மாதிரி.
கார்த்திகா: என்னது, language interpreterரா?

மதன்: ஆமாம், emacs ஒரு Lisp language interpreter, Linux இருக்குறவங்க emacs ஐக் கிட்டத்தட்ட ஒரு operating systemனே சொல்லுவாங்க ஏன்னா அதுல இல்லாதது எதுவுமே இல்ல, அதுல இருக்குற plugins வேற எந்த ஒரு editorக்கும் கிடையாது.
கார்த்திகா: எனக்கு எத கத்துக்கிட்டா long runல useபுல்லா இருக்கும்?
மதன்: emacs தான், ஆனா நீங்க சொன்ன இந்த editors கத்துக்குறதுக்கு முன்னாடி ஒரு முக்கியமான editorர நீங்க கண்டிப்பாக் கத்துக்கனும், அந்த editorருக்குப் பேரு ed.
கார்த்திகா: அப்படி என்ன அது அவ்வளவு முக்கியம்?
மதன்: ஏன்னா orginal unixல இருந்த முதல் editor இதுதான்.
கார்த்திகா உடனே அதன் manualலை எடுத்துப் படிக்க ஆரம்பித்தாள்.
மதன்: எந்த manualல் page பார்க்குறீங்க?
கார்த்திகா: man ed command போட்டு வர manualலைத்தான்
மதன்: அது வேணாம் https://man.freebsd.org/ போய் ed கொடுத்து search பண்னுங்க, அதுல வர ed manualல படிங்க.

கார்த்திகா: ed ஒரு line oriented editorரா?
மதன்: ஆம், அதுக்கு இரண்டு mode உண்டு,

ஒன்னு command mode
இன்னொன்னு insert mode
ed modes

நீங்க ed command கொடுத்து enter கொடுத்ததுமே அது defaultடா command modeலதான் இருக்கும், command modeல ஓவ்வொரு key pressசுக்கும் ஒரு அர்த்தம் உண்டு,

i அல்லது a key press command modeல இருந்து insert modeக்குப் போக
ஒரு தனி lineன்ல . dot insert modeல இருந்து command modeக்கு வர
w key கொடுத்து ஒரு space கொடுத்து பக்கத்துல file name கொடுக்கனும்நாம செய்தத சேமிக்க
qed ல இருந்து வெளிய வர
command mode key press அர்த்தம்

command modeல இருந்து insert modeக்குப் போக i அல்லது a key press பண்ணனும். insert modeல எல்லா key pressசும் சாதாரண அர்த்தம்தான். insert modeல இருந்து command modeக்கு வர ஒரு தனி lineன்ல . dot வைக்கனும், நாம செய்தத சேமிக்க w key கொடுத்து ஒரு space கொடுத்து பக்கத்துல file name கொடுக்கனும், ed ல இருந்து வெளிய வர q கொடுக்கனும்.

அதன்படி கார்த்திகா செய்து பார்த்தாள்.

கார்த்திகா: Super, செம்மைய இருக்கு.
அவள் ed editorரில் உருவாக்கிய கோப்பை cat பயன்படுத்தி என்ன இருக்கின்றது என்று பார்த்தாள்.

கார்த்திகா: ‘இருங்க இப்ப நான் அதே fileல edit பண்ணிப் பார்க்குறேன்
அதே கோப்பை ed இல் மீண்டும் திறந்தாள்.

கார்த்திகா cat பயன்படுத்தி அந்தக் கோப்பைப் பார்ப்பதைக் கண்ட மதன்
மதன்: ஏன் cat use பண்ணிப் பார்க்குறீங்க, ed லயே 1,$p அப்படின்னு command modeல இருக்கும்போது கொடுத்தா முழு fileலயும் காமிக்கும், அதாவது முதல் வரில இருந்து கடைசி வரி வரைக்கும் காண்பிக்கச் சொல்றோம், இத இன்னும் simpleளா ,p கொடுத்தும் பார்க்கலாம்.

அதன்படிக் கார்த்திகா செய்தாள்

மதன்: இனிதான் ed யோட பவர பார்க்கப் போறீங்க, அந்த fileல world இருக்குற line மட்டும் காட்ட g/world/p அப்படின்னு கொடுங்க.

கார்த்திகா அப்படியே செய்தாள்.

மதன்: இதுதான் நாம use பண்ற grep command, அதாவது ed யோட g//p தான் grep commandடா மாறுச்சு.
மதன் கூறிவிட்டுச் சிரிக்க கார்த்திகாவும் புன்னகைத்தாள்.
மதன்: இன்னொரு power பார்க்கலாம், இப்போ world ல எடுத்துட்டு அதுக்கு பதிலா karthika அப்படின்னு வரவழைக்க 1,$s/world/karthika/g கொடுங்க, பிறகு ,p கொடுங்க
கார்த்திகாவும் அப்படியே செய்தாள்.

கார்த்திகா: இது என்ன ? காட்டுது
மதன்: ‘நீங்க world ஐ karthika ன்னு மாத்திட்டீங்கள்ள, அத save செய்யவில்லைன்னு காட்டுது, h கொடுங்க, இப்போ என்ன தவறு நடக்குதுன்னு காட்டும்.
கார்த்திகா அதைச் செய்தாள்.

கார்த்திகா: இப்போ w கொடுத்து save பண்ணனும் correctடா?
ஆம் என்பதுபோல் மதன் தலை ஆட்டினான்.

கார்த்திகா: எனக்கு இந்த editor ரொம்பப் பிடிச்சிருக்கு
மதன்: அப்போ உங்களுக்கு sed commandடும் மிகவும் பிடிக்கும், ஏன்னா sed என்பது stream editor அதாவது stream ed அப்படிங்குறத குறிக்குது. ed ல செய்யுற அத்தன commandசையும் sed லயும் செய்யலாம்.
கார்த்திகா: அப்போ, ed command தான் grep commandடுக்கும் sed commandடுக்கும் அடிப்படை correctக்டா?
மதன்: அதுமட்டும் இல்ல, regex அப்படிங்குற concept முதன் முதலா implement பண்ண applicationனும் ed editor தான்.
மதன்: கார்த்திகா, இப்ப நீங்க ஒரு முக்கியமான கட்டத்துக்கு வந்துட்டீங்க, https://man.freebsd.org ல sh கொடுத்து வரும் manualல போய்ப் படிங்க, அத இப்ப நீங்க படிச்சீங்கன்னா superரா shell scripting கத்துப்பீங்க, அதுக்குத் தேவையான எல்லாம் இப்ப உங்ககிட்ட இருக்கு.

கார்த்திகா: ok, என்ன train பண்ணதுக்கு குருதட்சணையா என்ன செய்யனும்?
மதன்: நீங்க எப்பவும் Linux பயன்படுத்தனும்.


One Of Us- Tech Highlights 19

கார்த்திகா: நேத்து நீங்க process பத்தி விளக்கிச் சொன்னீங்கல்ல, போய்ப் படிச்சேன். system’த்துல என்னென்ன process run ஆகுது, அந்த processகள எப்படிப் பார்க்கிறது, என்ன command use பண்ணனும், எல்லாம் தெரிஞ்சிக்கிட்டு வந்திருக்கேன். சொல்லட்டுமா?
மதன்: ok
கார்த்திகா: முதல்ல ps command, இந்த command மூலம் நம்ம systemத்தில் run ஆகிக்கொண்டிருக்கும் அத்தனை processகளையும் பார்க்க முடியும், இந்த command அப்படியே எந்த optionஷனும் கொடுக்காம run செஞ்சா current terminalலோட associate ஆகி இருக்கும் process மட்டும் list பண்ணும்.

கார்த்திகா: இதே commandடுக்கு x option கொடுத்தா, current userரோட எல்லா processகளையும் காட்டும்.

கார்த்திகா: இதே commandடுக்கு a option கொடுத்தால் systemத்தில் இருக்கும் terminalசோட associate ஆகி இருக்கும் அத்தனை processகளையும் காட்டும்.

கார்த்திகா: இப்போ ax ரெண்டு optionனையும் சேர்த்துக் கொடுத்தா systemத்துல current run ஆகும் அத்தனை processகளையும் காட்டும்.

கார்த்திகா: நான் சொன்னதெல்லாம் correctடா?
மதன்: correct.

கார்த்திகா: அடுத்து top command, இது ஒரு TUI (Terminal User Interface) வகை command
மதன்: அப்படின்னா?
கார்த்திகா: அதாவது இந்த TUI வகையான application, GUI (Graphical User Interface) application மாதிரியே menu, window எல்லாம் இருக்கும், ஆனா எல்லாமே terminal’லையே இருக்கும்.
மதன்: அப்ப GUI அப்படின்னா என்ன?
கார்த்திகா: கூகுள்ல சர்ச் பண்ணித் தெரிஞ்சிக்கோங்க
கார்த்திகா: top commandடுக்கு வருவோம். இந்த command system எவ்வளவு cpu use பண்ணிக்கிட்டு இருக்கு, எவ்வளவு memory use பண்ணிக்கிட்டு இருக்கு, எந்த process அதிகமா cpu use பண்ணுது, எந்த process அதிகமா memory use பண்ணுது இப்படி எல்லா detailஸ்சும் காட்டும், correctக்டா?


மதன்: correct, அது மட்டும் இல்லாம top command மூலம் processகள் பற்றிய பல விஷயங்கள நாம தெரிஞ்சிக்கலாம், processகல controlலும் பண்ணலாம்.
கார்த்திகா: free command, இந்த command மூலமா நம்ம சிஸ்டத்துல எவ்வளவு memory இருக்குன்னு தெரிஞ்சிக்கலாம்.

மதன்: free commandடோட எந்த fieldட பார்த்து current systemத்தோட memory usageஜ தெரிஞ்சிப்பீங்க?
கார்த்திகா: free command outputல Available fieldதான் systemத்துல எவ்வளவு memory மிச்சம் இருக்குன்னு காட்டும்
மதன்: சரி
மதன்: memory எவ்வளவு காலியா இருக்குன்னு வேற வழியிலயும் பார்க்கலாம்
கார்த்திகா: ஆமாம் top commandடும் எவ்வளவு memeory காலியா இருக்குன்னு avail mem fieldடுல காட்டும்
மதன்: ஆமாம், அது மட்டும் இல்லாம, இந்த commmandடும்

$ cat /proc/meminfo

available memory காட்டும்.

மதன்: இந்த outputல MemAvailable line தான் current systemத்தில் காலியா இருக்கும் memory
கார்த்திகா: இந்த /proc file systemத்துல process பத்தின எல்லா detailsசும் இருக்கும் போல
மதன்: ஆமாம்
மதன்: ஒரு முக்கியமான command விட்டுட்டீங்க, kill command பத்தி படிச்சீங்களா.
கார்த்திகா: ஆமாம், அதச் சொல்ல மறந்துட்டேன், kill command ஒரு processக்குப் பலவிதமான signalஸ் அனுப்பப் பயன்படுத்தப்படும் command.

$ kill 965


கார்த்திகா: இந்த 965 அப்படின்ற pid என்னோட current systemத்துல run ஆகும் pulseaudio அப்படின்ற processசோட pid, இப்ப நான் kill commandக்கு இந்த 965 pid கொடுத்தா pulseaudio process terminate ஆகிடும்.
மதன்: அது மட்டும் இல்லாம kill commandடுக்கு -L option கொடுத்தா ஒரு processசுக்கு எத்தனை விதமான signalஸ் அனுப்பலாம்னு காட்டும், signalஸ்சோட signal numberரையும் காட்டும்.

மதன்: இந்த signalஸ்ல முக்கியமான signalஸ்

9) SIGKILL
11) SIGSEGV
15) SIGTERM
18) SIGCONT
19) SIGSTOP

இதுல 15) SIGTERM தான் default signal, அதாவது kill commandக்கு எந்த signal கொடுக்கனும்னு சொல்லலைன்னா அது defaultடா 15) SIGTERM ஆ தான் processக்கு அனுப்பும், இந்த signal வந்தவுடன் அந்த processல இருக்குற SIGKILL signalலுக்கு உண்டான default signal handler அந்த processஸ terminalte பண்ணிடும்.

11) SIGSEGV சிக்னல் ஒரு process ஏதாவது கோக்குமாக்கா வேல செஞ்சதுனா, kernel பொடனியிலேயே ஒன்னு வச்சுப் போய் சாகுன்னு சாகடிக்கப் பயன்படுத்துற signal

19) SIGSTOP signal பயன்படுத்தி நாம ஒரு processச freeze பண்ண முடியும், அதாவது அது எந்த வேலையும் செய்யாது, ஆனா அந்த processச kernel terminate செய்யாது, அந்த processஸ 18) SIGCONT கொடுத்து மீண்டும் இயக்க வைக்கலாம்.

கார்த்திகா: 9) SIGKILL பத்தி சொல்லவே இல்லையே?
மதன்: 9) SIGKILL தான் ரொம்ப Dangerரான signal, ஒரு processச பாரபட்சமே இல்லாம உடனே சாகடிக்க பயன்படுத்துற signal, இந்த signal ஒரு processக்கு அனுப்பப்பட்டா அந்த processல இருக்குற சிக்னல் handlerருக்கு அந்த signal போகாம kernelலே அந்த processஸ்ச சாகடிச்சுடும், அதனால எப்பவும் இந்த SIGKILL பயன்படுத்தும்போது கவனமா இருக்கனும்.

கார்த்திகா: signalஸ்ல இவ்வளவு விஷயம் இருக்கா? Amazing.
ஒருவர் மதனின் Monitorரையும் கார்த்திகாவின் laptopப்பையும் சுட்டிக்காட்டி
ஒருவர்: Is anyone see what i see, that Desktop look like i3 and that other laptop look like cinnamon.
மதன்: Exactly Comrade, Its i3 on top of btw and another one in கார்த்திகாஸ் laptop, That is cinnamon on top of Mint.
கார்த்திகா: Mint புரியுது அது என்ன i3, cinnamon, btw?
மதன்: cinnamon உங்கள் desktop environment, நீங்க login பண்ண உடனே வர்ற UI screen, Linuxல பல desktop environment இருக்கு, i3 என்னோட desktop environment, well, i3 is actually a window manager.

Cinnamon on top of Mint
i3 on top of Archlinux

ஒருவர்: That’s Great Comrade, never thought she is also one of us, btw I too use arch, Seems you are using default i3? why don’t you RICE?
மதன்: I am not good in Art Comrade
கார்த்திகா: So you guys are talking about Archlinux, But what is btw?
மதன்: btw expansion by the way, Archlinux use பண்றவங்க, அவங்க Archlinux use பண்றத பெருமிதமாச் சொல்லிக்காட்ட btw I use arch அப்படின்னு சொல்லி மத்தவங்கள கடுப்பேத்துவாங்க, அதுவே போகப்போக மத்தவங்க அவங்கள கிண்டல் பண்றதுக்கும் அவங்களே அவங்கள கிண்டல் பண்ணிக்குறதுக்கும் ஒரு memeமா மாறிடுச்சு, அதுல இருந்து வந்ததுதான் இந்த btw, Archlinux க்கு இன்னொரு nick name.

கார்த்திகா: அடப் பாவிகளா, இப்படியுமா கலாய்ப்பீங்க? But what is that RICE?
மதன்: அதுவா, உங்கள் Desktopப்ப உங்களுக்குப் புடிச்ச மாதிரி customize பண்றது, ஒரு சாதாரண கார் வாங்கி அதுல வித விதமா sticker ஒட்டி silincer மாத்தி உள்ள இருக்குற spare parts மாத்தி அதோட performance improve பண்றாங்கள்ள, அதுக்கு பேர் Race Inspired Cosmetic Enhancements (RICE), இதே terminologyயதான் unix உலகத்துல அவங்களோட desktop அவங்களுக்குப் புடிச்சாமாதிரி customize பண்றதுக்கு use பண்றாங்க, நீங்க unixporn [https://www.reddit.com/r/unixporn] reddit communityடில இருக்குற postடுங்க பாத்திங்கன்னா எல்லாம் இப்படி customize பண்ண Linux Desktop screen shot போஸ்ட்டுங்களாத்தான் இருக்கும்.

கார்த்திகா: Is this Linux?
மதன்: Linux மட்டும் இல்ல BSD (Berkeley Software Distribution), macOS.
கார்த்திகா: Anyway, நேரமாச்சு, see you next time Comrade.


நெஞ்சில் உள்ளாடும் ராகம் – Tech Highlights 18

மதன்: இப்ப நான் ஏன் உங்களுக்கு இந்த C program எப்படி compile பண்ணி run பண்றதுன்னு சொல்லிக் கொடுத்தேன் தெரியுமா?
கார்த்திகா: இருங்க நானே சொல்றேன், ஒரு command அப்படிங்கறது machine புரியிற ELF format’ல இருக்குற ஒரு binary executable, அது நம்ம file system’த்துல ஒரு இடத்தில் save ஆகி இருக்கும் அந்த இடத்தைக் கண்டுபிடிக்க type command use பண்ணனும்.

type command’டால அந்த command கண்டுபிடிக்க முடியலன்னா எந்த இடத்துல அந்த command இருக்கோ அந்த Directory’ரிய PATH environment variable’ள்ல சேக்கனும் அப்படி இல்லன்னா direct’டா full path கொடுத்து execute பண்ணனும்.
மதன்: Correct, ஆனா நான் சொல்ல வந்தது அதுமட்டுமில்ல, நீங்க /home/karthika/a.out அப்படின்னு command type பண்ணி enter கொடுத்தீங்கள்ள, அப்ப என்ன நடந்தது?
கார்த்திகா: என்ன நடந்தது, hello world அப்படின்னு output வந்தது. அதுக்குத்தான நாம C program எழுதினோம்?
மதன்: அதுதான் எப்படி அந்த output வந்தது?
கார்த்திகா: a.out command execute ஆச்சு, அந்த command வேலை hello world அப்படின்னு print பண்றது, அதனால hello world output வந்தது, அதானே?
மதன்: அந்த a.out எப்படி execute ஆச்சு?
கார்த்திகா: தெரியல, நீங்களே சொல்லுங்க
மதன்: இங்க தான் நாம process அப்படின்னா என்னன்னு தெரிஞ்சுக்கனும்.
மதன் process பற்றி விவரிக்க ஆரம்பித்தான்.
நீங்க /home/karthika/a.out command type பண்ணி enter தட்டும்போது உங்க shell அந்த a.out binary executable file’லோட full path வாங்கி kernel கிட்ட கொடுத்து execute பண்ணச் சொல்லும், அப்ப linux kernel முதல்ல அந்த a.out fileல read பண்ணும், அது எந்த மாதிரியான binary formatல இருக்குன்னு முதல்ல கண்டுபிடிக்கும், நாம ஏற்கனவே பாத்தா மாதிரி, அந்த executable ELF formatல இருக்குன்னு தெரிஞ்சுக்கிட்டு அப்புறம் அந்த fileல read பண்ணி memoryயில் ஒரு இடத்துல அந்த a.out file contentட வெச்சிக்கும், அடுத்து a.out executable execute பண்ணத் தேவையான வேற சில libraries memoryயில் load செஞ்சிக்கும், இதுக்கு பேரு dynamic linking. அடுத்து அந்த a.out executableள execute பண்ணத் தேவையானது எல்லாம் load பண்ணதும் அந்த executableளோட entry point, அதாவது நம்ம C programல main() function இருக்குல்ல, அந்த functionன invoke பண்ணும், இப்படித்தான் நாம create பண்ண a.out executableள kernel memoryயில ஏத்தி ஒரு processசா மாத்தி execute பண்ணும், ஒவ்வொரு processக்கும் ஒரு id இருக்கு அதுக்கு பேரு process id அத pid அப்படின்னு சொல்லுவாங்க, ஒரு processசோட detail தெரிஞ்சிக்க cat /proc//status command run பண்ணித் தெரிஞ்சிக்கலாம்,

a.out executableல kernel கிட்ட கொடுத்து execute பண்ண சொல்லுச்சில்ல நம்ம shell, அதுதான் நம்ம a.out processசுக்கு parent process, அந்த shellலுக்கு நம்ம a.out process, one of the child process. ஒவ்வொரு processசுக்கும் ஒரு parent process இருக்கும், அந்த parent processஸ்ஸ child processஸ்ல இருந்து தெரிஞ்சுக்க easyயா child processஸ்ல parent processஸோட pid ய ppid அப்படின்னு save பண்ணி இருப்பாங்க. ppid மூலமா எந்த ஒரு processசோட parent processசையும் கண்டுபிடிச்சிடலாம்.
கார்த்திகா: நம்ம a.out processஸோட pid எப்படித் தெரிஞ்சிக்கிறது?
மதன்: அதுக்கு C ல getpid() அப்படின்னு ஒரு function இருக்கு
மதன் அவள் laptopப்பை வாங்கி source codeடைச் சரி செய்து அதை compile செய்து run செய்தும் காட்டினான்,


கார்த்திகா: அப்ப cat /proc/9810/status command run பண்ணா a.out processசோட details வரும் correctடா?
மதன்: Run பண்ணிப் பாருங்க
கார்த்திகா உடனே cat /proc/9810/status என்று type செய்து enter தட்டினாள்,
கார்த்திகா: என்ன /proc/9810/status அப்படிங்குற fileலே இல்லன்னு சொல்லுது? ok, நம்ம a.out command execute ஆகி முடிஞ்சிருச்சு அதனாலயா?


மதன்: Correct, 8300 try பண்ணிப் பாருங்க
கார்த்திகா cat /proc/8300/status என்று type செய்து enter தட்டினாள்,


கார்த்திகா: நிறைய information இருக்கு, ஒன்னும் புரியல
மதன்: கொஞ்சம் கொஞ்சமாகத்தான் புரியும், process, parent process, child process அப்படின்னா என்னன்னு புரிஞ்சதில்ல?
கார்த்திகா: புரிஞ்சது, ஒரு doubt, அப்ப ppid track பண்ணிக்கிட்டு போனா, நாம boot பண்ணவுடன் start ஆன முதல் process detail கிடைச்சிடும் இல்ல?
மதன்: ஆமாம், ஆனா இப்படி ppid track பண்ணிக்கிட்டுப் போறத விட simpleளா cat /proc/1/status அப்படின்னு போட்டு boot ஆனவுடனே start ஆன முதல் process details பாத்துடலாம்.
கார்த்திகா cat /proc/1/status என்று command run செய்தாள்

கார்த்திகா: systemd? இதுதான் எல்லாத்துக்கும் parent processசா?

மதன்: ஆமாம், அதுதான் நாம boot பண்ணவுடன் start ஆகும் முதல் process, அந்த process தான் பல child process start பண்ணும். pid 1 process init processஸ்னு சொல்லுவாங்க. அதோட binary executable எங்க இருக்குன்னு கண்டுபிடிங்க பாப்போம்?

கார்த்திகா type systemd என்ற command’டை run செய்ய
/bin/systemd என்று வந்தது

மதன்: இன்னும் easyயா ஒரு வழி சொல்றேன்


sudo ls /proc/1/exe

command run பண்ணுங்க.
கார்த்திகாவும் அதையே செய்தாள்

கார்த்திகா: Oh, அப்ப pid 1 executable /lib/systemd/systemd தானா?
மதன்: ஆமாம்
கார்த்திகா உடனே ls -l /proc/1 என்று ரன் செய்ய பல fileகள் இருந்தன


கார்த்திகா: இந்த fileகள்ல இருந்து அந்த pid 1 processஸுக்குனடான எல்லா detailsஸும் எடுத்துடலாம்போல?
மதன்: Exactly, pickup பண்ணிட்டீங்க.


நெஞ்சில் உள்ளாடும் ராகம் – Tech Highlights 17

மதன்: இப்ப gcc command பத்தித் தெரிஞ்சுக்க என்ன பண்ணுவீங்க?
கார்த்திகா: man gcc அப்படின்னு டைப் செய்து gcc யோட manual page படிக்கணும். SYNOPSIS ல just ஒரு input file மட்டும் கொடுத்தால் போதும்னு இருக்கு?


மதன்: ஆமாம் ஒரே ஒரு input file மட்டும் கொடுத்தால் போதும், என்ன ஆகுதுன்னு பாப்போமா?

கார்த்திகா Terminal’லில் தனது home directory’யில் இருந்து gcc helloworld.c என்ற command execute செய்தாள்.
கார்த்திகா: என்னது conio.h இல்லையா?
மதன்: உங்களோட source code காட்டுங்க?
கார்த்திகா அவள் எழுதிய Hello world program’மை cat command மூலம் terminal’லில் காட்டிவிட்டு gcc command output’டையும் காட்டினாள்

மதன்: conio.h header windows’ல மட்டும்தான் இருக்கும், linux’ஸில் இருக்காது, அது C language’ஜோட standard header இல்ல.
கார்த்திகா: அப்ப அத remove பண்ணிடட்டா?
மதன்: ஆமாம்
அதன்படியே கார்த்திகா #include line remove செய்து மறுபடியும் gcc helloworld.c என்று run செய்தாள்.
கார்த்திகா: ரெண்டு warning, கடைசியில் ஏதோ error மாதிரி இருக்கு?
கார்த்திகா மறுபடியும் terminalலில் இருந்த output’டைக் காட்டினாள்,

மதன்: ok, முதல் warning main function’னுக்கு default return type int அப்படின்னு சொல்லுது, அதனால நீங்க program முடிவுல return 0 அப்படின்னு return value கொடுக்கணும், ரெண்டாவது warning, getch() அப்படின்னு ஒரு function implicit’டா declare ஆகி இருக்குன்னு வருது, அடுத்து இருக்குற error, getch() அப்படிங்குற function’னே இல்லன்னு சொல்லுது
கார்த்திகா: அப்ப main க்கு முன்னாடி int போட்டு கடைசீயில return 0; line சேக்கனும், அப்புறம் getch() லைன தூக்கனும் அப்படித்தானே?
மதன்: அவ்வளவுதான்
அதன்படி கார்த்திகா தன் source code மாற்றிக் காட்டினாள்,

கார்த்திகா: இப்ப ok’வா?
மதன்: ok மாதிரிதான் தெரியுது, இப்ப compile பண்ணுங்க.
கார்த்திகா gcc helloworld.c என்று ரன் செய்தாள்.
கார்த்திகா: என்ன எந்த output’டும் வரல?
கார்த்திகா வியப்புடன் டெர்மினலைக் காட்டினாள்,


மதன்: அப்படின்னா சுக்கிரன் உச்சத்துல இருக்கான்னு அர்த்தம். எந்த complilation error’ரும் வரலைன்னு அர்த்தம்.
கார்த்திகா: இப்ப எப்படி Hello world program output பார்க்கிறது?
மதன்: இப்ப நான் சில கேள்விகள் கேட்பேன், compile அப்படின்னா என்ன?
கார்த்திகா: அதாவது text format’ட்ல இருக்குற source code’ட binary executable’லா மாத்துரது, அதுக்குத்தான் compiler தேவைப்படுது, அந்த compiler’தான் gcc.
மதன்: இப்ப உங்க compile command எந்த ஒரு errorரையும் காட்டல, அப்படின்னா என்ன அர்த்தம்?
கார்த்திகா: அப்படின்னா compiler successful’ல்லா binary executable’பில create பண்ணிடுச்சுன்னு அர்த்தம், அப்ப அந்த binary executable எங்க?
மதன்: நீங்க எந்த Directory’யில் gcc command run பண்ணீங்களோ அதே Directory’ரியில் தான் இருக்கு.
கார்த்திகா ls கமாண்ட் ரன் செய்தாள்
கார்த்திகா: a.out அப்படின்னு இருக்கு? இதுதான் binary executableளா?
கார்த்திகா கூகுளில் தேட file command கண்டுபிடித்தாள். file command manual படித்து அதை எப்படி run செய்ய வேண்டும் என்பதைக் கற்றுக் கொண்டாள். அதன்படி file a.out என்ற command run செய்தாள்,

கார்த்திகா: ஒரு மண்ணாங்கட்டியும் புரியல
மதன்: மண்ணாங்கட்டிய புரிஞ்சுக்க கொஞ்சம் Time ஆகும், இப்போதைக்கு அந்த outputல ELF ன்னு இருக்குல்ல, அப்படின்னா a.out ஒரு ELF binary formatல இருக்குற ஒரு executable, அத நாம run பண்ணலாம்னு அர்த்தம், எங்க a.out command run பண்ணுங்க பாப்போம்.
கார்த்திகா a.out என்ற command run செய்தாள்,

கார்த்திகா: command இல்லையா, அதான் இருக்கே?
மதன்: a.out எங்க இருக்குன்னு நமக்கு தெரியும், bash shellலுக்கு தெரியணுமே, அதுக்கு என்ன பண்ணனும்?
கார்த்திகா: Oh, right PATH environment variable set பண்ணனும்
மதன்: அப்படியும் பண்ணலாம், இல்ல simple’பிளா a.out executable’ளோட full path கொடுக்கலாம்.
கார்த்திகா full path’த்தையும் கொடுத்து a.out excutable’பிளை run செய்தாள்.

கார்த்திகா: Super


நெஞ்சில் உள்ளாடும் ராகம் – Tech Highlights 16

கார்த்திகா: Linux commands படிக்க படிக்க வந்துக்கிட்டே இருக்கு எப்படி நியாபகம் வெச்சிருக்கீங்க?
மதன்: எல்லாத்தையும் நியாபகம் வச்சிருக்க முடியாது, நாம regular’ரா use பண்றது மட்டும் தான் நம்ம நியாபகத்துல இருக்கும், நாம regular’ரா linux use பண்ண கத்துக்க வேண்டியது ரெண்டு விஷயம், ஒன்னு File system structure, ரெண்டாவது Process. நேத்திக்கு நீங்க சொன்ன commands எல்லாம் file system சம்பந்தப்பட்ட commands, இப்ப நீங்க தெரிஞ்சுக்க வேண்டியது Process, உங்களுக்கு process’னா என்னன்னு தெரியுமா?

Process தான் ஒரு Operating system’த்தின் நாடித் துடிப்பு


கார்த்திகா: Collegeல operating system பத்தி படிக்கிறப்ப கேள்விப்பட்டிருக்கேன். ஆனா முழுசா என்னன்னு தெரியாது
மதன்: Process தான் ஒரு Operating system’த்தின் நாடித் துடிப்பு, நீங்க C ல Hello world program எழுதி இருக்கீங்களா?
கார்த்திகா: என்னங்க, C programming கத்துக்கிறவங்க அந்த program தான் முதல்ல எழுதுவாங்க, எனக்கும் C programming தெரியும்.
மதன்: அப்ப எப்படி நீங்க C ல Hello world எழுதுவீங்கன்னு சொல்லுங்க பாப்போம்?
கார்த்திகா: TurboC’ல, C program எழுதி alt-f9 அழுத்துனா compile ஆகும், ctrl-f9 அழுத்துனா நாம எழுதின program run ஆகி Hello world அப்படின்னு output காட்டும்.

Turbo C IDE

மதன்: Right ,TurboC’ன்னு ஒன்னு double click பண்றீங்களே, அது என்னன்னு தெரியுமா?
கார்த்திகா: TurboC compiler
மதன்: TurboC வெறும் compiler மட்டும் இல்லைங்க, அது ஒரு IDE. ஆனா ஒரு C programming எழுத நமக்கு IDE வேணும்கற அவசியம் இல்ல, ஒரு சாதாரண text file create பண்ற ஒரு text editor இருந்தாப் போதும். அடுத்து நாம அந்த editor’ல எழுதின C source கோட machine’க்கு புரியிற binary executable’ளா மாத்த ஒரு compiler வேணும் அவ்வளவுதான்.
கார்த்திகா: அப்படின்னா ஒரு சாதாரண notepad’ல நாம C program எழுதலாமா?
மதன்: கண்டிப்பா, முதல்ல ஒரு text editor ஒப்பன் பண்ணுங்க. Hello world C program type செஞ்சு save பண்ணுங்க.
கார்த்திகா: /home/karthika/helloworld.txt அப்படின்னு save பண்ணி இருக்கேன்.
மதன்: அந்த .txt எடுத்துட்டு .c அப்படின்னு save பண்ணுங்க
கார்த்திகா: ஓ, ஆமாம்ல, C program .c அப்படின்னு தான் extension இருக்கனும்ல, மறந்துட்டேன்.
மதன்: Linux’ஸில் இருக்குற C compiler .txt க்கும் .c க்கும் வித்தியாசம் பாக்காதுங்க, அத பொருத்தவர நீங்க compile பண்ண கொடுக்கிறது ஒரு சாதாரண text file.
கார்த்திகா: அப்ப .txt அப்படின்னு extension இருந்தாலும் compile பண்ணுமா?
மதன்: Extension’ஷனே இல்லாம ஒரு text file கொடுத்தாலும் compile பண்ணும், அதுக்கு தேவ ஒரு C source அவ்வளவுதான், நாம easy’யா கண்டுபிடிக்கத்தான் .txt அப்படின்னு இருந்தத .c க்கு மாத்த சொன்னேன்.
கார்த்திகா: சரி, இப்ப இந்த /home/karthika/helloworld.c file’ல எப்படி Linux’ல compile பண்றது?
மதன்: அதுக்கு apt command use பண்ணி gcc compiler package install பண்ணுங்க, gcc மட்டும் install பண்றதுக்கு பதிலா packaging-dev அப்படின்னு ஒரு meta package இருக்கு, அத install பண்ணா இன்னும் முக்கியமான சில package’கள் install ஆகும், அதனால, gcc க்கு பதிலா packaging-dev இன்ஸ்டால் பண்ணுங்க.
அதன்படியே கார்த்திகாவும் terminal’லில் apt install packaging-dev, type செய்து install செய்தாள்.
மதன்: இப்ப நீங்க install பண்ண C compiler பேரு gcc, அதாவது gnu-compiler-collection, நான் Linux history சொல்லும்போது கூட Stallman ஒரு C compiler முதல்ல ருவாக்குனார், அதத்தான் Linus Torvalds linux kernal’னல உருவாக்கப் பயன்படுத்தினார்னு சொன்னேன்ல, அந்த compiler இதுதான்.
கார்த்திகா: Linux’ல் உண்மையிலேயே ஒவ்வொரு command’டுக்கு பின்னாடி ஒரு சுவாரஸ்யமான history இருக்கு, அத தெரிஞ்சிக்கிட்டு அந்த command use பண்றது ரொம்ப interesting’கா இருக்கு.
மதன்: இப்ப gcc command install ஆகி இருக்கா இல்லையான்னு எப்படிக் கண்டுபிடிப்பீங்க?
கார்த்திகா: Just அந்த command run பண்ணும் போது அந்த command install ஆகலைன்னா command not found அப்படின்னு error வரும்.
மதன்: Run பண்ணாம கண்டுபிடிக்கனும்.
கார்த்திகா Google’ளில் தேடி type என்ற ஒரு command நாம் கொடுக்கும் command இருக்கா இல்லையா என்று சொல்லும் என்று கண்டுபிடித்தாள்.
மதன்: Super, இப்ப அந்த type command எப்படி run பண்ணுவீங்க?
கார்த்திகா: அதான் man page இருக்கே.
கார்த்திகா man type என்று கொடுத்தாள்,ஆனால் type command’டுக்கு manual pageஇல்லை என்று வந்தது.

கார்த்திகா: என்னங்க, Manual இல்லைன்னு வருது?
மதன்: எல்லா command’டுக்கும் manual page இருக்காதுங்க, அதுக்கு பதிலா type –help அப்படின்னு run பண்ணுங்க.
கார்த்திகாவும் அதன்படியே command type செய்து enter தட்டினாள். type command’டின் சிறிய help வந்தது அதில் அந்த command’டுக்கு என்னவெல்லாம் option’ன்கள் கொடுக்கலாம் என்று குறிப்பிடப்பட்டிருந்தது. ஆனால் manual page’ஜைப் போல் விவரமாக இல்லை.


மதன்: Linux’ஸ்ல இருக்குற தொண்ணூறு சதவீதம் command’ஸுக்கு –help அல்லது -h option கொடுத்தால் அந்த command பத்திச் சின்னதா details output காட்டும், ஆனா அந்த details, proper manual page மாதிரி இருக்காது.
கார்த்திகா type –help output’டில் இருந்த விவரங்களைப் படித்துவிட்டு type gcc என்ற command run செய்தாள், உடனே gcc command இருக்கும் இடம் /usr/bin/gcc என்று type command காட்டியது.


கார்த்திகா: கண்டுபிடிச்சிட்டேன்.
மதன்: Super.

Universe’சின் நிறம் – Tech Highlights 13

ls command

கார்த்திகா: அடுத்து ls, இந்த command terminal open பண்ணிட்டு ஒரு முறையாவது use பண்ணாம இருக்க மாட்டீங்க.

ls commandcurrent folder’ரில் இருக்கும் file மற்றும் folder’களை list பண்ணும்
ls -R command உள்ளுக்குள்ள எத்தன folder இருந்தாலும் அத்தனை folder’ரில் இருக்கும் file மற்றும் folder’களையும் list பண்ணும்
ls -l commanddetailed list பண்ணும்
ls command with folder pathகொடுத்த folder’ரில் இருக்கும் file மற்றும் folder’களை list பண்ணும்
ls command

கார்த்திகா: வெறும் ls command current folder’ரில் இருக்கும் file மற்றும் folder’களை list பண்ணும். அதுவே ls -R command, உள்ளுக்குள்ள எத்தன folder இருந்தாலும் அத்தனை folder’ரில் இருக்கும் file மற்றும் folder’களையும் list பண்ணும். அப்புறம் ls -l command detailed list பண்ணும், இந்த ls command’க்கு ஒரு folder’ரோட path கொடுத்தா, அது current folderர விட்டுட்டு கொடுத்த folder’ரில் இருக்கும் file மற்றும் folder’களை list பண்ணும். உதாரணத்துக்கு ls -l ~/Downloads command current folder’ரை விட்டுட்டு, Home folder’ரில், அதாவது /home/karthika folder’க்குல்ல இருக்குற Downloads folder’ர list பண்ணும்.

மதன்: Correct, அது மட்டும் இல்லாம -l option கொடுக்கும் போது output’ல ஒவ்வொரு line’னில் முதல்ல இருக்கிற பத்து character’கள் தான் அந்த entry’க்கு சொந்தமான file அல்லது folder’ருக்கான permission bits, இத நான் முன்னாடியே உங்ககிட்ட சொல்லியிருக்கேன்.
கார்த்திகா: நியாபகம் இருக்கு.

$ ls
Videos Documents Downloads
$ ls -R
Videos Documents Downloads
./Downloads:
test.txt
$ ls -l
drwxr-xr-x 2 karthika karthika 6 Sep 23 09:38 Videos
drwxr-xr-x 3 karthika karthika 21 Jul 10 12:06 Documents
drwxr-xr-x 3 karthika karthika 21 Jul 10 12:06 Downloads
$ ls -l Downloads
-rw-r–r– 1 karthika karthika 11 Jul 17 01:25 test.txt
$

உதாரணம்

mkdir command

கார்த்திகா: அடுத்து mkdir, இது மூலமா ஒரு folder create பண்ணலாம். அது மட்டும் இல்லாம

mkdir -p one/two/three 

command மூனு folder’ர்களை ஒன்னுக்குள்ள ஒன்னா create பண்ணும். correct’டா?

மதன்: ஆமாம்

$ mkdir -p one/two/three
$ ls -R one
one:
two
one/two:
three
one/two/three:
$

உதாரணம்

rmdir command

கார்த்திகா: அடுத்து rmdir, இது ஒரு folder remove பண்ண use பண்றது. அது மட்டும் இல்லாம

rmdir -p one/two/three 

command முதல்ல three folder’ரை delete பண்ணும் அப்புறம் two folder’ரை delete பண்ணும் கடைசியா one folder’ரை delete பண்ணும். முக்கியமா rmdir command folder’ருக்குள்ள ஏதாவது content இருந்தா அந்த folder’ரை delete பண்ணாது.
மதன்: Great

$ rmdir -p one/two/three
$ ls -R one
ls: cannot access ‘one’: No such file or directory
$

உதாரணம்

cp command

கார்த்திகா: அடுத்து cp, இது ஒரு file அல்லது folder’ர copy பண்ண உதவுது. For example

$ cp /etc/fstab /home/karthika/fstab
$

command /etc க்குள்ள இருக்குற fstab file என்னோட /home/karthika folder’ருக்கு copy செய்யும். அது மட்டும் இல்லாம

$ cp -r /etc /home/karthika/etc
$

கமாண்ட் /etc folder மட்டும் இல்லாம அதுக்குள்ள இருக்கிற அத்தனை file’களையும் folder’களையும் /home/karthika folder’ருக்குள்ள copy செய்யும்.
மதன்: correct.


ஹோம் Sweet Home – Tech Highlights 9

மதன்: /test.txt, save பண்றதுல ஒரு சிக்கல் இருக்கு. ஒரு சாதாரண user’ரா நீங்க /test.txt, save பண்ண முடியாது, ஒவ்வொரு file அல்லது folder’ருக்கும் permission bits அப்படின்னு ஒன்னு இருக்கு, உதாரணமா இந்த command பாருங்க

$ ls -l /dev/video0
crw-rw-r– 1 root video 81, 0 Apr 5 01:40 /dev/video0
$

இந்த output’ட்ல

  • முதல்ல இருக்குற ‘c’ character /dev/video0 file ஒரு ‘Character Device‘ அப்படின்னு சொல்லுது.
  • இந்த device file owner ‘root’, இந்த user’ருக்கு /dev/video0 camera device’ஸ்ல இருந்து data’வைப் படிக்கலாம், எழுதலாம், அதத்தான் ‘c’ character அடுத்து இருக்குற ‘rw-‘ குறிப்பிடுது.
  • அது மட்டும் இல்லாம ‘root’ user தவிர்த்து ‘video group’பில் இருக்குறவங்களும் இந்த camera device files’ல்ல இருந்து data’வைப் படிக்கலாம், எழுதலாம், அதத்தான் அடுத்து இருக்குற ‘rw-‘ குறிப்பிடுது.
  • கடைசியாக இருக்குற ‘r–’ permission bits ‘root’ user அல்லது ‘video’ group members தவிர்த்து மத்தவங்களுக்கு camera device files’ல்ல இருந்து data’வைப் படிக்க மட்டும் rights கொடுக்குது, அதுதான் அடுத்து இருக்குற ‘r–’ குறிப்பிடுது.

கார்த்திகா: இப்பவே கண்ண கட்டுதே

இப்பவே கண்ண கட்டுதே

மதன்: அப்படித்தான் எனக்கும் இருந்தது முதல்ல, அப்புறம் Linux use பண்ணப் பண்ணப் பழகிடுச்சு
மதன்: இப்ப இந்த command பாருங்க,

$ ls -ld /
drwxr-xr-x 17 root root 229 Dec 27 18:52 /
$

  • இங்க முதல் d character / ஒரு folder’னு சொல்லுது, அடுத்து இருக்குற rwx, root user’ருக்குப் படிக்க (r), எழுத (w) மற்றும் பயன்படுத்த (x) permission இருக்கு.
  • அடுத்து root group’ப்புக்குப் படிக்க (r), பயன்படுத்த (x) மட்டும் rights இருக்கு.
  • இதே r-x rights தான் மத்த எல்லா users’களுக்கும் இருக்கு.

So, ஒரு சாதாரண user நீங்க / folder’ரில் file create பண்ண முடியாது.

கார்த்திகா: அப்ப ஒரு சாதாரண user எங்க save பண்றது?
மதன்: ஒவ்வொரு சாதாரண user’ருக்கும் ஒரு Home folder இருக்கும் like, /home/karthika, நீங்க “ls -ld /home/karthika” command execute பண்ணிங்கனா “root root” க்கு பதிலா “karthika karthika” அப்படின்னு இருக்கும். So கார்த்திகா user /home/karthika/test.txt அப்படின்னு editor’டர்ல தாராளமா save பண்ணலாம்.

மதன்: இந்த / folder உள்ள நிறைய folder’ர்ஸ் இருக்கும் அதுல முக்கியமானதுங்க /boot, /proc, /dev, /etc, /home, /usr, /var, /tmp folders.

Linux Root Folders
  • /boot folder’லதான் Linux boot ஆகத் தேவையான Linux kernel, GRUB second stage boot loader எல்லாம் இருக்கும்.
  • /proc ஒரு mount point, இந்த folder’ரில் proc file system map ஆகியிருக்கும். இந்த proc file system linux’ஸ்ல இருக்குற எல்லா process பத்தின details’சும் கொடுக்கும்.
  • /dev இன்னொரு mount point, இந்த folder’ரில் devtmpfs file system map ஆகியிருக்கும். இந்த devtmpfs linux’ஸ்ல இருக்குற எல்லா device’களும் file’லா இருக்கும்.
  • /etc போல்டரில் நிறைய configuration folder’கள் இருக்கும். /usr/bin folder’ரில் எல்லா program’கள் இருக்கும்.
  • அதேபோல /usr/lib folder’ரில் எல்லா dynamic library’களும் இருக்கும்.
  • /var போல்டரில் log மற்றும் cache file’கள் இருக்கும்.
  • /tmp folder’ரில் temporary file’கள் இருக்கும்.
  • இதுங்கள்ல முக்கியமானது /home folder. இதுலதான் ஒவ்வொரு user’க்கும் தனித்தனி folder இருக்கும்.

❌
❌