همهی دستورهای دورهی لینوکس از صفر در یک صفحه: ۳۵۵ دستور از ۳۲ درس، به ترتیب درسها. هر دستور در درس خودش با خروجی واقعی اجرا و توضیح داده شده است؛ روی اسم درس بزن تا توضیح کامل و مثالها را ببینی.
شروع کار
لینوکس چیست؟
| دستور | کاری که میکند |
|---|---|
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 $SHELL | shell پیشفرض |
cat /etc/shells | shell های معتبر سیستم |
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+X | nano: ذخیره و خروج |
Ctrl+W | nano: جستجو |
vim file | باز کردن با vim |
i / Esc | vim: ورود به Insert / برگشت به Normal |
:w :q :wq :q! | vim: ذخیره، خروج، هر دو، خروج بدون ذخیره |
/word n N | vim: جستجو و پرش بین نتایج |
dd yy p u | vim: حذف خط، کپی خط، چسباندن، واگرد |
:%s/old/new/g | vim: جایگزینی در کل فایل |
sudo cp f f.bak && sudo nano f | بکاپ و ویرایش فایل سیستمی |
لینکها: hard link و symbolic link
| دستور | کاری که میکند |
|---|---|
ln original hard | hard link |
ln -s target link | symbolic link |
ln -sfn releases/v2 current | سوییچ لینک پوشه (انتشار) |
ls -li | inode و لینکها |
stat -c "%i %h %n" f | inode و تعداد لینک |
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 |& cmd2 | stdout و 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 user | UID، 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 PID | SIGTERM (مؤدبانه) |
kill -9 PID | SIGKILL (اجباری، آخرین راه) |
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 / nproc | load 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 a | interface ها و 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.conf | DNS سیستم |
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 tcp | SSH فقط از یک 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-timers | timer های فعال |
لاگها و عیبیابی
| دستور | کاری که میکند |
|---|---|
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 sshd | IP های بنشده |
sudo fail2ban-client set sshd unbanip IP | رفع بن |
nc -zv -w 2 host 22 / ssh -o PubkeyAuthentication=no host | آزمایش از بیرون |
دستوری با این عبارت پیدا نشد.