مرجع أوامر السيرفر
من التعلم إلى الاحترافية — Linux / Sudo / Docker / Git / Nginx / UFW
# عرض الملفات بشكل بسيط
ls
# عرض الملفات مع التفاصيل (الصلاحيات، الحجم، التاريخ)
ls -la
# عرض الملفات حسب الحجم (الأكبر أولاً)
ls -lhS
-la يعني: l = تفاصيل، a = إظهار الملفات المخفية.# الانتقال إلى مجلد معين
cd /var/www/html
# الرجوع خطوة واحدة للخلف
cd ..
# الانتقال إلى مجلد المنزل (Home)
cd ~
# الرجوع إلى المجلد السابق
cd -
# عرض المسار الحالي
pwd
# عرض المسار الحقيقي (يفك الروابط الرمزية)
pwd -P
# إنشاء مجلد واحد
mkdir my-project
# إنشاء مجلدات متداخلة (الأب ثم الابن)
mkdir -p projects/web/app
# إنشاء مجلد مع تحديد الصلاحيات
mkdir -m 755 public
# حذف ملف
rm file.txt
# حذف مجلد وكل محتوياته (بقوة)
rm -rf old-folder/
# حذف ملف مع التأكيد
rm -i important.txt
rm -rf / سيحذف كل شيء في السيرفر! لا تستخدمه أبداً!# نسخ ملف
cp source.txt destination.txt
# نسخ مجلد كامل
cp -r folder1/ folder2/
# نسخ مع الحفاظ على الصلاحيات والتواريخ
cp -a backup/ archive/
# إعادة تسمية ملف
mv oldname.txt newname.txt
# نقل ملف إلى مجلد آخر
mv file.txt /home/user/documents/
# نقل مجلد كامل
mv project/ /var/www/
# عرض محتوى ملف
cat config.txt
# عرض أول 10 أسطر
cat log.txt | head -n 10
# دمج ملفين في ملف واحد
cat file1.txt file2.txt > combined.txt
# إنشاء ملف فارغ
touch newfile.txt
# إنشاء عدة ملفات دفعة واحدة
touch file1.txt file2.txt file3.txt
# تحديث تاريخ الملف
touch -m existing.txt
# فتح ملف في nano
nano config.txt
# فتح ملف مع إظهار أرقام الأسطر
nano -l script.sh
# اختصارات nano:
# Ctrl+O = حفظ | Ctrl+X = خروج | Ctrl+K = قص سطر
Ctrl+X ثم Y للحفظ.# مسح الشاشة
clear
# اختصار أسرع
Ctrl + L
# إعطاء كل الصلاحيات للجميع
chmod 777 file.sh
# إعطاء صلاحيات للمالك فقط
chmod 755 script.sh
# إضافة صلاحية التنفيذ
chmod +x app
# تطبيق على مجلد ومحتوياته
chmod -R 755 /var/www
# تغيير المالك
chown user file.txt
# تغيير المالك والمجموعة
chown user:group file.txt
# تطبيق على مجلد ومحتوياته
chown -R www-data:www-data /var/www
# البحث عن كلمة في ملف
grep "error" log.txt
# البحث بدون حساسية لحالة الأحرف
grep -i "warning" *.log
# البحث مع إظهار رقم السطر
grep -n "failed" syslog
# البحث العكسي (كل ما عدا الكلمة)
grep -v "success" output.log
# البحث عن ملف بالاسم
find /home -name "*.txt"
# البحث عن ملفات أكبر من 100MB
find /var/log -size +100M
# البحث عن ملفات تم تعديلها قبل 7 أيام
find . -mtime +7
# البحث وحذف الملفات القديمة
find /tmp -name "*.tmp" -delete
# إنشاء أرشيف مضغوط
tar -czvf backup.tar.gz folder/
# فك ضغط أرشيف
tar -xzvf backup.tar.gz
# عرض محتوى الأرشيف بدون فكه
tar -tzvf archive.tar.gz
# إنشاء أرشيف بدون ضغط
tar -cvf files.tar file1 file2
# عرض مساحة القرص بشكل مقروء
df -h
# عرض نوع نظام الملفات
df -Th
# عرض مساحة مجلد معين
df -h /var
# حجم مجلد معين
du -sh /var/log
# حجم جميع المجلدات في المسار الحالي
du -sh * | sort -rh
# حجم الملفات الكبيرة فقط (>100MB)
du -ah /var | grep '[0-9]00M\|G\s'
# عرض العمليات الحالية
ps aux
# البحث عن عملية معينة
ps aux | grep "nginx"
# عرض شجرة العمليات
ps auxf
# مراقبة النظام (الأصلي)
top
# تثبيت htop (أفضل واجهة)
sudo apt install htop -y
# تشغيل htop
htop
# عرض العمليات حسب استهلاك الذاكرة
top -o %MEM
q=خروج | k=إيقاف عملية | M=ترتيب حسب RAM | P=ترتيب حسب CPU# تحميل ملف بـ wget
wget "https://example.com/file.zip"
# تحميل مع استئناف (Resume)
wget -c "https://example.com/bigfile.iso"
# تحميل بـ curl
curl -O "https://example.com/file.zip"
# إرسال طلب GET وعرض النتيجة
curl "https://api.example.com/data"
# إرسال طلب POST مع JSON
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' "https://api.example.com"
# تشغيل خدمة
sudo systemctl start nginx
# إيقاف خدمة
sudo systemctl stop nginx
# إعادة تشغيل خدمة
sudo systemctl restart nginx
# تفعيل الخدمة عند الإقلاع
sudo systemctl enable nginx
# عرض حالة الخدمة
sudo systemctl status nginx
# عرض جميع الخدمات النشطة
systemctl list-units --type=service --state=running
# عرض جميع السجلات
journalctl
# سجلات خدمة معينة
journalctl -u nginx
# السجلات الأخيرة (Live)
journalctl -f -u nginx
# سجلات اليوم فقط
journalctl --since "today"
# سجلات منذ آخر إقلاع
journalctl -b
# تنفيذ أمر كـ root
sudo apt update
# فتح shell كـ root
sudo -i
# تنفيذ أمر كمستخدم آخر
sudo -u www-data whoami
# تعديل ملف محمي
sudo nano /etc/nginx/nginx.conf
# عرض الأوامر المسموحة للمستخدم
sudo -l
sudo إلا عند الحاجة. تجنب sudo rm -rf!# الاتصال بسيرفر
ssh user@192.168.1.100
# الاتصال بمنفذ مخصص
ssh -p 2222 user@server.com
# الاتصال بمفتاح SSH
ssh -i ~/.ssh/id_rsa user@server.com
# نسخ مفتاح SSH إلى السيرفر
ssh-copy-id user@server.com
# تشغيل أمر على السيرفر البعيد
ssh user@server "ls -la /var/log"
# رفع ملف إلى السيرفر
scp localfile.txt user@server:/home/user/
# رفع مجلد كامل
scp -r localfolder/ user@server:/var/www/
# تحميل ملف من السيرفر
scp user@server:/var/log/syslog ./
# نقل بين سيرفرين
scp user1@server1:/file.txt user2@server2:/path/
# تعديل جدول المهام
crontab -e
# عرض المهام المجدولة
crontab -l
# مثال: نسخ احتياطي يومي الساعة 2 صباحاً
0 2 * * * /home/user/backup.sh
# مثال: تنظيف سجلات كل أسبوع
0 0 * * 0 /home/user/cleanup.sh
# مثال: فحص كل 5 دقائق
*/5 * * * * /home/user/check.sh
# عرض جميع الاتصالات
ss -tuln
# عرض الاتصالات المستمعة فقط
ss -lnt
# البحث عن منفذ معين
ss -tuln | grep ":80"
# عرض العمليات المرتبطة بالمنافذ
ss -tulnp
# تفعيل UFW
sudo ufw enable
# السماح بمنفذ SSH
sudo ufw allow 22/tcp
# السماح بمنفذ HTTP و HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# حظر منفذ
sudo ufw deny 3306
# عرض حالة الجدار
sudo ufw status verbose
# حذف قاعدة
sudo ufw delete allow 8080
# تحديث قائمة الحزم (Ubuntu/Debian)
sudo apt update
# ترقية جميع الحزم
sudo apt upgrade -y
# تثبيت حزمة
sudo apt install nginx -y
# حذف حزمة
sudo apt remove nginx
# تنظيف الحزم غير المستخدمة
sudo apt autoremove -y
# البحث عن حزمة
apt search mysql
# إنشاء مستخدم جديد
sudo useradd -m newuser
# تعيين كلمة مرور
sudo passwd newuser
# إضافة مستخدم لمجموعة sudo
sudo usermod -aG sudo newuser
# تغيير shell المستخدم
sudo usermod -s /bin/bash newuser
# حذف مستخدم مع مجلده
sudo userdel -r olduser
# عرض الحاويات الجارية
docker ps
# عرض جميع الحاويات (متوقفة وجارية)
docker ps -a
# تشغيل حاوية جديدة
docker run -d -p 80:80 --name mynginx nginx
# إيقاف حاوية
docker stop mynginx
# حذف حاوية
docker rm mynginx
# بناء صورة من Dockerfile
docker build -t myapp:latest .
# عرض الصور المحملة
docker images
# تنفيذ أمر داخل حاوية جارية
docker exec -it mynginx bash
# عرض سجلات حاوية
docker logs -f mynginx
# Docker Compose: تشغيل جميع الخدمات
docker-compose up -d
# Docker Compose: إيقاف جميع الخدمات
docker-compose down
# اختبار إعدادات Nginx
sudo nginx -t
# إعادة تحميل الإعدادات
sudo systemctl reload nginx
# عرض الإعدادات الافتراضية
cat /etc/nginx/nginx.conf
# إنشاء موقع جديد
sudo nano /etc/nginx/sites-available/mysite
# تفعيل الموقع (إنشاء رابط رمزي)
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
# إعداد Reverse Proxy
location /api/ {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
}
# استنساخ مستودع
git clone "https://github.com/user/repo.git"
# إضافة ملفات للمرحلة (Staging)
git add .
# حفظ التعديلات (Commit)
git commit -m "وصف التعديل"
# رفع التعديلات
git push origin main
# سحب آخر التعديلات
git pull origin main
# إنشاء فرع جديد
git checkout -b feature-branch
# دمج فرع مع الفرع الحالي
git merge feature-branch
# عرض حالة المستودع
git status
# عرض سجل التعديلات
git log --oneline --graph
# تثبيت Certbot
sudo apt install certbot python3-certbot-nginx -y
# إصدار شهادة جديدة
sudo certbot --nginx -d example.com -d www.example.com
# تجديد الشهادات يدوياً
sudo certbot renew
# اختبار التجديد التلقائي
sudo certbot renew --dry-run
# عرض الشهادات المثبتة
sudo certbot certificates
# نسخ محلي مع الحفاظ على الصلاحيات
rsync -avz /source/ /backup/
# نسخ إلى سيرفر بعيد
rsync -avz -e "ssh" /local/folder/ user@server:/remote/folder/
# نسخ مع حذف الملفات غير الموجودة في المصدر
rsync -avz --delete /source/ /backup/
# نسخ مع استبعاد ملفات معينة
rsync -avz --exclude "*.log" /source/ /backup/
# بدء جلسة جديدة
tmux new -s mysession
# فصل الجلسة (العمل يستمر في الخلفية)
Ctrl+B ثم D
# عرض الجلسات
tmux ls
# إعادة الاتصال بجلسة
tmux attach -t mysession
# إنشاء نافذة جديدة داخل الجلسة
Ctrl+B ثم C
# التنقل بين النوافذ
Ctrl+B ثم N (التالي) أو P (السابق)
# تقسيم الشاشة أفقياً
Ctrl+B ثم "
# عرض جميع الملفات المفتوحة
lsof
# البحث عن عملية تستخدم منفذ معين
lsof -i :80
# عرض الملفات المفتوحة لعملية معينة
lsof -p 1234
# عرض الملفات المفتوحة في مجلد
lsof +D /var/log
# عرض الملفات المحذوفة لكنها مفتوحة
lsof +L1
# تتبع برنامج
strace ./myapp
# تتبع عملية جارية
strace -p 1234
# تتبع فقط مكالمات الملفات
strace -e trace=file ./myapp
# حفظ التتبع في ملف
strace -o trace.log ./myapp