লিনাক্স ফাইল সিস্টেম কি? (What is Linux File System?)
উইন্ডোজের যেমন C: ড্রাইভ থাকে, লিনাক্সে সবকিছু শুরু হয় Root (/) থেকে। লিনাক্স ফাইল সিস্টেম হলো একটি হায়ারার্কিকাল (Hierarchical) কাঠামো যেখানে ফাইল, ফোল্ডার, এমনকি হার্ডওয়্যার ডিভাইসও একটি ট্রি-এর মতো সাজানো থাকে।

লিনাক্স ডিরেক্টরি হায়ারার্কি (Hierarchy Overview)
/
├── bin (Essential binary commands)
├── boot (Static files of the boot loader)
├── dev (Device files like hard drives, USB)
├── etc (System configuration files)
├── home (User personal directories)
├── lib (Essential shared libraries)
├── opt (Optional add-on software packages)
├── root (Root user's home directory)
├── tmp (Temporary files)
├── usr (User binaries and read-only data)
└── var (Variable files: logs, mail, database)
১. ব্যাসিক নেভিগেশন কমান্ডস (Navigation Commands)
টার্মিনালে চলাফেরা করার জন্য এই কমান্ডগুলো সবার আগে শিখতে হবে:
| কমান্ড | কাজ | উদাহরণ |
|---|---|---|
pwd | বর্তমান লোকেশন দেখা (Print Working Directory) | pwd |
ls | ফাইলের লিস্ট দেখা | ls or ls -l (ডিটেইল লিস্ট) |
cd | ডিরেক্টরি পরিবর্তন করা | cd /etc |
cd ~ | সরাসরি নিজের হোম ডিরেক্টরিতে ফিরে যাওয়া | cd ~ |
mkdir | নতুন ফোল্ডার তৈরি করা | mkdir test_folder |
touch | নতুন খালি ফাইল তৈরি করা | touch file.txt |
rm | ফাইল ডিলিট করা | rm file.txt |
rmdir | খালি ফোল্ডার ডিলিট করা | rmdir test_folder |
rm -rf | ফোল্ডার এবং তার ভেতরের সব ফাইল ডিলিট করা | rm -rf data |
২. ফাইল দেখা ও এডিট করা (Viewing & Editing Files)
ফাইলের ভেতরের কন্টেন্ট দেখার জন্য কয়েকটি জনপ্রিয় কমান্ড:
cat: ছোট কোনো ফাইলের সব লেখা একবারে দেখতে।cat /etc/os-release
less: বড় ফাইল স্ক্রল করে দেখার জন্য (বড় লগের ক্ষেত্রে উপকারী)।less /var/log/syslog
head/tail: ফাইলের প্রথম ১০ লাইন বা শেষ ১০ লাইন দেখতে।tail -n 20 error.log(শেষ ২০ লাইন দেখাবে)
vi/nano: ফাইল এডিট করার জন্য।vi testfile.txt(Vi এডিটরে ওপেন হবে)
৩. ইউজার ও গ্রুপ ম্যানেজমেন্ট (Users & Groups)
ডেভঅপস ইঞ্জিনিয়ার হিসেবে আপনাকে প্রায়ই নতুন ইউজার তৈরি করতে হবে এবং তাদের এক্সেস কন্ট্রোল করতে হবে।
ইউজার তৈরি ও পাসওয়ার্ড সেট করা:
sudo adduser user1 # user1 নামে নতুন ইউজার তৈরি
sudo passwd user1 # পাসওয়ার্ড সেট বা পরিবর্তন
ইউজার ডিলিট করা:
userdel user1 # ইউজার ডিলেট হবে কিন্তু হোম ফোল্ডার থাকবে
userdel -r user1 # ইউজার এবং তার সব ডেটা ডিলিট হবে
Sudo এক্সেস দেওয়া (Power User):
কোনো ইউজারকে অ্যাডমিন পাওয়ার দিতে চাইলে:
sudo usermod -aG sudo user1 # Ubuntu/Debian ভিত্তিক সিস্টেমে
এরপর লগআউট ছাড়াই গ্রুপ আপডেট করতে: newgrp sudo
৪. ফাইল পারমিশন ও ওনারশিপ (Permissions & Ownership)
লিনাক্সে তিন ধরনের মানুষের জন্য তিন ধরনের পারমিশন থাকে: Owner, Group, Others।
ls -l দিয়ে পারমিশন বোঝা:
-rwxr-xr--
r= Read (4)w= Write (2)x= Execute (1)
| সেকশন | পারমিশন | কার জন্য? |
|---|---|---|
| ১-৩ ক্যারেক্টার | rwx | Owner (ফাইল যে তৈরি করেছে) |
| ৪-৬ ক্যারেক্টার | r-x | Group (একটি নির্দিষ্ট টিমের জন্য) |
| ৭-৯ ক্যারেক্টার | r-- | Others (পাবলিক বা অন্য সবাই) |
পারমিশন পরিবর্তন করা (chmod):
- Symbolic Mode:
chmod u+x script.sh(ওনারকে এক্সিকিউট পারমিশন দেওয়া) - Numeric Mode:
chmod 755 script.sh(Owner: rwx, Group: rx, Others: rx)
ওনারশিপ পরিবর্তন করা (chown):
sudo chown user:group file.txt
sudo chown devops:team1 sample.txt
৫. নেটওয়ার্কিং ও কানেক্টিভিটি (Networking & Connectivity)
ডেভঅপস ইঞ্জিনিয়ারদের প্রায়ই চেক করতে হয় সার্ভার বা অ্যাপ্লিকেশন ঠিকমতো কানেক্টেড কি না।
| কমান্ড | কাজ | উদাহরণ |
|---|---|---|
ping | হোস্ট সার্ভার বা আইপি কানেক্টেড কি না দেখা | ping google.com |
curl / wget | ইউআরএল থেকে কন্টেন্ট বা ফাইল ডাউনলোড করা | curl -I https://google.com |
nslookup / dig | ডিএনএস (DNS) রেকর্ড চেক করা | dig example.com |
ip addr | নিজের সার্ভারের আইপি অ্যাড্রেস দেখা | ip addr show |
telnet / nc | নির্দিষ্ট পোর্ট খোলা কি না তা চেক করা | nc -zv 127.0.0.1 80 |
ss / netstat | লিসেনিং পোর্ট এবং কানেকশন দেখা | ss -tuln |
৬. সার্ভিস ও প্রসেস ম্যানেজমেন্ট (Service & Process Management)
সার্ভারে কোনো অ্যাপ্লিকেশন চালানো বা বন্ধ করার জন্য:
systemctl: সার্ভিস ম্যানেজ করা।sudo systemctl start nginx(স্টার্ট করা)sudo systemctl stop nginx(বন্ধ করা)sudo systemctl status nginx(অবস্থা দেখা)sudo systemctl restart nginx(রিস্টার্ট করা)
journalctl: সিস্টেম লোগ দেখা।journalctl -u nginx(নির্দিষ্ট সার্ভিসের লগ)
ps aux: বর্তমানে রানিং সব প্রসেস একবারে দেখতে।top/htop: রিয়েল-টাইম সিপিইউ ও র্যাম ইউসেজ মনিটর করা।kill -9 [PID]: কোনো হ্যাং হওয়া প্রসেস জোরপূর্বক বন্ধ করে দেওয়া।free -m: মেমোরি (RAM) কতটুকু ফাঁকা আছে তা মেগাবাইটে দেখা।
৭. রিমোট এক্সেস ও ফাইল ট্রান্সফার (Remote Access & SCP)
এক সার্ভার থেকে অন্য সার্ভারে কাজ করার জন্য এই কমান্ডগুলো অপরিহার্য:
ssh user@ip: রিমোট সার্ভারে সিকিউর লগইন করা।scp file.txt user@ip:/path: এক কম্পিউটার থেকে অন্য কম্পিউটারে ফাইল কপি করা।rsync: অনেক বড় ফোল্ডার বা ফাইল সিঙ্ক (Sync) করার জন্য।ssh-keygen: SSH কি তৈরি করা (পাসওয়ার্ড ছাড়া লগইনের জন্য)।
৮. টেক্সট প্রসেসিং ও অটোমেশন (Text Processing & Automation)
লগ ফাইল থেকে তথ্য বের করতে এই কমান্ডগুলো জাদুর মতো কাজ করে:
grep: নির্দিষ্ট প্যাটার্ন বা টেক্সট খুঁজে বের করা।grep "ERROR" app.log
sed: ফাইলে থাকা টেক্সট অটোমেটিক খুঁজে পরিবর্তন করা।sed -i 's/old-ip/new-ip/g' config.yaml
awk: ফাইলের নির্দিষ্ট কলাম থেকে ডাটা বের করা।awk '{print $1}' access.log(প্রথম কলামটি প্রিন্ট করবে)
cut: নির্দিষ্ট সিলেক্টর দিয়ে টেক্সট কাটা।echo "dev:ops:team" | cut -d':' -f2(আউটপুট: ops)
৯. ইনপুট/আউটপুট অপারেটর (Piping & Redirection)
লিনাক্সের আসল শক্তি হলো আউটপুট এক কমান্ড থেকে অন্য কমান্ডে পাঠানো।
|(Pipe): এক কমান্ডের আউটপুট অন্য কমান্ডের ইনপুট হিসেবে পাঠানো।ls -l | grep ".log"(শুধু লোগ ফাইলগুলো দেখাবে)
>(Redirect): আউটপুট একটি ফাইলে সেভ করা (আগের ডেটা মুছে যাবে)।echo "Hello" > test.txt
>>(Append): আউটপুট ফাইলের শেষে যোগ করা (আগের ডেটা থাকবে)।date >> logs.txt
১০. সিস্টেম ইনফরমেশন ও প্যাকেজ ম্যানেজমেন্ট (System Info & Packages)
uname -a: কার্নেল ভার্সন এবং সিস্টেমের তথ্য।df -h: ডিস্ক স্পেস কতটুকু ফাঁকা আছে দেখা।history: আগে রান করা সব কমান্ডের লিস্ট দেখা।apt(Debian/Ubuntu) /yum(CentOS/RHEL): প্যাকেজ ইনস্টল করা।sudo apt update && sudo apt install docker.io
tar -czvf: ফাইল বা ফোল্ডার কম্প্রেস করা।tar -czvf backup.tar.gz /var/www/html
১১. বিবিধ প্রয়োজনীয় কমান্ড (Miscellaneous Daily Utilities)
কিছু ছোট কিন্তু অত্যন্ত দরকারী কমান্ড যা প্রতিদিন কাজে লাগে:
du -sh *: বর্তমান ফোল্ডারের প্রতিটি ফাইল বা ফোল্ডার কতটুকু জায়গা দখল করে আছে তা দেখা।lsof -i :8080: পোর্ট ৮০৮০ কোন প্রসেস ব্যবহার করছে তা দেখা।watch -n 1 "date": প্রতি ১ সেকেন্ড পর পর একটি কমান্ড অটোমেটিক রান করা।env/printenv: সিস্টেমের সব এনভায়রনমেন্ট ভ্যারিয়েবল দেখা।alias: বড় কোনো কমান্ডের শর্টকাট তৈরি করা।alias ll='ls -la'
history: আগে রান করা সব কমান্ডের লিস্ট দেখা।whoami: বর্তমানে কোন ইউজার হিসেবে লগইন করা আছেন তা দেখা।
পাসওয়ার্ড ছাড়া Sudo ব্যবহার:
অটোমেশন স্ক্রিপ্টের জন্য পাসওয়ার্ড প্রম্পট ছাড়া sudo রান করতে sudo visudo কমান্ড দিয়ে নিচের লাইনটি যোগ করুন:
username ALL=(ALL) NOPASSWD: ALL
সারাংশ (Summary Checklist)
| কমান্ড | কাজ | ক্যাটাগরি |
|---|---|---|
ls -l | পারমিশন দেখা | File System |
chmod 755 | পারমিশন পরিবর্তন | Permissions |
systemctl | সার্ভিস ম্যানেজমেন্ট | Service |
curl -I | হেডার চেক করা | Connectivity |
ps aux | প্রসেস লিস্ট দেখা | Monitoring |
grep | টেক্সট সার্চ করা | Search |
ssh | রিমোট লগইন | Remote |
sed / awk | টেক্সট প্রসেসিং | Automation |