| کانال گنو/لینوکس |
2.82K subscribers
28 photos
2 videos
2 files
44 links
⭕️ کانال گنو/لینوکس دولوپیکس

💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
🚀 سرور اختصاصی با تنوع منابع برای هر نوع نیاز 
پورت اختصاصی
آپلود رایگان
تخفیف پلکانی ترافیک
آپتایم 99.99%
24 ساعت تست رایگان
رائه IP مازاد 
پشتیبانی 24/7 
تحویل فوری 
ارائه سرویس Colocation 
بدون قطعی
پرداخت ماهیانه

تعداد محدود – برای استفاده از این تخفیف ویژه سریع اقدام کن!
برای اطلاعات بیشتر و سفارش، تماس بگیر:
🔺 02191555530
💻 خرید سرور اختصاصی
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🧩 تا حالا یه بار اشتباهی یه پوشه مهم رو پاک کردی و بعدش فهمیدی بکاپ درست‌حسابی نداشتی؟ توی لینوکس خیلی راحت می‌شه با یه اسکریپت کوچیک Bash و یه cron job، بکاپ‌گیری منظم و خودکار راه انداخت؛ بدون نیاز به ابزارهای سنگین.

ایده اینه: یه اسکریپت بنویسیم که از یه پوشه (مثلاً /home/USER/projects) هر روز یه آرشیو فشرده بسازه و توی یه پوشه امن (مثلاً /backup) نگه‌داره، با تاریخ روی اسم فایل. این دقیقاً همون چیزیه که هزار تا بار تو سرورهای واقعی استفاده می‌شه.

برای جزئیات بیشتر می‌شه مستند رسمی Bash و دستور tar رو دید:
GNU Bash Manual
GNU tar Manual

👇 یه اسکریپت ساده و کاربردی:

#!/usr/bin/env bash

set -euo pipefail

SOURCE_DIR="$HOME/projects"
BACKUP_DIR="/backup"
DATE="$(date +"%Y-%m-%d_%H-%M")"
ARCHIVE_NAME="projects_backup_${DATE}.tar.gz"

mkdir -p "${BACKUP_DIR}"

tar -czf "${BACKUP_DIR}/${ARCHIVE_NAME}" \
--exclude="*.log" \
--exclude="node_modules" \
-C "${SOURCE_DIR}" .

echo "Backup created at: ${BACKUP_DIR}/${ARCHIVE_NAME}"


چند نکته ریز ولی مهم:

🔹 set -euo pipefail کمک می‌کنه اسکریپت اگه جایی خطا شد نصفه‌نیمه ادامه نده.
🔹 --exclude ها باعث می‌شن چیزهای حجیم و بی‌مصرف (مثل node_modules) توی هر بکاپ تکرار نشن.
🔹 سوییچ -C توی tar می‌گه قبل از آرشیو کردن وارد اون دایرکتوری بشه؛ این‌طوری ساختار داخل آرشیو تمیزتره.

بعد از ذخیره اسکریپت مثلاً به نام backup_projects.sh و اجرایی کردنش:
chmod +x backup_projects.sh


می‌شه با cron کاری کرد هر شب اتوماتیک اجرا بشه:
crontab -e

و مثلاً این خط رو اضافه کرد:
0 2 * * * /home/USER/backup_projects.sh > /var/log/backup_projects.log 2>&1


این الگو بعداً خیلی راحت قابل گسترشه: می‌شه چند تا پوشه مختلف رو بکاپ گرفت، آرشیوها رو sync کرد روی یه سرور دیگه با rsync، یا حتی قبل از بکاپ گرفتن، تست‌های پروژه رو اجرا کرد.

امتحانش کن روی یه پوشه غیرحساس، لاگ رو ببین، و کم‌کم این اسکریپت رو تبدیل کن به بخشی از workflow روزمره‌ات 😊

🔖 #Linux #لینوکس #Linux #Bash #Backup #Shell #Cron #GNU

👤 Developix

💎 Channel: @DevelopixLinux
👍1
🌱 بعضی وقت‌ها فقط یک بار فراموش‌کردن Backup مساوی است با از دست دادن چند ماه کار. روی سرور یا حتی روی لپ‌تاپ خودت می‌شود با یک Bash Script خیلی ساده، Backup منظم و خودکار داشت.

اینجا ایده این است:

• یک دایرکتوری مهم (مثلاً /var/www یا پروژه‌های شخصی) را هر روز Backup بگیریم.
• فایل Backup را با نام دارای تاریخ ذخیره کنیم.
• با cron کاری کنیم اسکریپت خودش اجرا شود، بدون این‌که هر بار یادت باشد.

آموزش اصلی و مفصل‌ترش را می‌شود توی مستند رسمی GNU Bash و man pages دید:

• Bash Reference Manual: gnu.org/software/bash/manual/bash.html
• راهنمای crontab(5): روی سیستم خودت دستور man 5 crontab را بزن.

بیایید یک اسکریپت Backup خیلی قابل‌فهم بسازیم 👇

#!/usr/bin/env bash

SOURCE_DIR="/var/www"
BACKUP_DIR="/backup/www"
DATE="$(date +"%Y-%m-%d_%H-%M")"
BACKUP_FILE="${BACKUP_DIR}/www-backup-${DATE}.tar.gz"

mkdir -p "${BACKUP_DIR}"

tar -czf "${BACKUP_FILE}" "${SOURCE_DIR}" 2>"${BACKUP_DIR}/backup-error.log"

if [[ $? -eq 0 ]]; then
echo "[OK] Backup created: ${BACKUP_FILE}"
else
echo "[ERROR] Backup failed. Check log file." >&2
fi


این اسکریپت:

• با mkdir -p مطمئن می‌شود دایرکتوری Backup وجود دارد.
• با tar -czf یک فایل فشرده .tar.gz می‌سازد.
• خطاها را داخل backup-error.log می‌ریزد که بعداً راحت‌تر بشود دیباگ کرد.

