رفتن به محتوا
LoopX

دستورات لینوکس: برگه‌ی تقلب کامل

همه‌ی دستورهای دوره‌ی لینوکس از صفر در یک صفحه: ۳۵۵ دستور از ۳۲ درس، به ترتیب درس‌ها. هر دستور در درس خودش با خروجی واقعی اجرا و توضیح داده شده است؛ روی اسم درس بزن تا توضیح کامل و مثال‌ها را ببینی.

شروع کار

لینوکس چیست؟

دستورکاری که می‌کند
uname -aهمه‌ی اطلاعات هسته
uname -rنسخه‌ی هسته
uname -mمعماری پردازنده
cat /etc/os-releaseنام و نسخه‌ی توزیع
. /etc/os-release && echo $PRETTY_NAMEنام توزیع در یک خط
cat /proc/versionجزئیات ساخت هسته
nprocتعداد هسته‌های CPU
grep MemTotal /proc/meminfoکل حافظه

راه‌اندازی محیط تمرین

دستورکاری که می‌کند
wsl --installنصب WSL و Ubuntu (PowerShell ادمین) — نمونه
wsl -l -vفهرست توزیع‌ها و نسخه‌ی WSL — نمونه
wsl --set-default-version 2نسخه‌ی ۲ پیش‌فرض — نمونه
multipass launch 24.04 --name labساخت Ubuntu با Multipass — نمونه
docker run -it --rm ubuntu:24.04 bashیک Ubuntu یک‌بارمصرف
whoamiنام کاربر فعلی
hostnameنام ماشین
pwdپوشه‌ی فعلی
echo $HOMEپوشه‌ی خانه

ترمینال و shell

دستورکاری که می‌کند
echo "متن"چاپ متن
whoamiنام کاربر فعلی
historyفهرست دستورهای قبلی
clear (یا Ctrl+L)پاک کردن صفحه
echo $?کد خروج دستور قبلی
echo $SHELLshell پیش‌فرض
cat /etc/shellsshell های معتبر سیستم
Ctrl+C / Ctrl+Dقطع دستور / پایان ورودی
Ctrl+Rجستجو در تاریخچه
compgen -c prefixدستورهایی که با پیشوند شروع می‌شوند

کمک گرفتن از خود لینوکس

دستورکاری که می‌کند
man lsراهنمای کامل ls
man 5 passwdصفحه‌ی بخش ۵ (فرمت فایل)
ls --helpخلاصه‌ی گزینه‌ها
help cdراهنمای دستور داخلی shell
type -a echoهمه‌ی معنی‌های یک اسم
which python3مسیر برنامه
whereis lsبرنامه و راهنما
apropos "copy files"جستجو در توضیح‌ها
man -f ls / whatis lsتوضیح یک‌خطی
man -w lsمسیر فایل راهنما

فایل‌ها و پوشه‌ها

ساختار پوشه‌های لینوکس

دستورکاری که می‌کند
ls /فهرست ریشه
ls -F /با نشانه‌ی نوع
ls /etcتنظیمات
cat /etc/hostnameنام ماشین
ls /var/logلاگ‌ها
cat /proc/cpuinfoاطلاعات CPU
ls -a ~پوشه‌ی خانه با فایل‌های مخفی
tree -L 1 -d /درخت یک‌سطحی از پوشه‌ها
file /dev/nullنوع فایل

حرکت بین پوشه‌ها

دستورکاری که می‌کند
pwdپوشه‌ی فعلی
cd /var/logرفتن با مسیر مطلق
cd ..یک سطح بالا
cdرفتن به خانه
cd -برگشت به پوشه‌ی قبلی
ls -laفهرست بلند با فایل‌های مخفی
ls -lhفهرست بلند با حجم خوانا
ls -ld /var/logخود پوشه (نه محتوا)
pushd DIR / popdپشته‌ی پوشه‌ها
echo $PWD $OLDPWDپوشه‌ی فعلی و قبلی

ساختن، کپی، جابه‌جایی و حذف

دستورکاری که می‌کند
touch a.txt b.txtساخت فایل‌های خالی
mkdir -p a/b/cساخت مسیر تو در تو
mkdir -p proj/{src,tests,docs}چند پوشه با brace
cp a.txt b.txtکپی فایل
cp -r dir dir2کپی پوشه
cp -i a b / cp -n a bبپرس / رونویسی نکن
cp file{,.bak}بکاپ سریع
mv old newتغییر نام / جابه‌جایی
mv *.tmp dir/جابه‌جایی چند فایل
rm file / rm -r dir / rmdir dirحذف فایل / پوشه‌ی پر / پوشه‌ی خالی
rm -i *.tmpحذف با تأیید
echo rm *.tmpپیش‌نمایش آنچه shell جایگزین می‌کند
rm -- -fileحذف اسمی که با - شروع می‌شود

