مدیریت سرورهای لینوکس نیازمند اجرای مداوم کارهای تکراری و نظارتی است. مدیران سیستم و شبکه روزانه با وظایفی مانند بکاپگیری از دادهها، پاکسازی لاگها، بررسی میزان مصرف منابع و نظارت بر صحت عملکرد سرویسها سر و کار دارند. انجام دستی این وظایف نه تنها زمانبر است، بلکه احتمال خطای انسانی را به شدت افزایش میدهد.
اسکریپتنویسی با Bash یکی از قدرتمندترین روشها برای اتوماسیون فرآیندها در سیستمعامل لینوکس است. با استفاده از اسکریپتهای Bash میتوانید وظایف پیچیده را در قالب چند خط کد خلاصه کرده و آنها را به صورت خودکار اجرا کنید. در این مطلب، ۵ اسکریپت کاربردی و پرکاربرد Bash را معرفی میکنیم که هر مدیر سروری باید در جعبهابزار خود داشته باشد.
چرا خودکارسازی وظایف در سرورهای لینوکس اهمیت دارد؟
اتوماسیون یا خودکارسازی فرآیندها یکی از اصول اصلی مدیریت نوین سرورها و مفاهیم DevOps است. سرورها باید به صورت ۲۴ ساعته و بدون اختلال به ارائه خدمات بپردازند، و این موضوع نیازمند پایش مداوم و نگهداری منظم است.
استفاده از اسکریپتهای Bash برای خودکارسازی وظایف، چندین مزیت کلیدی به همراه دارد:
- صرفهجویی چشمگیر در زمان و انرژی مدیران سیستم
- کاهش خطاهای احتمالی ناشی از ورود دستی دستورها
- افزایش پایداری و امنیت سرور از طریق اجرای منظم فایلهای بکاپ و بهروزرسانیها
- پاسخ سریع به مشکلات احتمالی سیستم مانند پر شدن حافظه یا خرابی سرویسها
۱. اسکریپت بکاپگیری خودکار از فایلها و دیتابیس
گرفتن بکاپ منظم از مهمترین فایلهای سیستم و پایگاههای داده، اصلیترین سپر دفاعی در برابر از دست رفتن اطلاعات است. این اسکریپت فایلهای مشخصی را فشردهسازی نموده و با تاریخ روز ذخیره میکند.
بکاپگیری خودکار باعث میشود که در صورت بروز هرگونه مشکل سختافزاری یا نرمافزاری، بتوانید در کوتاهترین زمان ممکن دادهها را بازیابی کنید.
کد بش اسکریپت بکاپگیری:
#!/bin/bash # تنظیم متغیرهای مسیر BACKUP_SRC="/var/www/html" BACKUP_DEST="/backup" DATE=$(date +%Y-%m-%d_%H-%M-%S) FILENAME="backup-$DATE.tar.gz" # ایجاد دایرکتوری بکاپ در صورت عدم وجود mkdir -p "$BACKUP_DEST" # فشردهسازی و ایجاد فایل بکاپ tar -czf "$BACKUP_DEST/$FILENAME" "$BACKUP_SRC" # پاکسازی بکاپهای قدیمیتر از ۷ روز find "$BACKUP_DEST" -type f -name "*.tar.gz" -mtime +7 -delete echo "بکاپگیری با موفقیت در تاریخ $DATE انجام شد."
۲. اسکریپت پایش میزان مصرف دیسک و ارسال هشدار
پر شدن ناگهانی فضای ذخیرهسازی سرور میتواند موجب از کار افتادن دیتابیسها و سرویسهای وب شود. این اسکریپت میزان فضای اشغالشده پارتیشنهای سیستم را بررسی کرده و در صورت عبور از حد مجاز، پیام هشدار صادر میکند.
با زمانبندی این اسکریپت میتوانید قبل از ایجاد بحران در سرور، از کمبود فضای دیسک مطلع شوید و اقدامات لازم را انجام دهید.
کد اسکریپت پایش فضای دیسک:
#!/bin/bash
# تعیین آستانه هشدار به درصد
THRESHOLD=80
# بررسی میزان مصرف پارتیشن root
USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "هشدار: فضای دیسک سرور به $USAGE درصد رسیده است!"
else
echo "وضعیت فضای دیسک نرمال است: $USAGE درصد"
fi
۳. اسکریپت بررسی وضعیت سرویسها و استارت خودکار
خاموش شدن ناگهانی سرویسهای حیاتی مانند Nginx، Apache یا MySQL بر اثر فشار ترافیک یا کمبود رم، شایع است. این اسکریپت وضعیت فعال بودن سرویس را پایش میکند و در صورت متوقف شدن، سعی میکند آن را دوباره استارت نماید.
این فرایند خودکار، پایداری سرویسهای شما را به طرز چشمگیری ارتقا داده و از قطعیهای طولانیمدت جلوگیری میکند.
کد اسکریپت مدیریت و بررسی سرویس:
#!/bin/bash # نام سرویس مورد نظر SERVICE="nginx" # بررسی وضعیت سرویس با systemctl if ! systemctl is-active --quiet "$SERVICE"; then echo "سرویس $SERVICE متوقف شده است. در حال تلاش برای راهاندازی مجدد..." systemctl start "$SERVICE" # بررسی مجدد پس از استارت if systemctl is-active --quiet "$SERVICE"; then echo "سرویس $SERVICE با موفقیت راهاندازی شد." else echo "خطا در راهاندازی مجدد سرویس $SERVICE." fi else echo "سرویس $SERVICE به صورت عادی در حال اجرا است." fi
۴. اسکریپت پاکسازی خودکار لاگهای قدیمی و فایلهای موقت
انباشته شدن فایلهای لاگ (Logs) و فایلهای موقت در مسیرهایی مثل var/log/ و tmp/ به مرور زمان حجم زیادی از دیسک را اشغال میکند. این اسکریپت به صورت دورهای لاگهای قدیمی را شناسایی و حذف میکند.
اگر به یک سرور مجازی پایدار و قابل اعتماد نیاز دارید، با خرید وی پی اس میتوانید پلن متناسب با نیاز پروژه خود را انتخاب کنید.
انجام منظم این پاکسازی، عملکرد سیستم فایل لینوکس را بهینه نگه داشته و از پر شدن بیمورد دیسک جلوگیری میکند.
کد اسکریپت پاکسازی لاگها
#!/bin/bash # مسیر لاگها و فایلهای موقت LOG_DIR="/var/log" TMP_DIR="/tmp" echo "شروع پاکسازی فایلهای قدیمی..." # حذف لاگهای فشرده قدیمیتر از ۳۰ روز find "$LOG_DIR" -type f -name "*.gz" -mtime +30 -delete # حذف فایلهای موقت قدیمیتر از ۷ روز find "$TMP_DIR" -type f -mtime +7 -delete echo "پاکسازی فایلهای موقت و لاگهای قدیمی با موفقیت اتمام یافت."
۵. اسکریپت بهروزرسانی خودکار سیستمعامل و پکیجها
بهروز نگهداشتن پکیجهای نرمافزاری یکی از مهمترین اقدامات امنیتی در سرورهای لینوکس است. این اسکریپت فرایند بهروزرسانی مخازن و پکیجهای سیستم را به همراه پاکسازی فایلهای اضافی انجام میدهد.
اجرای این اسکریپت تضمین میکند که آخرین وصلههای امنیتی سیستمعامل بدون نیاز به دخالت دستی نصب شوند.
کد اسکریپت بهروزرسانی سیستم
#!/bin/bash echo "شروع بهروزرسانی مخازن و پکیجهای سیستم..." # ثبت تاریخ اجرای بهروزرسانی date # شناسایی نوع مدیریت پکیج و اجرای بهروزرسانی if command -v apt &> /dev/null; then apt update && apt upgrade -y apt autoremove -y apt clean elif command -v dnf &> /dev/null; then dnf update -y dnf autoremove -y fi echo "بهروزرسانی سیستم با موفقیت به پایان رسید."
روش زمانبندی خودکار اسکریپتها با استفاده از Cron
پس از نوشتن اسکریپتهای Bash، برای اینکه این اسکریپتها به صورت خودکار و بدون دخالت دست در فواصل زمانی مشخص اجرا شوند، باید از ابزار Cron در لینوکس استفاده کنید.
برای اضافه کردن یک کار جدید به Cron، مراحل زیر را طی کنید:
ابتدا به اسکریپت خود دسترسی اجرایی بدهید:
chmod +x /path/to/script.sh
سپس جدول زمانبندی Cron را باز کنید:
crontab -e
اکنون میتوانید خط زمانبندی خود را اضافه کنید. برای مثال، برای اجرای اسکریپت بکاپگیری در ساعت ۲ بامداد هر روز، عبارات زیر را اضافه کنید:
0 2 * * * /path/to/backup-script.sh
جمعبندی
استفاده از اسکریپتهای Bash برای خودکارسازی کارهای سرور لینوکس، یکی از موثرترین روشها برای افزایش بهرهوری، بهبود امنیت و تضمین پایداری سیستم است. با بهکارگیری ۵ اسکریپت معرفیشده در این مطلب شامل بکاپگیری، پایش دیسک، بررسی سرویسها، پاکسازی لاگها و بهروزرسانی سیستم، میتوانید بخش عمدهای از وظایف تکراری سرور را به طور کامل اتوماتیک کنید.
توصیه میشود قبل از اجرای این اسکریپتها در محیط عملیاتی (پروداکشن)، آنها را در یک محیط تست بررسی کرده و مطابق با نیازها و ساختار سرور خود متغیرهای مسیر و تنظیمات را تغییر دهید.