نکته‌ی ریز ولی مهم: برای redirect کردن stderr از >&2 استفاده شده؛ این را Bash Manual دقیق توضیح داده و روی شل‌های سازگار با POSIX هم رفتار قابل پیش‌بینی دارد.

حالا کافی است اسکریپت را مثلاً توی /usr/local/sbin/backup-www.sh ذخیره کنی و اجرایی‌اش کنی:

sudo chmod +x /usr/local/sbin/backup-www.sh


بعد با crontab -e مثلاً این خط را اضافه کن تا هر روز ساعت ۳ صبح Backup بگیرد:

0 3 * * * /usr/local/sbin/backup-www.sh >> /var/log/backup-www.log 2>&1


لطفاً قبل از این‌که روی سرور اصلی اجرا کنی، یک بار روی یک دایرکتوری تست امتحانش کن و مطمئن شو فضای دیسک کافی داری. Backup بدون تست Restore فقط یک توهم امنیت است 🙂

اگر مفید بود، روی سیستم خودت پیاده‌اش کن و با چند تغییر کوچک برای پروژه‌ها و دایرکتوری‌های خودت شخصی‌سازی‌اش کن.

🔖 #Linux #لینوکس #Linux #Bash #Backup #Cron #Shell #Sysadmin

👤 Developix

💎 Channel: @DevelopixLinux
👍2
یه نیاز خیلی معمول: می‌خوای توی سرور یا سیستم خودت از یه دایرکتوری مهم (مثلاً پروژه‌هات یا تنظیمات) به‌طور منظم Backup بگیری، بدون این‌که هر بار یادت باشه دستی این کار رو بکنی.

اینجا از چیزهایی استفاده می‌کنیم که روی تقریباً همه‌ٔ توزیع‌های GNU/Linux هست: Bash، دستور tar و سرویس cron. همه‌چی ساده، قابل فهم و مستند توی man pages و مستندات رسمی.

🔹 ایده‌ٔ کار

یک اسکریپت Bash می‌نویسیم که:

- از یک دایرکتوری مشخص، آرشیو فشرده می‌سازه
- توی اسم فایل Backup تاریخ می‌ذاره
- Backupهای قدیمی‌تر از n روز رو پاک می‌کنه
- بعد هم با cron زمان‌بندیش می‌کنیم

این مدل اسکریپت رو راحت می‌شه بعداً برای پوشه‌های مختلف، یا حتی انتقال روی remote با ssh، گسترش داد.

📦 نمونه اسکریپت Backup

مثال زیر از /home/user/projects بکاپ می‌گیره و توی /backup/local ذخیره می‌کنه. مسیرها رو طبق سیستم خودت عوض کن.

#!/usr/bin/env bash

set -euo pipefail

SRC_DIR="/home/user/projects"
DEST_DIR="/backup/local"
RETENTION_DAYS=7

DATE="$(date +"%Y-%m-%d_%H-%M-%S")"
ARCHIVE_NAME="projects-${DATE}.tar.gz"

mkdir -p "${DEST_DIR}"

# ساخت آرشیو فشرده
tar -czf "${DEST_DIR}/${ARCHIVE_NAME}" -C "${SRC_DIR}" .

# پاک‌کردن بکاپ‌های قدیمی
find "${DEST_DIR}" -type f -name "projects-*.tar.gz" -mtime +"${RETENTION_DAYS}" -delete


چند نکتهٔ مهم:

- از set -euo pipefail استفاده شده تا اسکریپت روی خطا متوقف بشه؛ این توی اسکریپت‌های سیستمی خیلی کمک می‌کنه.
- توی دستور tar از -C استفاده شده تا ساختار داخل آرشیو تمیز و بدون مسیرهای عجیب باشه.
- دستور find با -mtime بر اساس سن فایل‌ها (به روز) پاک‌سازی می‌کنه.
مستندات همهٔ این‌ها توی man pages هست:

man tar
man find
man 5 crontab


زمان‌بندی با cron

بعد از ذخیرهٔ اسکریپت مثلاً توی
/usr/local/bin/backup-projects.sh
و قابل‌اجرا کردنش:

chmod +x /usr/local/bin/backup-projects.sh


ورود به ویرایشگر cron کاربر:

crontab -e


و اضافه‌کردن یک خط برای اجرای Backup هر روز ساعت ۳ صبح:

0 3 * * * /usr/local/bin/backup-projects.sh >> /var/log/backup-projects.log 2>&1


اینجوری هم اسکریپت هر شب خودکار اجرا می‌شه، هم لاگش رو داری برای وقتی چیزی خراب شد.

این مدل Backup ساده برای خیلی سناریوهای روزمره (سرور خانگی، VPS کوچک، لپ‌تاپ کاری) کاملاً جواب می‌ده و بعداً می‌شه با ابزارهایی مثل rsync یا ssh راحت‌ترش کرد.

امتحانش روی یک دایرکتوری تست کم‌حجم، و نگاه‌کردن به خروجی tar و لاگ cron، بهترین راهه که قبل از استفادهٔ جدی مطمئن بشی همه‌چی طبق انتظار کار می‌کنه. 😉

🔖 #Linux #لینوکس #Linux #Bash #Backup #cron #Shell #Sysadmin

👤 Developix

💎 Channel: @DevelopixLinux
👍41
🚀 سرور اختصاصی با تنوع منابع برای هر نوع نیاز 
پورت اختصاصی
آپلود رایگان
تخفیف پلکانی ترافیک
آپتایم 99.99%
24 ساعت تست رایگان
ارائه IP مازاد 
پشتیبانی 24/7 
تحویل فوری 
ارائه سرویس Colocation 
بدون قطعی
پرداخت ماهیانه

تعداد محدود – برای استفاده از این تخفیف ویژه سریع اقدام کن!
برای اطلاعات بیشتر و سفارش، تماس بگیر:
🔺 02191555530
💻 خرید سرور اختصاصی
Please open Telegram to view this post
VIEW IN TELEGRAM
1
خیلی وقت‌ها روی سرور یا سیستم شخصی، چند تا فولدر مهم داریم (مثلاً ~/projects یا تنظیمات dotfiles) و همیشه می‌گیم «بعداً براش Backup می‌گیرم» و بعد… دیر می‌شه 🙂