خواندن فایل‌ها

دستورکاری که می‌کند
cat fileچاپ همه‌ی فایل کوچک
cat -n fileبا شماره‌ی خط
less file (و q برای خروج)خواندن صفحه‌به‌صفحه
less +G fileباز کردن و رفتن به آخر
head -n 5 file۵ خط اول
tail -n 20 file۲۰ خط آخر
tail -n +100 fileاز خط ۱۰۰ تا آخر
tail -f fileدنبال کردن زنده
tail -F fileدنبال کردن با اسم (چرخش لاگ)
wc -l < fileتعداد خط‌ها
file nameنوع فایل
head -c 16 f | od -An -tx1بایت‌های اول به شکل هگز

ویرایش فایل با nano و vim

دستورکاری که می‌کند
nano fileباز کردن/ساختن فایل با nano
Ctrl+O ، Enter ، Ctrl+Xnano: ذخیره و خروج
Ctrl+Wnano: جستجو
vim fileباز کردن با vim
i / Escvim: ورود به Insert / برگشت به Normal
:w :q :wq :q!vim: ذخیره، خروج، هر دو، خروج بدون ذخیره
/word n Nvim: جستجو و پرش بین نتایج
dd yy p uvim: حذف خط، کپی خط، چسباندن، واگرد
:%s/old/new/gvim: جایگزینی در کل فایل
sudo cp f f.bak && sudo nano fبکاپ و ویرایش فایل سیستمی

لینک‌ها: hard link و symbolic link

دستورکاری که می‌کند
ln original hardhard link
ln -s target linksymbolic link
ln -sfn releases/v2 currentسوییچ لینک پوشه (انتشار)
ls -liinode و لینک‌ها
stat -c "%i %h %n" finode و تعداد لینک
readlink linkمقصد مستقیم
readlink -f linkمقصد نهایی کامل
test -e linkلینک سالم است؟
pwd -Pمسیر واقعی (بدون symlink)

پیدا کردن فایل‌ها

دستورکاری که می‌کند
find . -name "*.log"اسم با الگو (حساس به حروف)
find . -iname "*.txt"بی‌حساس به حروف
find / -size +100M 2>/dev/nullفایل‌های بزرگ‌تر از ۱۰۰ مگابایت
find . -mtime -1تغییرکرده در ۲۴ ساعت اخیر
find . -type dفقط پوشه‌ها
find . -name "*.tmp" -deleteحذف نتایج (اول بدون -delete امتحان کن)
find . -name "*.py" -exec wc -l {} +اجرای دستور روی نتایج (دسته‌ای)
find . -maxdepth 1فقط یک سطح
find . \( -name "*.a" -o -name "*.b" \)یا
locate -i nameجستجوی سریع در پایگاه داده
sudo updatedbبه‌روز کردن پایگاه locate

متن، ورودی و خروجی

ورودی، خروجی و redirect

دستورکاری که می‌کند
cmd > out.txtخروجی به فایل (رونویسی)
cmd >> out.txtخروجی به انتهای فایل
cmd 2> err.txtفقط خطا به فایل
cmd > out.txt 2> err.txtخروجی و خطا در دو فایل جدا
cmd > all.txt 2>&1 (یا &> all.txt)هر دو در یک فایل
cmd > /dev/null 2>&1اجرای بی‌صدا
cmd < in.txtورودی از فایل
cmd | tee log.txtهم نمایش، هم ذخیره
cmd | tee -a log.txtافزودن به انتهای فایل
echo x | sudo tee /etc/fنوشتن در فایل root
> file (یا : > file)خالی کردن فایل
set -o noclobberجلوگیری از رونویسی تصادفی با >

pipe و ترکیب دستورها

دستورکاری که می‌کند
cmd1 | cmd2خروجی cmd1 → ورودی cmd2
sort -n / sort -rnمرتب‌سازی عددی / عددی معکوس
sort -u / sort -k2یکتا / بر اساس ستون ۲
sort | uniq -cشمارش هر مقدار
cut -d" " -f1ستون اول با جداکننده‌ی فاصله
tr "a-z" "A-Z"تبدیل به حروف بزرگ
tr -d "\r"حذف \r
wc -lتعداد خط
cut -d" " -f1 f | sort | uniq -c | sort -rn | head۱۰ مقدار پرتکرار
find . -print0 | xargs -0 cmdاجرای امن روی فایل‌ها
cmd1 |& cmd2stdout و stderr هر دو به pipe
set -o pipefailخطای هر مرحله را برگردان

