முக்கிய விஷயங்கள்
- ஒவ்வொரு Server, Docker image, CI job-உம் Linux தான். GUI உங்களோட வராது.
- தினசரி வேலைக்கு 30 commands போதும் — file, chmod, grep, process, port, SSH.
- chmod 777 ஒரு fix இல்ல. தேவையான permission bit மட்டும் மாத்துங்க.
- Campus interview-லயும் product team on-call-லயும் இதையே live type பண்ண சொல்வாங்க.
- Laptop terminal-ல இன்றே practice பண்ணுங்க. அதே விரல் VM, container, CI-லயும் ஓடும்.
Linux command line அப்படின்னா என்ன?
Chennai-ல ஒரு IT park. First week. Slack-ல message. Staging-க்கு போய் log பாத்து சொல்லு. Mouse வேலைக்காது. Folder window இல்ல. Black screen. ஒரு cursor blink ஆகுது. வயிறு லேசா சுத்தலாம். அதுதான் Linux command line. எளிமையா சொன்னா, நீங்க machine-கிட்ட short verb-ல பேசுற இடம். list பண்ணு, copy பண்ணு, search பண்ணு, stop பண்ணு, connect பண்ணு. ஒரு வரி type பண்ணுங்க. Reply படிங்க. இந்த loop தான் skill.
அதாவது GUI இல்லாத இடத்திலயும் வேலையை முடிக்கற கருவி இது. Docker image ஒரு சின்ன Linux. CI job ஒரு Linux box. On-call night-ல வருற ticket-உம் இதே cursor தான். Pretty window-ஐ நம்பிக்கிட்டே இருக்க முடியாது.
400 page manual இப்போ தேவையில்லை. வேலையில திரும்ப திரும்ப வரறது 30 commands: pwd, ls, cd, mkdir, touch, cp, mv, rm, cat, less, head, tail, echo, chmod, chown, sudo, grep, find, sort, uniq, wc, ps, kill, ss, curl, ssh, scp, ssh-keygen, history, man. இந்த list விரல் நினைவுல வச்சா week one ஓடும்.
Terminal open பண்ணுங்க. ஒரு வரி போடுங்க. Output படிங்க. தப்புன்னா கூச்சப்படாதீங்க. அழிச்சு மறுபடியும் type பண்ணுங்க.
Terminal-ல folder-ஐ எப்படி சுத்திப் பார்க்கலாம்?
Slack சொல்றது repo /opt/app-ல இருக்கு. உங்க laptop-ோட yellow folder icon அங்க வராது. அப்போ navigation commands தான் தெரு விளக்கு.
pwd இப்போ நீங்க நிற்கிற folder-ஐ print பண்ணும். தப்பான இடத்துல நின்னு rm போடாதீங்க — முதல்ல pwd. ls -lah file list காட்டும், hidden file உட்பட, size-ஐ படிக்க எளிமையா. cd வேற folder-க்கு jump. mkdir -p nested folder-ஐ ஒரே தடவை உருவாக்கும். Already இருந்தா கூச்சப்படாது.
touch empty file போடும். cp copy. mv move அல்லது rename. rm delete. cat சின்ன file-ஐ screen-ல காட்டும். less பெரிய file-ஐ page-ஆ scroll பண்ண விடும். head முதல் சில line. tail கடைசி line. tail -f log வளர வளர follow பண்ணும். echo ஒரு வரியை file-ல எழுத உதவும்.
இது உங்க first pack. Developer வாழ்க்கையில daily இதையே type பண்ணுவீங்க. Tab அழுத்தினா name complete ஆகும். rm-க்கு முன்னாடி ls போட்டு பாருங்க. ஒரு named file-ஐ தான் முதல்ல delete பண்ணுங்க. Wildcard * வச்சு ஆடாதீங்க.
pwd
ls -lah
mkdir -p ~/cli-lab/src ~/cli-lab/logs
touch ~/cli-lab/src/app.py
echo 'hello from cli-lab' > ~/cli-lab/logs/app.log
cp ~/cli-lab/logs/app.log ~/cli-lab/logs/app.log.bak
tail -n 20 ~/cli-lab/logs/app.log
உதாரணமாக, இப்போ lab-ல app.log எழுதி backup வச்சு last 20 line பாருங்க. இதே pattern தான் staging-ல log பாக்கும்போது வரும். Path மட்டும் மாறும். விரல் அதே.
File permission-ஐ எப்படி சரி பண்ணலாம்?
Linux-ல ஒவ்வொரு file-க்கும் owner இருக்கு, group இருக்கு, permission mask இருக்கு. ls -l போட்டா rwx மூணு கட்டு பாருங்க. முதல் கட்டு user, அடுத்தது group, மூணாவது others. r படிக்கலாம், w மாத்தலாம், x ஓட்டலாம்.
chmod இந்த mask-ஐ மாற்றும். நீங்க இப்போ எழுதின deploy.sh run ஆகணும்னா chmod u+x deploy.sh. அதாவது உங்களுக்கு மட்டும் execute bit. Config-க்கு chmod 644 போதும். 6 அதாவது owner-க்கு read+write. 4 அதாவது மற்றவங்களுக்கு read மட்டும். Script பொதுவா 755. Boring தான். ஆனா சரி.
chown owner-ஐ மாற்றும். sudo ஒரு command-ஐ root-ஆ ஓட்டும். System permission denied சொன்னா மட்டும். எல்லாத்துக்கும் sudo போடுற habit பின்னாடி production-ல காயடிக்கும்.
chmod 777 ஒரு fix இல்ல. யாரு வேணாலும் write பண்ணலாம். Shared VM-ஐ open house ஆக்கிடும். Owner-ஐ சரி பண்ணுங்க. தேவையான ஒரு bit மட்டும் on பண்ணுங்க.
touch ~/cli-lab/deploy.sh
echo 'echo deploying' > ~/cli-lab/deploy.sh
chmod u+x ~/cli-lab/deploy.sh
ls -l ~/cli-lab/deploy.sh
Log-ல ஒரு error-ஐ எப்படி ஜில்லுனு கண்டுபிடிக்கலாம்?
Log ஆயிரம் line. Repo நூறு folder. உங்க கண் search engine இல்ல. அதனால grep, find, pipe. இந்த மூணு hours காக்கும்.
grep text-ஐ தேடும். find file-ஐ தேடும். Pipe அதாவது | character. Kitchen குழாய் மாதிரி ஒரு command-ோட output அடுத்த command-க்கு போகும். உதாரணமாக ps aux | grep nginx — முதல் list, அப்புறம் filter.
Python file உள்ளே TODO தேடணும்னா grep -R வச்சு நடக்கலாம். நேத்துக்கு அப்புறம் தொட்ட log-ஐ find -name '*.log' -mtime -1. sort | uniq -c repeat எத்தனை முறைனு count காட்டும். wc -l line எண்ணும். CI fail ஆனா முழு log-ஐ கண்ணால தேடாதீங்க. grep error போட்டா போதும்.
echo 'TODO: retry queue' >> ~/cli-lab/src/app.py
echo 'error: timeout on payment' >> ~/cli-lab/logs/app.log
grep -R 'TODO' --include='*.py' ~/cli-lab
find ~/cli-lab -name '*.log'
cat ~/cli-lab/logs/app.log | grep error
wc -l ~/cli-lab/logs/app.log
இந்த combo தான் on-call-ல உங்களை காப்பாற்றும். cat போட்டு ஆயிரம் line scroll பண்ணி தலை வலிக்க வேணாம். Filter பண்ணுங்க. Count பண்ணுங்க. அப்புறம் மட்டும் file open பண்ணுங்க.
Process-ஐயும் port-ஐயும் எப்படி பார்க்கலாம்?
App hang. Browser சுத்துது. இன்னொரு desk-ல இருக்கிற dev சொல்றாரு: port 8000 already in use. இப்போ process list வேணும், port list வேணும்.
ps aux ஓடிக்கிற process-ஐ காட்டும். Column-ல PID பாருங்க. kill PID மெதுவா நிறுத்தும். Process-க்கு cleanup-க்கு நேரம் கிடைக்கும். kill -9 கடைசி ஆயுதம். முதல்ல சாதாரண kill முயற்சி பண்ணுங்க.
எந்த process எந்த port பிடிச்சிருக்குனு பார்க்க ss -tln பயன்படுத்துங்க. பழைய netstat-க்கு பதில் இப்போ பெரும்பாலான Linux-ல ss தான் கையில் இருக்கும். Listening TCP list கிடைக்கும். Local service எழுந்திருக்கான்னு curl கொஞ்சம் check பண்ணலாம். history போட்டா முன்னாடி type பண்ணின command திரும்ப கிடைக்கும். man ஒரு command-க்கு short help.
ps aux | head -n 8
ss -tln
Port பிடிச்சுக்கிடந்த old process-ஐ காணோம்னு புது App start பண்ணாதீங்க. முதல்ல ss. அப்புறம் PID. அப்புறம் kill. இந்த வரிசை தான் குறைவான drama.
Staging-க்கு SSH எப்படி போகலாம்?
Staging-ல GUI இல்ல. ssh user@hostname இதுதான் கதவு. Password-ஐ Slack-லயோ mail-லயோ paste பண்ணாதீங்க. Key வச்சு போங்க.
ssh-keygen -t ed25519 ஒரு key pair உருவாக்கும். Public key Server-ல authorized_keys-ல இருக்கணும். Private key உங்க laptop-ல மட்டும். scp file-ஐ Server-க்கு copy பண்ணும். அடிக்கடி போற host-க்கு ~/.ssh/config-ல Host alias போட்டா வாழ்க்கை சுலபம்.
Private key-ஐ Git-ல போடாதீங்க. Zip பண்ணி WhatsApp-லயும் அனுப்பாதீங்க. Laptop காணாம போனா team-கிட்ட சொல்லி key-ஐ revoke பண்ணுங்க. First SSH success ஆனா tail -f log தான் உங்க first real ticket-ோட முடிவு.
உதாரணமாக, office badge மாதிரி நினைச்சுக்கோங்க. Password ஒவ்வொரு முறையும் காவலாளி கேக்குறாரு. Key இருந்தா gate open. Developer-க்கு key தான் நாகரீகம்.
இதெல்லாம் கத்துக்க எவ்வளவு செலவு?
Command line-க்கு extra INR வேணாம். Linux itself free. Ubuntu அல்லது Debian laptop-ல போடலாம். Windows machine-னா WSL போட்டா அதே commands. Mac-ல terminal ஏற்கனவே Unix-like. Company laptop-ல terminal already இருக்கு.
Cloud VM later. Book வாங்க வேணாம். Course card வேணாம். இந்த 30-ஐ உங்க machine-ல type பண்ணி பழகுங்க. அதுக்கு செலவு நேரம் மட்டும் — ஒரு evening போதும் start-க்கு.
யார் எந்த mistake பண்ணி trouble-ல மாட்டுறாங்க?
rm -rf-ஐ தப்பான folder-ல போடுறது. * wildcard-ஓட delete. Backup இல்லாத அழுகை இரண்டுமே. ls முதல்ல. Path உறுதி. அப்புறம் rm.
chmod 777 எல்லா file-க்கும். Shared Server-ல இது யாருக்கு வேணும்னாலும் write. sudo எல்லாத்துக்கும் — habit ஆகிடும். Production-ல ஒரு தவறான sudo சோகம்.
kill -9-ஐ முதல் ஆயுதமா பயன்படுத்துறது. Process file-ஐ சரியா close பண்ணாது. பெரிய log-ஐ cat பண்ணி terminal freeze ஆகும். less அல்லது tail பயன்படுத்துங்க. cd பண்ணிவிட்டு pwd பாக்காம rm — இதுவும் classic.
SSH password-ஐ chat-ல அனுப்புறது. Private key-ஐ project zip-ல வைக்கறது. இதெல்லாம் புது joiner-ல அடிக்கடி தெரியும். கேள்வி கேக்க வெட்கப்படாதீங்க. தப்பு command-ஐ slow-ஆ நிறுத்துங்க.
நீங்க இப்போ என்ன பண்ணணும்?
இந்திய service company campus interview-ல ஒரு terminal open பண்ணி ls, grep, chmod, ps கேட்பாங்க. Chennai, Bengaluru product team-ல on-call வந்தா SSH போய் tail தான் first move. GUI help desk இல்ல. Docker training-லயும் CI debug-லயும் இதே 30 தான்.
இப்போ ஒரு short practice. உங்க laptop-ல ~/cli-lab உருவாக்குங்க. src-ல ஒரு py file, logs-ல ஒரு log. grep வச்சு TODO பிடியுங்க. deploy.sh-க்கு chmod u+x போடுங்க. ls -l-ல x தெரியுதான்னு பாருங்க. ss -tln போட்டு எந்த port listen பண்றதுன்னு ஒரு paper-ல எழுதுங்க.
Half hour போதும். இந்த விரல் later staging-ல உங்களை காப்பாற்றும். நாளைக்கு interview இருந்தா, இந்த lab-ஐ ஒரு தடவை திருப்பி ஓட்டுங்க. Command நினைவுல இருக்கணும், slide-ல இல்ல.




கருத்துகள் (0)
Be the first to comment!