امروز یه سناریوی کاملاً واقعی رو می‌گیریم: ساختن یک Backup روزانه از یه دایرکتوری مهم روی GNU/Linux با استفاده از Bash و ابزارهای استاندارد مثل tar و cron.
این دقیقاً همون چیزیه که توی GNU tar manual و راهنمای crontab(5) توضیح داده شده، فقط اینجا جمع‌وجور و عملی‌ترش می‌کنیم 😎

ایدهٔ اصلی چیه؟

۱️⃣ با tar از یک دایرکتوری، آرشیو فشرده می‌گیریم.

۲️⃣ اسم فایل Backup رو طوری می‌ذاریم که تاریخ توش باشه (برای نسخه‌های مختلف).

۳️⃣ با cron کاری می‌کنیم هر روز خودش اجرا بشه، بدون دخالت دست.

یک اسکریپت Bash ساده:

#!/usr/bin/env bash

SOURCE_DIR="$HOME/projects"
BACKUP_DIR="$HOME/backups"
DATE=$(date +"%Y-%m-%d_%H-%M")

mkdir -p "$BACKUP_DIR"

ARCHIVE_NAME="projects_backup_${DATE}.tar.gz"

# ایجاد آرشیو فشرده با tar
/usr/bin/tar -czf "${BACKUP_DIR}/${ARCHIVE_NAME}" -C "$HOME" projects

# حذف Backupهای قدیمی‌تر از ۳۰ روز
/usr/bin/find "$BACKUP_DIR" -type f -name 'projects_backup_*.tar.gz' -mtime +30 -delete


این اسکریپت:

• فولدر ‎$HOME/projects‎ رو توی ‎$HOME/backups‎ به صورت .tar.gz ذخیره می‌کنه.

• توی اسم فایل تاریخ و ساعت می‌ذاره تا نسخه‌ها قاطی نشن.

• Backupهای قدیمی‌تر از ۳۰ روز رو حذف می‌کنه که هارد پر نشه.

مسیرهای مطلق برای /usr/bin/tar و /usr/bin/find از توصیه‌های مرسوم sysadminهاست، مخصوصاً وقتی اسکریپت قراره از داخل cron اجرا بشه؛ چون PATH همیشه مثل محیط interactive نیست.

خودکار کردن با cron

طبق man crontab، می‌تونیم این اسکریپت رو هر روز ساعت ۳ صبح اجرا کنیم. بعد از این‌که اسکریپت رو مثلاً به اسم backup-projects.sh ذخیره و executable کردیم:

chmod +x $HOME/bin/backup-projects.sh
crontab -e


و این خط رو به crontab اضافه می‌کنیم:

0 3 * * * /home/USERNAME/bin/backup-projects.sh > /home/USERNAME/backup.log 2>&1


فقط USERNAME رو با یوزر خودت عوض کن. خروجی هم توی backup.log ذخیره می‌شه که اگر مشکلی پیش اومد، راحت لاگ رو چک کنی.

یه نکتهٔ مهم: حتماً یک بار دستی اسکریپت رو اجرا کن و آرشیو رو باز کن تا مطمئن بشی دقیقاً همون چیزی رو که می‌خوای Backup می‌گیری.

این مدل Backup ساده، برای لپ‌تاپ شخصی، سرور توسعه، یا حتی Raspberry Pi عالی جواب می‌ده. نه ابزار پیچیده لازم داره، نه تنظیمات عجیب و غریب.

امتحانش کن، کمی برای نیاز خودت شخصی‌سازیش کن، و اگر به‌دردت خورد برای بقیهٔ لینوکسی‌ها هم بفرست 🌱

🔖 #Linux #لینوکس #GNU/Linux #Bash #Backup #cron #tar #Shell_Scripting #Sysadmin

👤 Developix

💎 Channel: @DevelopixLinux
5🔥1
Forwarded from ابر ویراک
ویراک کلود | تجربه‌ی ابری بدون محدودیت ☁️🚀

🎁 ۲۰٪ شارژ هدیه روی اولین واریزی

مزیت‌هایی که واقعاً فرق می‌سازن:
⚡️ پهنای باند 980 مگ
🌐با IP مازاد
⏱️ راه‌اندازی فوری
💳 پرداخت ساعتی
🛡 پشتیبانی ۲۴/۷

💬 هر سوالی داشتی، تیم ما کنارتـه
مناسب استارتاپ‌ها، تیم‌های فنی، تا سازمان‌های بزرگ

همین الان شروع کن و با حداکثر منابع، سریع‌تر رشد کن 👇🏻

📞 تماس سریع: 02191555530
🔗 https://virakcloud.com
2
بکاپ داشتن تا وقتی لازم نشه به چشم نمیاد 😅 ولی یه بار دیسک مشکل پیدا کنه، تازه می‌فهمیم rsync و cron چه نعمتین.

امروز یه سناریوی کاملاً عملی رو می‌بینیم: تنظیم بکاپ خودکار از پوشه‌ی /home روی یه دیسک خارجی، فقط با ابزارهای استاندارد لینوکس (بدون هیچ نرم‌افزار فانتزی اضافی).

منبع ایده و رفرنس:
Arch Wiki - Rsync
GNU Cron

💡 ایده‌ی کلی
یه اسکریپت Bash کوچیک می‌نویسیم که با rsync فقط تغییرات رو کپی کنه (incremental backup) و با cron تنظیمش می‌کنیم هر شب خودش اجرا بشه.

🔧 نصب و تست سریع rsync
روی اکثر distroها پیش‌فرض نصبه. اگه نبود:

Debian/Ubuntu:
sudo apt install rsync


Fedora:
sudo dnf install rsync


یه تست ساده:
rsync -avh /etc/ /tmp/etc-backup-test