جستجو با grep و regex

دستورکاری که می‌کند
grep ERROR fileخط‌های دارای ERROR
grep -i -n error fileبی‌حساس به حروف + شماره‌ی خط
grep -c ERROR fileتعداد خط‌های منطبق
grep -v DEBUG fileخط‌های بدون DEBUG
grep -rn "ERROR" dir/بازگشتی با شماره‌ی خط
grep -rl ERROR dir/فقط اسم فایل‌ها
grep -E "ERROR|WARN" fileیا (regex توسعه‌یافته)
grep -oE "[0-9]{1,3}(\.[0-9]{1,3}){3}" fاستخراج IP
grep -w ERROR fileکلمه‌ی کامل
grep -B2 -A2 ERROR fileدو خط قبل و بعد
grep -F "1.5" fileمتن ثابت (بدون regex)
grep -q text file && echo هستاستفاده در شرط (کد خروج)

پردازش متن با sed و awk

دستورکاری که می‌کند
sed 's/old/new/g' fileجایگزینی همه‌ی موارد (چاپ نتیجه)
sed -i.bak 's/old/new/g' fileویرایش درجا با بکاپ
sed -n '2,4p' fileفقط خط‌های ۲ تا ۴
sed '/^#/d' fileحذف خط‌های توضیح
sed 's|/a|/b|' fileجداکننده‌ی دیگر برای مسیرها
awk '{print $1, $NF}' fileستون اول و آخر
awk -F: '{print $1, $7}' /etc/passwdستون‌ها با جداکننده‌ی :
awk '$3 > 100 {print $1}' fileشرط روی ستون
awk '{s+=$1} END{print s}' fileجمع یک ستون
awk '{c[$1]++} END{for(k in c) print c[k], k}' fileشمارش هر مقدار
awk 'NR>1' fileرد کردن سطر هدر

کاربرها و دسترسی‌ها

کاربرها و گروه‌ها

دستورکاری که می‌کند
id / id userUID، GID و گروه‌ها
whoami / groupsنام کاربر / گروه‌ها
getent passwd userاطلاعات کاربر
sudo useradd -m -s /bin/bash userساخت کاربر
sudo adduser userساخت کاربر (تعاملی)
sudo passwd userتعیین رمز
sudo passwd -l user / -uقفل / باز کردن
sudo groupadd grpساخت گروه
sudo usermod -aG grp userافزودن به گروه (بدون پاک شدن بقیه)
sudo gpasswd -d user grpحذف از گروه
sudo useradd -r -s /usr/sbin/nologin svcکاربر سیستمی سرویس
sudo userdel -r userحذف کاربر با پوشه‌ی خانه

دسترسی‌ها: خواندن، نوشتن، اجرا

دستورکاری که می‌کند
ls -l / ls -ld dirدیدن دسترسی‌ها
stat -c "%a %A %U:%G %n" fدسترسی عددی، نمادین و مالک
chmod 644 f / chmod 755 fفایل عادی / برنامه
chmod 600 f / chmod 700 dخصوصی
chmod u+x fاجرایی کردن برای مالک
chmod go-rwx fگرفتن همه‌ی حق‌ها از گروه و بقیه
chmod -R u=rwX,go=rX dirبازگشتی بدون خراب کردن x پوشه‌ها
sudo chown user:group fتغییر مالک و گروه
sudo chown -R user:group dirبازگشتی
umask / umask 077دیدن / تعیین ماسک
namei -l /path/to/fileدسترسی همه‌ی اجزای مسیر
sudo -u user cmdاجرا با هویت کاربر دیگر (برای آزمایش)

root و sudo

دستورکاری که می‌کند
sudo دستوریک دستور با root (رمز خودت)
sudo -u کاربر دستوراجرا با هویت کاربر دیگر
sudo -iشل ورود کامل root (در پایان exit)
sudo -sشل root در همان پوشه
sudo !!دستور قبلی را دوباره با sudo
sudo -l / sudo -l -U کاربرفهرست اجازه‌ها
sudo -kپاک‌کردن رمز کش‌شده
su - کاربرورود کامل با رمز آن کاربر
sudo usermod -aG sudo کاربردادن دسترسی sudo (Debian/Ubuntu)
sudo visudoویرایش امن /etc/sudoers
sudo visudo -f /etc/sudoers.d/نامویرایش امن یک فایل جدا
sudo visudo -c / visudo -cf فایلبررسی نحو
grep COMMAND= /var/log/auth.logردگیری دستورهای sudo (Debian/Ubuntu)