📝 اسکریپت بکاپ خودکار
فرض کنیم دیسک خارجی‌مون روی /mnt/backup مونت شده و می‌خوایم از /home بکاپ بگیریم.

#!/usr/bin/env bash

SOURCE="/home/"
DEST="/mnt/backup/home-backup/"
LOGFILE="/var/log/home-backup.log"

# اگه مقصد نبود بساز
mkdir -p "$DEST"

# اجرای rsync با چند گزینه‌ی مهم
rsync -avh \
--delete \
--exclude=".cache/" \
"$SOURCE" "$DEST" >> "$LOGFILE" 2>&1


چند نکته‌ی مهم:

-a : پرمیژن‌ها، owner، زمان‌ها و… رو حفظ می‌کنه (archive mode).
-v و -h : خروجی خوانا و دوست‌داشتنی‌تر.
--delete : فایل‌هایی که از /home حذف شدن، از بکاپ هم حذف می‌کنه؛ بکاپ رو sync نگه می‌داره. اگه می‌ترسه چیزی پاک شه، اول بدون این گزینه تست کن.
--exclude=".cache/" : کش‌های بی‌مصرف رو نبره توی بکاپ.

اسکریپت رو مثلاً ذخیره کن توی:
/usr/local/bin/home-backup.sh

و اجرایی‌اش کن:
sudo chmod +x /usr/local/bin/home-backup.sh


یه بار دستی اجراش کن که مطمئن شی درست کار می‌کنه:
sudo /usr/local/bin/home-backup.sh


زمان‌بندی با cron
برای root (چون معمولاً نیاز به دسترسی به همه‌ی homeها داریم):
sudo crontab -e

و این خط رو اضافه کن تا هر روز ۳ صبح اجرا شه:
0 3 * * * /usr/local/bin/home-backup.sh


توضیح سریع فرمت:
دقیقه ساعت روزِماه ماه روزِهفته

⚠️ چند تله‌ی معمول
• حتماً مطمئن شو دیسک روی /mnt/backup مونت شده؛ وگرنه ممکنه rsync توی خود دیسک root پوشه بسازه 😐
• قبل از اضافه‌کردن --delete همیشه یه بار بدون اون و با --dry-run تست کن:
rsync -avh --dry-run SOURCE DEST


نتیجه
با چند خط اسکریپت و یه cron job ساده، هر شب یه بکاپ مرتب از home داری که فقط تغییرات رو sync می‌کنه و هم سریع‌تره هم کم‌حجم‌تر.

امتحانش کن روی یه پوشه‌ی تست، لاگ رو ببین، بعد کم‌کم روی دیتای اصلی‌ات پیاده کن و تجربه‌ات رو با بقیه به اشتراک بذار 🌱

🔖 #Linux #لینوکس #Linux #Backup #rsync #cron #Bash #Sysadmin #Automation #GNU/Linux

👤 Developix

💎 Channel: @DevelopixLinux
8👍1
🧠 مدیریت حرفه‌ای تاریخچه دستورات با fc در Bash

گاهی یک دستور طولانی را اشتباه می‌زنی و فقط می‌خواهی همان را سریع اصلاح و دوباره اجرا کنی. به‌جای پیمایش با کلید ↑ تا مرگ 😄، از builtin قوی Bash یعنی fc استفاده کن.

ایده: fc یک یا چند دستور آخر را در editor دلخواهت باز می‌کند، اصلاح می‌کنی و بعد خودش اجرا می‌کند.

مثال ساده:
echo "sume data" > file.txt
# اوه، تایپو! باید "some" باشد
fc

این دستور، آخرین کامند را در editor پیش‌فرض (مثلاً vim یا nano) باز می‌کند، درست می‌کنی، ذخیره می‌کنی و بعد Bash نسخه اصلاح‌شده را اجرا می‌کند. 🚀

📌 چند کاربرد مفید:
# ویرایش ۳ دستور آخر
fc -3

# فقط نمایش بدون اجرا (برای چک کردن)
fc -nl -3


🔧 نکته: با تنظیم متغیر محیطی EDITOR می‌توانی editor موردعلاقه‌ات را انتخاب کنی:
export EDITOR=nano


برای جزئیات بیشتر:
مستندات رسمی Bash - بخش Builtins

امتحانش روی workflow روزمره خیلی حس سرعت و تمیزی بیشتری می‌دهد 🙂

🔖 #Linux #لینوکس #Linux #Bash #Shell #History #fc #CLI

👤 Developix

💎 Channel: @DevelopixLinux
👍4
🎯 سریع‌ترین راه پیدا کردن پوشه‌های سنگین با du + sort

وقتی دیسک نزدیک پر شدن است، گشتن دستی دنبال پوشه‌های چاق و چله واقعاً وقت‌گیر می‌شود. یک ترکیب ساده‌ی du و sort خیلی سریع نشان می‌دهد فضا دقیقاً کجا خورده شده است. 💽

این یک الگوی ساده و قابل‌حفظ است که روی اکثر توزیع‌ها کار می‌کند:

du -h --max-depth=1 /path | sort -h


🔍 توضیح کوتاه:
- du -h حجم‌ها را human-readable مثل 10M، 2G نشان می‌دهد.
- --max-depth=1 فقط زیرپوشه‌های سطح اول را لیست می‌کند (خروجی شلوغ نمی‌شود).
- sort -h بر اساس حجم (با K/M/G) مرتب می‌کند.

مثلاً برای بررسی /home:
du -h --max-depth=1 /home | sort -h


📌 نکات:
- روی مسیرهای سیستمی حساس بهتر است با sudo اجرا شود تا همه چیز را ببیند.
- اگر خروجی خیلی زیاد بود، می‌توان فقط ۲۰ مورد آخر را دید:
du -h --max-depth=1 / | sort -h | tail -n 20


👣 دفعه بعد که دیسک پر شد، قبل از panic همین الگو را اجرا کن و دقیقاً همان پوشه‌ی مشکل‌ساز را هدف بگیر.

📖 مرجع: man7.org/linux/man-pages/man1/du.1.html

🔖 #Linux #لینوکس #Linux #terminal #du #disk_usage #shell

👤 Developix

💎 Channel: @DevelopixLinux
👍2👎1
خیلی وقت‌ها یه سرویس روی سیستم بالا نمیاد یا کند می‌شه، و اولین جایی که باید سر بزنی لاگ‌هاست. روی سیستم‌های مدرن که از systemd استفاده می‌کنن، ابزار اصلی دیدن لاگ‌ها همون journalctl هست.

اینجا یه مرور سریع و کاربردی روی journalctl داریم؛ هم برای دیباگ، هم برای مانیتور سبک‌وزن لاگ‌ها.

منبع اصلی داک:
freedesktop.org/software/systemd/man/journalctl.html

🧩 ایده کلی
systemd-journald لاگ‌های کرنل، serviceها و حتی بعضی برنامه‌ها رو جمع می‌کنه و journalctl راه خواندن و فیلتر کردن این لاگ‌هاست. مزیتش اینه که همه‌چی یه‌جا جمعه و می‌تونی بر اساس unit، زمان، سطح لاگ و ... فیلتر بزنی.

🔍 دیدن لاگ یک سرویس مشخص
فرض کن سرویس nginx.service قاطی کرده. به‌جای گشتن تو چند تا فایل لاگ، مستقیم این رو بزن:

sudo journalctl -u nginx.service -e


سوییچ -u یعنی فیلتر روی همون systemd unit و -e می‌بردت آخر لاگ، شبیه tail.

📡 مانیتور لحظه‌ای لاگ (مثل tail -f)
وقتی می‌خوای یه کانفیگ جدید رو تست کنی، این خیلی می‌چسبه:

sudo journalctl -u nginx.service -f


-f یعنی هر چیزی جدیدی که لاگ شد رو زنده نشون بده. عالی برای وقتی که nginx -t می‌زنی یا داری reload می‌کنی.

⏱️ فیلتر زمانی لاگ‌ها
برای وقتی که می‌دونی مشکل از چه ساعتی شروع شده. مثلاً لاگ‌های امروز از ساعت 10 صبح:

sudo journalctl -u nginx.service --since "today 10:00"


یا مثلاً لاگ‌های ۲۴ ساعت اخیر کل سیستم:

sudo journalctl --since "-24 hours"


⚙️ یک نمونه ورک‌فلو واقعی دیباگ
سناریو: nginx بعد از تغییر کانفیگ بالا نمیاد.

1️⃣ وضعیت سرویس:
systemctl status nginx.service


2️⃣ دیدن لاگ‌های آخر برای خطا:
sudo journalctl -u nginx.service -e -n 50

-n 50 فقط ۵۰ خط آخر رو میاره که هم سریع‌تره هم خواناتر.

3️⃣ اگر Error مربوط به syntax بود، چک کانفیگ:
sudo nginx -t


معمولاً ترکیب systemctl status + journalctl همون چیزیه که واقعاً تو کار روزمره استفاده می‌شه.

🧹 مراقبت از حجم لاگ‌ها
روی بعضی سیستم‌ها، journal می‌تونه فضا ببلعه اگر تنظیمش نکرده باشی. یه نگاه سریع به وضعیت:

sudo journalctl --disk-usage


و اگر لازم شد تمیزکاری کنترل‌شده:

sudo journalctl --vacuum-time=7d


این دستور لاگ‌های قدیمی‌تر از ۷ روز رو پاک می‌کنه. حتماً قبلش --disk-usage رو ببین.

🌱 اگر تا حالا بیشتر با /var/log سر و کار داشتی، یه کم با journalctl بازی کن؛ چند تا سرویس روی سیستم خودت رو باهاش دیباگ کن. بعد از یکی‌دو بار استفاده، عملاً می‌شه ابزار روزمره‌ات برای فهمیدن "دقیقاً چی شد که خراب شد؟" 😉

🔖 #Linux #لینوکس #Linux #GNU/Linux #systemd #journalctl #logging #bash #sysadmin

👤 Developix

💎 Channel: @DevelopixLinux
3👍3
اسکریپت‌نویسی Bash یکی از مفیدترین مهارت‌ها برای هر کاربر گنو/لینوکس است. با چند خط کد می‌شود کارهایی مثل بکاپ، تمیز کردن لاگ‌ها، یا همگام‌سازی پوشه‌ها را کاملاً خودکار کرد. این پست یک مثال واقعی و قابل‌استفاده از یک اسکریپت بکاپ خانگی می‌دهد که می‌شود روی هر distro اجراش کرد. 🙂

ایده ساده است: چند پوشه مهم (مثلاً ‎~/Documents و ‎~/Projects) را با `tar` فشرده کنیم، اسم فایل را بر اساس تاریخ بگذاریم، و در یک مسیر امن ذخیره کنیم. بعداً می‌توان این اسکریپت را در `cron` یا `systemd timer` گذاشت تا خودکار اجرا شود.

این مثال با الهام از مستندات رسمی Bash و man pageهای `tar(1)` و `date(1)` نوشته شده (روی هر سیستم می‌شود با `man tar` و `help test` جزئیات بیشتر را دید).

اسکریپت نمونه:
#!/usr/bin/env bash

set -euo pipefail

SOURCE_DIRS=("$HOME/Documents" "$HOME/Projects")
BACKUP_DIR="$HOME/backups"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
BACKUP_FILE="$BACKUP_DIR/home-backup-$DATE.tar.gz"

mkdir -p "$BACKUP_DIR"

for dir in "${SOURCE_DIRS[@]}"; do
if [[ ! -d "$dir" ]]; then
echo "هشدار: پوشه $dir پیدا نشد، رد می‌شود." >&2
fi
done

# ایجاد آرشیو فشرده
tar -czpf "$BACKUP_FILE" \
--exclude="$HOME/.cache" \
"${SOURCE_DIRS[@]}"