دسترسی‌های ویژه

دستورکاری که می‌کند
ls -l /usr/bin/passwdدیدن setuid (s جای x مالک)
stat -c "%a %A %n" فایلعدد چهاررقمی و حروف
chmod u+s فایل / chmod 4755 فایلsetuid (با احتیاط)
chmod g+s پوشه / chmod 2775 پوشهsetgid برای پوشه‌ی مشترک
chmod +t پوشه / chmod 1777 پوشهsticky bit
chmod 2770 پوشهتیمی و خصوصی
chmod 3770 پوشهsetgid + sticky (پوشه‌ی تحویل)
find / -xdev -perm -4000 -type fفهرست برنامه‌های setuid
find DIR -type d -exec chmod g+s {} +setgid فقط روی پوشه‌ها
ps -o ruser,euser,comm -p PIDهویت واقعی و مؤثر یک پروسه

پروسه‌ها و سیستم

پروسه‌ها

دستورکاری که می‌کند
ps aux / ps -efهمه‌ی پروسه‌ها
ps -eo pid,ppid,user,%cpu,%mem,args --sort=-%cpuستون دلخواه، مرتب‌شده
pgrep -a نامPID و دستور پروسه‌های منطبق
top / htopنمای زنده (q = خروج)
kill PIDSIGTERM (مؤدبانه)
kill -9 PIDSIGKILL (اجباری، آخرین راه)
pkill -f "الگو"سیگنال به پروسه‌های منطبق
دستور &اجرا در پس‌زمینه
jobs / fg %1 / bg %1کنترل کارهای shell
Ctrl+Z / Ctrl+Cمتوقف کردن / قطع کردن
nohup دستور > log 2>&1 &زنده ماندن بعد از بسته‌شدن ترمینال
kill -lفهرست سیگنال‌ها

سرویس‌ها با systemd

دستورکاری که می‌کند
systemctl status ناموضعیت و آخرین لاگ‌ها
systemctl start|stop|restart نامکنترل فوری
systemctl reload نامخواندن دوباره‌ی تنظیمات بدون قطع
systemctl enable --now ناماجرا همین حالا و در هر بوت
systemctl disable نامبرداشتن از بوت (سرویس همین حالا می‌ماند)
systemctl is-active|is-enabled ناموضعیت یک‌کلمه‌ای
systemctl daemon-reloadبعد از هر تغییر در unit file
systemctl cat نامدیدن فایل unit
systemctl reset-failed نامپاک‌کردن وضعیت failed
journalctl -u نام -fلاگ زنده‌ی یک سرویس
journalctl -u نام -n 50 --no-pagerپنجاه خط آخر
systemd-analyze verify فایلبررسی نحو unit file

منابع سیستم: دیسک، حافظه، CPU

دستورکاری که می‌کند
df -h / df -hT / / df -iفضا، نوع فایل‌سیستم، inode
du -sh *حجم هر مورد (بدون مخفی‌ها)
du -h --max-depth=1 . | sort -rh | headبزرگ‌ترین‌ها، با مخفی‌ها
sudo du -xh --max-depth=1 / 2>/dev/null | sort -rh | headبزرگ‌ترین پوشه‌های سیستم
ls -lhSفایل‌ها از بزرگ به کوچک
free -hحافظه و swap (ستون available)
swapon --showفضای swap
uptime / nprocload average و تعداد هسته‌ها
vmstat 1 5آمار CPU و حافظه
lsblkدیسک‌ها و پارتیشن‌ها
mount | grep نام / findmnt مسیربررسی mount ها
sudo mount دستگاه مسیر / sudo umount مسیروصل / جدا کردن
lsof +L1فایل‌های پاک‌شده ولی باز

متغیرهای محیطی و تنظیمات shell