echo "بکاپ ساخته شد: $BACKUP_FILE"


چند نکته مهم از دل این اسکریپت:

• ‎`set -euo pipefail` کمک می‌کند اسکریپت در صورت خطا فوراً متوقف شود و از باگ‌های عجیب جلوگیری می‌کند.

• از آرایه Bash برای لیست پوشه‌ها استفاده شده؛ اضافه کردن مسیر جدید فقط با ویرایش `SOURCE_DIRS` انجام می‌شود.

• با `--exclude` جلوی بکاپ شدن چیزهای بی‌مصرف (مثل ‎~/.cache) گرفته می‌شود؛ این کار فضا و زمان را به‌طرز محسوسی کم می‌کند.

برای استفاده عملی، فایل را مثلاً با نام `backup-home.sh` در ‎`~/bin` ذخیره و executable کنید:
chmod +x ~/bin/backup-home.sh


بعد می‌شود با اضافه کردن یک entry ساده در `crontab`، این بکاپ را مثلاً هر شب اجرا کرد (‎`crontab -e` را ببینید، طبق مستندات `man 5 crontab`).

این اسکریپت پایه خوبی است برای ساختن یک سیستم بکاپ جدی‌تر: می‌شود log اضافه کرد، روی remote server با `ssh` کپی کرد، یا rotation برای پاک کردن بکاپ‌های خیلی قدیمی گذاشت.

یک بار روی یک پوشه کوچک تست، بعد کم‌کم روی داده‌های مهم پیاده‌سازی شود و نسخه‌های مختلف امتحان شود. اگر به‌دردتان خورد، اسکریپت خودتان را با بقیه لینوکسی‌ها به اشتراک بگذارید. 🚀

🔖 #Linux #لینوکس #Linux #Bash #Shell #Backup #GNU/Linux #tar #cron

👤 Developix

💎 Channel: @DevelopixLinux
👍5
اگه همیشه چند تا ترمینال باز داری، بین ssh سرورها جابه‌جا می‌شی و هی پنجره‌ها گم می‌شن، tmux دقیقا همون چیزیه که زندگیت رو روی ترمینال راحت‌تر می‌کنه 😄

اینجا یه معرفی عملی و سریع از tmux بر اساس راهنمای رسمی:
https://github.com/tmux/tmux/wiki

🧱 tmux دقیقا چیه؟

tmux یه terminal multiplexerـه؛ یعنی توی یه ترمینال می‌تونی چند تا "پنجره" و "پن" (split) داشته باشی، سشن‌هات رو نگه داری، از ssh قطع بشی ولی پروسه‌هات زنده بمونن.

مثلا یه سشن برای لاگ‌ها، یکی برای ویرایش config و یکی برای اجرای scriptها؛ همه زیر یه اتصال ssh که اگه قطع هم بشه، چیزی نمی‌پره 👌

🛠 نصب سریع روی توزیع‌های مختلف

روی Debian/Ubuntu:
sudo apt update && sudo apt install tmux


روی Fedora:
sudo dnf install tmux


روی Arch:
sudo pacman -S tmux


بعد از نصب، فقط بزن:
tmux

و وارد اولین سشن خودت می‌شی.

📌 شروع کار: پنجره و پن‌ (split)

کلید اصلی tmux اینه:

Ctrl+b = prefix

یعنی هر کاری می‌خوای بکنی، اول Ctrl+b، بعد دکمه‌ی مورد نظر.

چندتا چیز کاربردی روزمره:

• ساخت پن جدید افقی:
Ctrl+b بعد "

• ساخت پن عمودی:
Ctrl+b بعد %

• جابه‌جایی بین پن‌ها با جهت‌ها:
Ctrl+b + کلیدهای جهت (← ↑ → ↓)

• ساخت پنجره (window) جدید:
Ctrl+b بعد c

• جابه‌جایی بین پنجره‌ها:
Ctrl+b بعد n (بعدی) یا p (قبلی)

یه مثال واقعی: مانیتور لاگ + ویرایش کانفیگ

سناریو کلاسیک sysadmin:

۱) با ssh وصل شو به سرور.
۲) tmux رو اجرا کن:
tmux

۳) پن رو عمودی split کن (بالا لاگ، پایین ویرایش):

بالا:
journalctl -u nginx -f


پایین: فایل کانفیگ nginx رو ویرایش کن:
sudo vim /etc/nginx/nginx.conf


همزمان لاگ‌ها رو live می‌بینی و config رو تغییر می‌دی، بدون نیاز به چند تا ترمینال جدا.

🔁 جدا شدن و دوباره وصل شدن به سشن

قلب ماجرا این‌جاست. وسط کار اگه نت قطع بشه یا ssh ببنده، tmux سشن‌ت زنده می‌مونه.

• جدا شدن (detach):

Ctrl+b بعد d

حالا می‌تونی ssh رو ببندی، بعدا که برگشتی:
tmux attach

همون جایی میای که کار رو رها کرده بودی، لاگ، vim، هرچی.

🧩 یه config ساده و مفید

اگه دوست داری کلید prefix رو مثل screen یا راحت‌تر کنی، مثلا Ctrl+a، یه فایل ~/.tmux.conf بساز:

set -g prefix C-a
unbind C-b
bind C-a send-prefix


بعد tmux رو از داخلش با این دستور reload کن:

tmux source-file ~/.tmux.conf


از اینجا به بعد، prefix می‌شه Ctrl+a.

چند نکته ریز ولی مهم

• اگه چند تا سشن داری، لیستشون:
tmux ls


• attach به یه سشن مشخص:
tmux attach -t mysession


• ساخت سشن با اسم مشخص، مخصوصا برای هر پروژه:
tmux new -s myproject


🌱 جمع‌بندی

اگه زیاد با ssh، لاگ‌ها، build طولانی یا کارهای شبانه‌روزی روی سرور سروکله می‌زنی، tmux یکی از اون ابزارهایی‌ه که بعد از یه مدت بدونش واقعا سخته کار کردن.