دستورکاری که می‌کند
NAME=value / export NAME=valueمتغیر shell / محیطی
echo "$NAME" / printenv NAME / envخواندن و فهرست
unset NAMEحذف
VAR=value دستورفقط برای یک دستور (مثلاً TZ=Asia/Tehran date)
echo "$PATH" | tr ":" "\n"پوشه‌های PATH
export PATH="$HOME/bin:$PATH"افزودن پوشه به PATH
which نام / type -a نامکدام فایل اجرا می‌شود
alias ll='ls -la' / unalias llمیان‌بر
source ~/.bashrcاعمال تغییر بدون ترمینال جدید
bash -ic 'دستور'آزمایش در یک shell تعاملی تازه
~/.profile / ~/.bashrcماندگاری: shell ورود / هر ترمینال

بسته‌ها و شبکه

نصب برنامه با apt

دستورکاری که می‌کند
sudo apt updateتازه‌کردن فهرست بسته‌ها
sudo apt upgrade / sudo apt upgrade --dry-runبه‌روزرسانی / شبیه‌سازی
apt list --upgradableبسته‌های قابل‌به‌روزرسانی
apt search عبارت / apt show بستهجستجو و جزئیات
apt-cache policy بستهنسخه و مخزن
sudo apt install -y بستهنصب
sudo apt remove بسته / sudo apt purge بستهحذف / حذف با تنظیمات
sudo apt autoremoveوابستگی‌های بی‌صاحب
sudo apt install ./فایل.debنصب فایل .deb با وابستگی
dpkg -l | grep بستهنصب‌بودن و وضعیت
dpkg -L بسته / dpkg -S /مسیر/فایلفایل‌های بسته / بسته‌ی فایل
curl -sL آدرس/dists/noble-security/InRelease | grep ^Date:تازه‌بودن یک میرور

مبانی شبکه در لینوکس

دستورکاری که می‌کند
ip -br -4 ainterface ها و IP ها (خلاصه)
ip routeجدول مسیر و gateway
ip route get 1.1.1.1مسیر یک مقصد
ping -c 3 -W 2 مقصدآیا جواب می‌دهد؟
dig +short اسم / dig +short MX اسمDNS (A یا نوع دیگر)
dig +short @8.8.8.8 اسمپرسیدن از یک DNS مشخص
nslookup اسمپرسش ساده‌ی DNS
getent hosts اسمهمان که برنامه‌ها می‌بینند
cat /etc/resolv.confDNS سیستم
echo "127.0.0.1 نام" | sudo tee -a /etc/hostsنام محلی
traceroute -n -I مقصدمسیر hop ها (با ICMP)
hostname / hostname -Iنام و IP ماشین

پورت‌ها و سرویس‌های شبکه

دستورکاری که می‌کند
ss -tulpnهمه‌ی گوش‌دهنده‌ها با پروسه (sudo برای همه)
ss -tlnp 'sport = :22'چه کسی پورت ۲۲ را دارد
ss -tn state establishedاتصال‌های برقرار
lsof -i :80 / fuser 80/tcpصاحب پورت
curl -sI http://hostسرآیندهای HTTP
curl -s -o /dev/null -w '%{http_code}' URLفقط کد وضعیت
nc -zv -w 2 host 22آیا پورت TCP باز است؟
nc -zv -w 1 host 20-25یک بازه
getent services 443/tcpاسم سرویس یک پورت
cat /etc/servicesفهرست پورت‌های معروف

SSH و کار با سرور از راه دور

دستورکاری که می‌کند
ssh user@hostورود
ssh -p 2222 -i ~/.ssh/key user@hostپورت و کلید مشخص
ssh user@host "uptime; df -h /"اجرای دستور روی سرور
ssh-keygen -t ed25519 -C "alice@laptop"ساختن جفت‌کلید
ssh-copy-id user@hostگذاشتن کلید عمومی روی سرور
ssh-keygen -R hostپاک‌کردن اثرانگشت قدیمی از known_hosts
ssh devبا اسم از ~/.ssh/config
scp فایل dev:/tmp/ / scp -r پوشه dev:/tmp/کپی با ssh
rsync -avz --dry-run --delete src/ dev:/dst/آزمایش همگام‌سازی
rsync -avz src/ dev:/dst/همگام‌سازی
ssh -f -N -L 8081:127.0.0.1:8099 devتونل به سرویس localhost سرور
sudo sshd -t && sudo systemctl reload sshاعمال امن تنظیمات sshd

فایروال با ufw

دستورکاری که می‌کند
sudo ufw status verbose / status numberedوضعیت / با شماره
sudo ufw default deny incomingورودی‌ها رد، مگر مجاز
sudo ufw default allow outgoingخروجی‌ها آزاد
sudo ufw allow OpenSSHاول این!
sudo ufw allow 80/tcp / sudo ufw allow "Nginx HTTP"باز کردن وب
sudo ufw allow from IP to any port 22 proto tcpSSH فقط از یک IP
sudo ufw deny 23/tcp / sudo ufw reject 23/tcpرد بی‌صدا / رد با خطا
sudo ufw insert 1 deny from IPاستثنا در بالای فهرست
sudo ufw delete allow 80/tcpحذف قاعده
sudo ufw show addedقاعده‌های نوشته‌شده
sudo ufw enable / sudo ufw disable / sudo ufw resetروشن / خاموش / پاک‌کردن همه
nc -zv -w 2 SERVER 80آزمایش از بیرون

کار حرفه‌ای

آرشیو و فشرده‌سازی

دستورکاری که می‌کند
tar -czf backup.tar.gz dirساختن آرشیو فشرده
tar -tzf backup.tar.gzفهرست محتوا
tar -xzf backup.tar.gz -C مقصدباز کردن در مقصد
tar -xzf a.tar.gz مسیر/فایل -Oیک فایل روی صفحه
tar -czf "b-$(date +%F).tar.gz" --exclude=node_modules dirبکاپ با تاریخ و exclude
tar -xzf a.tar.gz --strip-components=1بدون پوشه‌ی بالایی
gzip -k فایل / gunzip -k فایل.gzبا نگه‌داشتن اصلی
zcat فایل.gz / gzip -t فایل.gzخواندن / آزمایش سلامت
zip -r a.zip dir -x "dir/tmp/*"ساختن zip
unzip -l a.zip / unzip a.zip -d مقصدفهرست / باز کردن
ls -1t backup-*.tar.gz | tail -n +4 | xargs rmنگه‌داشتن ۳ بکاپ آخر

زمان‌بندی کارها با cron

دستورکاری که می‌کند
crontab -e / crontab -lویرایش / فهرست crontab خودت
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1هر شب ساعت ۲ با لاگ
*/5 * * * * دستورهر ۵ دقیقه
0 9 * * 1-5 دستور۹ صبح، دوشنبه تا جمعه
@reboot دستوربعد از هر بوت
date +\%F (داخل crontab)escape علامت %
SHELL=/bin/bash (خط اول crontab)استفاده از bash
grep CRON /var/log/syslogتاریخچه‌ی اجراها
*/5 * * * * flock -n /tmp/job.lock job.shبدون اجرای هم‌پوشان
systemd-analyze calendar "*-*-* 02:00:00"آزمایش زمان‌بندی systemd
systemctl list-timerstimer های فعال

لاگ‌ها و عیب‌یابی

دستورکاری که می‌کند
tail -n 50 /var/log/syslog / tail -F فایل۵۰ خط آخر / دنبال‌کردن زنده
journalctl -u نام -n 50 --no-pagerلاگ یک سرویس
journalctl -u نام -fزنده
journalctl --since "1 hour ago" -p errخطاهای یک ساعت اخیر
journalctl -b -1 / journalctl --list-bootsبوت قبلی / فهرست بوت‌ها
journalctl -g عبارت -o catجستجو، فقط متن
dmesg -T --level=err,warnهشدار و خطای هسته با زمان خوانا
logger -t myapp -p user.err "پیام"نوشتن لاگ
grep -E "Invalid user|Failed" /var/log/auth.logتلاش‌های ورود ناموفق
systemctl --failedسرویس‌های شکست‌خورده
logrotate -d /etc/logrotate.d/appآزمایش قاعده‌ی چرخش
journalctl --disk-usageحجم journal

پروژه: راه‌اندازی یک سرور تازه

دستورکاری که می‌کند
sudo apt update && sudo apt upgrade -yبه‌روزرسانی
sudo adduser ops && sudo usermod -aG sudo opsکاربر ادمین
ssh-keygen -t ed25519 && ssh-copy-id ops@hostکلید و نصب آن
sudo nano /etc/ssh/sshd_config.d/10-hardening.confتنظیم sshd
sudo sshd -t && sudo systemctl restart sshبررسی و اعمال
sudo ufw default deny incoming; sudo ufw allow OpenSSH; sudo ufw enableفایروال
sudo apt install unattended-upgrades fail2banبه‌روزرسانی خودکار و fail2ban
sudo fail2ban-client status sshdIP های بن‌شده
sudo fail2ban-client set sshd unbanip IPرفع بن
nc -zv -w 2 host 22 / ssh -o PubkeyAuthentication=no hostآزمایش از بیرون