یه سشن ساده بساز، دو سه تا split试 کن و کم‌کم بذار عضوی از workflow روزمره‌ات بشه. بعدا هر ترفند جدیدی یاد گرفتی، به بقیه هم منتقل کن 🙌

🔖 #Linux #لینوکس #Linux #tmux #Terminal #Shell #Sysadmin #GNU/Linux

👤 Developix

💎 Channel: @DevelopixLinux
🔥5
💠 نسخه جدید کرنل لینوکس (Linux) منتشر شده است

🔸 ارتقا از نسخه 7.0.12 به 7.1.0

🔹 لیست تغییرات این نسخه:
- اصلاح باگ‌های مهم KVM روی معماری arm64
- بهبود سازگاری و انطباق کنترلرهای USB SuperSpeed
- رفع مشکل دستگاه‌های شبح USB روی پورت‌های دوحالته Tegra
- پایداری بهتر لینک QSGMII در PHYهای LAN8814
- افزایش ایمنی دسترسی‌های PMBus/GPIO در درایور ADM1266
- بهبودهای ریز متعدد درایورها و زیرسیستم‌ها و غیره

🔖 #linux, #linux, #release

💎 @DevelopixLinux
6🔥2👍1
Forwarded from Developix Support
This media is not supported in your browser
VIEW IN TELEGRAM
🏆آفرهای جام جهانی ۲۰۲۶ هاست‌ایران فعال شد!

با کمپین «ترکیب برنده سایتت»، زیرساخت سایتت رو برای روزهای پرترافیک آماده کن:

🔥 ۲۵٪ تخفیف روی پلن‌های ۳ ماهه هاست اشتراکی ایران
۵۰٪ تخفیف روی پلن‌های یک‌ماهه سرویس ابری در دیتاسنترهای تهران، مشهد و اهواز

🧠 مشاوره رایگان زیرساخت توسط کارشناسان هاست‌ایران
فرصت استفاده از تخفیف‌ها و ثبت فرم مشاوره محدود است.

📌 برای کپی کدهای تخفیف و ثبت‌نام در فرم مشاوره، روی لینک زیر کلیک کنید:

📌صفحه فرم مشاوره
📌تلگرام هاست‌ایران
📌بله هاست‌ایران


#هاست_ایران #سرور_ابری_هاست_ایران #هاست_اشتراکی #دیتاسنتر #مشاوره_زیرساخت #جام_جهانی2026
1
خیلی وقت‌ها توی گنو/لینوکس لازم می‌شه یک کار تکراری رو روی چند تا فایل یا چند تا مقدار انجام بدیم؛ مثلا چند بار یک دستور رو با ورودی‌های مختلف اجرا کنیم. این‌جا یک ترفند خیلی ساده با حلقهٔ for و here-string توی Bash کمک بزرگی می‌کنه. 😎

فرض کن لازم باشه روی سه تا سرور یا سه تا فایل، یک دستور مشابه اجرا بشه؛ به‌جای کپی‌پیست پشت‌سرهم:

for name in app1 app2 app3; do
echo "Building $name ..."
make "$name"
done


یک الگوی خیلی کاربردی دیگه برای دستورهایی مثل ping یا ssh:

while read host; do
echo "Checking $host ..."
ping -c 1 "$host" && echo OK
done <<EOF
server1
server2
server3
EOF


این مدل حلقه‌ها:
• خطاهای تایپی تکراری رو کم می‌کنن.
• اسکریپت‌هات رو قابل‌تغییر و قابل‌توسعه‌تر می‌کنن.

امتحان روی یک کار کوچیک روزمره، خیلی زود عادت می‌شه و سرعت کار با ترمینال رو بالا می‌بره. 🚀

منبع: Bash Manual – Loops

🔖 #Linux #لینوکس #Linux #Bash #Shell #Loop #CLI #Scripting

👤 Developix

💎 Channel: @DevelopixLinux
🔥43
🧲 فیلتر کردن خروجی‌های شلوغ با grep و less

خیلی وقت‌ها خروجی یه دستور توی ترمینال انقدر زیاده که پیدا کردن چیز موردنظر عذاب می‌شه. یه ترکیب ساده با grep و less هم سرعت می‌ده هم چشم رو خسته نمی‌کنه 😄

ایده: خروجی رو هم‌زمان هم فیلتر کن، هم قابل اسکرول نگه دار.

مثال کاربردی برای دیدن فقط خط‌های مربوط به error توی dmesg:
dmesg | grep -i "error" | less -R


یا دیباگ سریع لاگ nginx:
sudo tail -f /var/log/nginx/error.log | grep --line-buffered 500


🔍 نکات مهم:
- -i توی grep یعنی case-insensitive بودن.
- --line-buffered باعث می‌شه خروجی استریم مثل tail -f با تاخیر نیاد.
- less -R رنگ‌ها (ANSI colors) رو حفظ می‌کنه.

این ترکیب توی لاگ‌خوانی، دیباگ سریع و مانیتورینگ لحظه‌ای خیلی کمک می‌کنه. دفعهٔ بعد که با یه خروجی چندصد‌خطی روبه‌رو شدی، فقط آروم پایپ‌ها رو بچین و تمرکز رو بذار روی همون چیزی که مهمه 🧪

🔗 مرجع: man grep

🔖 #Linux #لینوکس #linux #terminal #grep #less #logs #debugging #shell

👤 Developix

💎 Channel: @DevelopixLinux
👍8
💠 نسخه جدید توزیع دبیان (Debian) منتشر شده است

🔸 ارتقا از نسخه 13.5.0 به 13.6.0

🔖 #debian, #linux, #release

💎 @DevelopixLinux
7🔥2👍1
Forwarded from Developix Support
با Migration Boost هاست‌ایران، برای مهاجرت به سرور ابری دوباره هزینه ترافیک نده! 🚀

با خرید اولین سرور ابری غیرساعتی از **هاست‌ایران**، بسته ترافیک هدیه مهاجرت به‌صورت خودکار برای سرویس شما فعال می‌شود:

حداقل ۱۰۰ گیگابایت ترافیک هدیه مهاجرت
افزایش حجم هدیه متناسب با ظرفیت دیسک اولیه
ترافیک آپلود رایگان
بدون محدودیت زمانی

سرور ابری هاست‌ایران را راه‌اندازی کنید و بکاپ‌ها، فایل‌ها و پایگاه داده خود را بدون دغدغه هزینه‌های پنهان ترافیک منتقل کنید.

👇 مشاهده پلن‌های سرور ابری هاست‌ایران
hostiran.club/Migration
hostiran.club/Migration
Forwarded from Developix Support
🗺 نقشه گنج | بهترین مسیرهای یادگیری بعد از +Network

دوره +Network فقط شروع مسیره؛ اما سوال خیلی‌ها بعد از گذروندن این دوره اینه که:
حالا کدوم مسیر رو ادامه بدم؟ 🤔

شبکه؟ امنیت؟ سرور؟ لینوکس؟ Cloud؟ DevOps؟

در ایونت آنلاین روز یکشنبه بررسی می‌کنیم:
🔹 بعد از +Network چه مسیرهایی پیش روی توئه
🔹 هر مسیر برای چه افرادی مناسب‌تره
🔹 برای ورود به هر حوزه چه مهارت‌هایی لازمه

پس اگر بعد از +Network نمی‌دونی قدم بعدی چیه، این ایونت می‌تونه مسیرت رو روشن‌تر کنه!📍

📅11 مرداد | ساعت 19:30
💻 آنلاین و رایگان
👤با استاد حسام‌الدین موسوی‌زاده

برای شرکت در ایونت جزو اولین نفرات رزرو کن:
(بدون VPN وارد شو)
🔗https://l.cando.ac/ev-net101

🌻 آموزشگاه مهندسی کندو | We CanDo IT
@cando_ac
3
روی سرور یا سیستم شخصی ناگهان همه‌چیز کند می‌شود، فن‌ها جیغ می‌زنند و فقط یک سوال توی ذهن می‌چرخد: «چی داره این‌همه CPU و Disk می‌خوره؟» 🤯

دو تا ابزار ساده و خیلی کاربردی برای همین موقع‌ها هست: htop و iotop. نسخهٔ ارتقایافتهٔ top و یک مانیتور قشنگ برای I/O دیسک.


۱️⃣ نصب روی توزیع‌های مختلف

Debian/Ubuntu:
sudo apt update
sudo apt install htop iotop


Fedora:
sudo dnf install htop iotop


Arch:
sudo pacman -S htop iotop



۲️⃣ htop: دید سریع از پردازه‌ها و منابع ⚙️

با اجرای سادهٔ htop یک نمای رنگی و زنده از سیستم می‌بینی:

• نوارهای رنگی بالای صفحه: مصرف CPU، RAM، Swap به‌صورت ریل‌تایم.
• لیست پردازه‌ها با رنگ‌بندی: پروسه‌های پرمصرف سریع به چشم می‌آیند.

چند کلید خیلی کاربردی:

F6 برای تغییر sort (مثلاً بر اساس %CPU یا %MEM).
F3 برای جست‌وجوی نام پروسه (مثلاً «firefox»).
F9 برای ارسال سیگنال (مثلاً KILL) به پروسه‌ای که گیر کرده.

یه ترفند خوب: وقتی سیستم کند می‌شه، htop رو باز کن و sort رو بذار روی %CPU یا TIME+ تا ببینی کدوم سرویس از صبح تا حالا داره می‌جوه و ول نمی‌کنه 🙂


۳️⃣ iotop: وقتی مشکل از دیسکه، نه CPU 💽

خیلی وقت‌ها CPU بیکاره ولی سیستم لَگ داره؛ معمولاً مشکل از I/O دیسکه.

با این دستور می‌تونی پردازه‌هایی که دیسک رو له کرده‌اند ببینی:

sudo iotop -o -P


• سوییچ -o فقط پردازه‌هایی رو که واقعاً الان I/O دارن نشون می‌ده (خروجی تمیزتر).
• سوییچ -P نمایش per-process (به‌جای per-thread) رو فعال می‌کنه.

ستون‌های مهم:
DISK READ و DISK WRITE: سرعت خوندن/نوشتن هر پروسه.
SWAPIN: اگر این بالا باشه یعنی سیستم داره زیاد swap می‌کنه و احتمالاً RAM کمه.


۴️⃣ یک سناریوی واقعی: پیدا کردن سرویس دردسرساز 🔍

فرض کن روی یک سرور backup شبانه فعال شده و صبح سرور افتضاح کند شده. کاری که معمولاً انجام می‌شه:

1. با htop نگاه می‌کنی ببینی CPU رو کی می‌خوره (مثلاً یک tar یا gzip سنگین).
2. هم‌زمان با sudo iotop -o -P چک می‌کنی کدوم پروسه دیسک رو ۱۰۰٪ گرفته (مثلاً یک اسکریپت backup اشتباه کانفیگ شده).
3. اگر لازم شد، با F9 در htop به‌صورت کنترل‌شده kill می‌کنی و بعد سر فرصت اسکریپت رو اصلاح می‌کنی.


۵️⃣ مستندات رسمی برای کندوکاو بیشتر 📚

man pageها همیشه دوستت هستن:
man htop
man iotop


برای جزئیات کامل‌تر htop می‌تونی به پروژهٔ اصلیش هم سر بزنی:
htop.dev


در اولین فرصت که سیستم یه کم سنگین شد، این دو تا ابزار رو اجرا کن و چند دقیقه باهاشون بازی کن؛ بعد از یکی دو بار استفاده، تبدیل می‌شن به اولین چیزی که در هر کندی سیستم سراغش می‌ری 🚀

🔖 #Linux #لینوکس #Linux #htop #iotop #Monitoring #Sysadmin #CLI #GNU/Linux

👤 Developix

💎 Channel: @DevelopixLinux
👍6