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

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

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
معرفی ابزار pwgen

ابزار pwgen به شما کمک می‌کند که در ترمینال، رمز عبور‌های رندوم را ایجاد کنید.

بعد از نصب ابزار، با وارد کردن دستور pwgen، حدود ۴۰ کلمه عبور کاملا تصادفی ۸ رقمی را برای شما به نمایش می‌گذارد.

همچنین می‌تونید این رمز رو شخصی‌سازی کنید. برای مثال به این مورد توجه کنید:
pwgen -c -n -y 100 1

پارامتر c: برای حروف بزرگ

پارامتر n: برای اعداد

پارامتر y: برای نمادها

عدد ۱۰۰: تعداد رقم کلمه عبور

عدد ۱: تعداد کلمه عبور

💎 Channel: @DevelopixLinux
👍16🔥2👎1
❇️ برای تقویت و به چالش کشیدن دانش دستورات terminal می‌تونید از این سایت استفاده کنید.

چنلچ‌های مختلف و کاربردی دارد
سلوشن‌های مختلف برای هر چلنج دارد
سوالات متنوع

🌐 https://cmdchallenge.com/

👤 Matin Soleymani

💎 Channel: @DevelopixLinux
16👍6🔥2
Forwarded from | Codilo |
🍉 یلدای امسال رو کُدیلویی بگذرونید!

🍓 تا پایان روز جمعه با دعوت دو کاربر جدید به کدیلو، فایل های کدیلو رو رایگان دریافت کنید

🥝 یلدای خوبی داشته باشید (:

💎 @Codilo
👍5👎21
Forwarded from Developix Support
🔴 ششمین صبحانه کاری ابرها (تهران)

🍽 قهوه، صبحانه، ارائه و گفتگوی کاری در کنار متخصین

🎤 موضوع: رویکرد مهندسی دواپس در فرآیند عیب‌یابی
🎤ارائه‌دهنده: آرزو محمدی

زمان: جمعه ۸ دی ۱۴۰۲، ساعت ۹ تا ۱۲ صبح
📌 مکان: تهران، میدان انقلاب، ابتدای خیابان انقلاب، بین ۱۲ فروردین و فخررازی، روبه‌روی سردر اصلی دانشگاه تهران، پلاک ۱۲۶۰، سالن کافه رویداد
👇👇👇
https://rebrand.ly/d6eat16
👍8👎21
linux-commands-handbook.pdf
14.1 MB
🐧 اگر به دنبال یادگیری دستورات پرکاربرد لینوکس به شکل ساده هستید، این کتاب می‌تواند راهنمای شما باشد! این کتاب به شما کمک می‌کند تا مهارت‌های مورد نیاز برای کار با لینوکس را به دست آورید.

👤 ȺʍìɾⱮօհąʍʍąժ

💎 Channel: @DevelopixLinux
👍31👎1
Forwarded from Developix Support
DragonCloud - دراگون کلود

ارائه خدمات سرور مجازی و اختصاصی
با بهترین سخت افزار های موجود و شبکه ای قدرتمند
- استفاده از پردازنده core i9 14900k
- رم های DDR5
- حافظه های NVMe

جهت دریافت اطلاعات بیشتر و خرید عضو شوید👇🏽

@DragonCloud_ir
👍7👎1
راهنمای تنظیم و استفاده از کرون‌جاب برای اجرای اسکریپت‌ها در زمان‌های خاص

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

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

تنظیم یک کرون‌جاب:
برای ایجاد یک کرون‌جاب جدید از دستور crontab استفاده کنید. با اجرای دستور زیر، ویرایشگر کرون باز می‌شود:
crontab -e


این دستور ویرایشگر متن پیش‌فرض را باز می‌کند. یک خط جدید برای تعیین برنامه زمانی و دستوری که باید اجرا شود، اضافه کنید. سینتکس به صورت زیر است:
* * * * * command-to-be-executed


مثال:
برای اجرای یک اسکریپت هر روز ساعت 3:30 صبح، ورودی کرون‌جاب به شکل زیر خواهد بود:
30 3 * * * script.sh


بررسی و مدیریت کرون‌جاب‌ها:
برای مشاهده کرون‌جاب‌های فعلی، از دستور زیر استفاده کنید:
crontab -l


برای حذف تمام کرون‌جاب‌ها:
crontab -r


💎 Channel: @DevelopixLinux
👍226🔥3
Forwarded from اطلاع رسانی رویداد تخصصی ابرها
هفتمین صبحانه کاری ابرها (تهران)

🍮 قهوه، صبحانه، ارائه و گفت‌وگوی کاری در کنار متخصصین

🎤 ارائه‌ تجربه‌محور توسط حمید پورجم

زمان: جمعه ۲۷ بهمن ۱۴۰۲، ساعت ۹ تا ۱۲ صبح
📌 مکان: شهرک غرب، هرمزان، پیروزان جنوبی، کوچه پنجم، مرکز همایش‌های رعد

کد تخفیف اختصاصی:
DevelopixLinux-10


لینک ثبت‌نام👇👇
https://abrh.ir/edj
👍11
🔄 توزیع Asahi Linux یکی از متفاوت‌ترین توزیع های گنو/لینوکسی به لحاظ ساختار و معماری است

این توزیع مبتنی بر معماری Arm64 هست و برای اجرا شدن روی چیپ های سری M اپل توسعه داده شده است

نسخه های مختلفی از این توزیع مبتنی بر آرچ‌ و فدورا وجود دارند، ولی در حال حاضر توسعه نسخه آرچ متوقف شده است و تنها توزیع قابل نصب فدورا است

اگر لپتاپ های مک‌بوک یا کامپیوتر های مک سری M از اپل دارید، Asahi Linux می‌تواند تجربه جالبی از یک توزیع گنو/لینوکسی روی سخت‌افزار اپل را برای شما رقم بزند

▫️البته باید توجه داشت که معماری این توزیع بر بستر Arm64 است و تعداد قابل توجهی از برنامه‌ها سازگار با این معماری نیستند

🌎 Website

💎 Channel: @DevelopixLinux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38👎74
🌀 هایپرلند (Hyperland) یک مدیرپنجره Tiling مدرن بر پایه Wayland و wlroots است که تجربه انیمیشن‌های نرم و روان و محیط فانتزی را به WM های Tiling در سیستم‌های گنو/لینوکسی می‌آورد.

💧 اگر کاربر گنو/لینوکس باشید، تقریبا بعید است که اسم مدیرپنجره‌های Tiling و محبوب‌ترین آن‌ها یعنی i3wm را نشنیده باشید، مدیرپنجره Hyperland نیز از ساختار مشابه i3wm استفاده می‌کند و تمامی قابلیت های i3wm را به‌صورت کامل در Wayland و بر پایه wlroots ممکن می‌کند.

💎 Channel: @DevelopixLinux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥5👎42
Forwarded from Developix Support
استخدام NOC Cloud Engineer از مسیر آموزش
در بوت‌کمپ تخصصی Network Operations Center-Tier 1

۸۰ ساعت | آنلاین

🔸آموزش در این بوت‌کمپ زیر نظر متخصصان با سابقه حوزه شبکه و دیتاسنتر انجام می‌شود و هدف آن استخدام در موقعیت شغلی کارشناس مرکز عملیات شبکه از میان نفرات برتر بوت‌کمپ است.

📌برخی از سرفصل‌های دوره:
- نصب و مدیریت لینوکس (بر اساس LPIC1 سفارشی)
- اصول شبکه (+Network / CCNA)
- امنیت پایه (+Security)
- مانیتورینگ سرویس‌ها و کار با ابزارهای حرفه‌ای
- مدیریت Incident و تیکتینگ


این دوره مناسب چی کسانی است⁉️
-علاقه‌مندان به شبکه، IT و امنیت؛
-فارغ‌التحصیلان یا دانشجویان رشته‌های کامپیوتر و برق؛
-کسانی که می‌خواهند خیلی سریع وارد بازار کار فناوری اطلاعات شوند؛
-افرادی که به دنبال اولین تجربه شغلی در حوزه NOC و شبکه هستند.


📆 تاریخ شروع بوت‌کمپ: ۳ آبان۱۴۰۴
🔰 بدون پیش‌نیاز؛ همراه با پروژه عملی و کوئیز
🧾مدرک پایان دوره


🔗 اطلاعات بیشتر و پیش‌ثبت‌نام👇
https://B2n.ir/mq4649
___
فناپ‌کمپس؛ رشد در بازار کار دیجیتال
@Fanapcampus
3
پشتیبان‌گیری خودکار با rsync + systemd ⏱️💾

یک مشکل واقعی: سایت یا سرور کمبود فضا نداره، ولی همیشه لازمه یک بکاپ سالم و قابل بازیابی داشته باشیم. این آموزش کوتاه نشون می‌ده چطور با rsync و یک systemd timer بکاپ‌های افزایشی و قابل اتکا بسازیم—بدون cron پیچیده.

ایده‌های کلیدی:
- rsync برای کپی افزایشی و حفظ مجوزها و لینک‌ها عالیه (man: rsync)
- systemd.timer جایگزین مدرن و قابل اطمینان برای زمان‌بندی است (مستندات: systemd.timer) ⏱️
- استفاده از --link-dest برای بکاپ‌های فضای‌دوست و قابل بازگشت.

نمونه عملی: اسکریپت بکاپ و واحد systemd. این مثال از /var/www به /backup بکاپ می‌گیرد و آخرین نسخه را با لینک حفظ می‌کند.

#!/bin/bash
set -euo pipefail
SRC="/var/www/"
DEST="/backup/$(hostname)-$(date +%F)"
RSYNC_OPTS="-aAXv --delete --link-dest=/backup/latest --exclude=/cache"
mkdir -p "$DEST"
rsync $RSYNC_OPTS "$SRC" "$DEST/"
rm -f /backup/latest && ln -s "$DEST" /backup/latest


و فایل‌های systemd:

# /etc/systemd/system/backup.service
[Unit]
Description=Daily rsync backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-rsync.sh

# /etc/systemd/system/backup.timer
[Unit]
Description=Daily backup timer

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target


نکات عملی:
- قبل از فعال‌سازی با rsync --dry-run تست کنید.
- مطمئن شید مجوزها و مالک فایل‌ها در مقصد درست هستند (خصوصاً SELinux یا ACL).
- برای جزئیات بیشتر به مستندات Bash و systemd مراجعه کنید: Bash و Debian Timers guide.
- اشتباه رایج: استفاده از --delete بدون بررسی قبلی می‌تونه داده حذف‌شده را از بین ببره — همیشه تست کنید.

این روش ساده، قابل اتکا و قابل تنظیم برای سرورها و VPS‌هاست. امتحانش کن و اگه مفید بود، به بقیه هم معرفی کن 😉

🔖 #Linux #لینوکس #rsync #systemd #backup #linux #bash

👤 Developix

💎 Channel: @DevelopixLinux
👍72
📦 پیش‌رفت کلی کپی با rsync و کاهش اولویت با nice

یک مشکل رایج: هنگام همگام‌سازی یا بکاپ‌گیری از فایل‌های بزرگ، نمایش پیش‌رفت کلی نداریم و فرآیند روی سیستم تولید بار می‌کند. این ترفند ساده هم پیش‌رفت کلی را نشان می‌دهد و هم با کاهش اولویت CPU بار را کمتر می‌کند. ⚙️

ایده: از rsync با گزینه --info=progress2 برای نمایش درصد کل عملیات استفاده کنید و با nice اولویت پردازشی را بالا ببرید تا سیستم تعاملی‌تان کند نشود. 🛠️

نمونهٔ عملی (ایمن و قابل استفاده روی اکثر توزیع‌ها):
nice -n 10 rsync -aHAX --delete --info=progress2 /home/ /mnt/backup/home/


نکات کوتاه اما کلیدی:
- /source/ با اسلش انتهایی پوشهٔ محتوا را همگام‌سازی می‌کند؛ بدون اسلش، پوشه به‌عنوان زیرپوشه منتقل می‌شود. ↪️
- nice -n 10 اولویت پردازش را کم می‌کند (عدد بالاتر = اولویت کمتر). این باعث می‌شود عملیات سنگین کمتر روی تجربهٔ کاربر تاثیر بگذارد. 🧘‍♂️
- --info=progress2 وضعیت کل انتقال را به شکل درصد و سرعت کلی نشان می‌دهد؛ مفیدتر از --progress هنگام انتقال هزاران فایل. 📊

مواردی که باید مراقب باشید:
- اگر دستگاه ذخیره‌سازی خارجی یا شبکه‌ای دارید، سرعت به رابط و بار شبکه بستگی دارد؛ rsync فقط انتقال را مدیریت می‌کند. 🌐
- برای عملیات خیلی حساس به I/O می‌توان از ionice هم استفاده کرد، اما بسته به کرنل و برنامه‌ریز دیسک، تاثیر متفاوت خواهد بود.

در پایان: این ترکیب ساده سریع‌ترین راه برای داشتن پیش‌رفت قابل‌فهم و کاهش تأثیر روی سیستم در حین بکاپ‌گیری یا همگام‌سازی است. امتحانش کنید و بازخورد بگذارید — کاربردش در کارهای روزمره بسیار مفید است.

منبع رسمی: rsync — official documentation

🔖 #Linux #لینوکس #rsync #backup #linux #terminal

👤 Developix

💎 Channel: @DevelopixLinux
🔥2👎1
روی اکثر توزیع‌های مدرن مثل Debian, Ubuntu, Fedora و Arch الان systemd مدیر سرویس (init system) اصلیه. اگر باهاش راحت نباشیم، دیباگ کردن سرویس‌ها و اسکریپت‌هامون خیلی عذاب‌آوره.

تو این پست یه سناریوی واقعی رو می‌گیریم: اجرای یه اسکریپت ساده به‌عنوان سرویس، طوری که:

• بعد از هر بوت خودش اجرا بشه 🔁
• اگر کرش کرد خودکار دوباره بالا بیاد 💥➡️🚀
• لاگ‌هاش تو journalctl قابل پیگیری باشه 📝

سناریو:
فرض کن یه اسکریپت Python داری که هر ۱۰ ثانیه وضعیت دیسک رو لاگ می‌گیره یا مثلا یه worker ساده برای کارهای background. نمی‌خوای هر دفعه خودت اجراش کنی؛ می‌خوای مثل بقیه سرویس‌ها با systemctl کنترلش کنی.

قدم ۱: ساخت اسکریپت
مثال ساده؛ یه اسکریپت که هر ۱۰ ثانیه زمان سیستم رو لاگ می‌نویسه:

sudo mkdir -p /opt/time-logger
sudo nano /opt/time-logger/time-logger.sh


محتوای فایل:

#!/usr/bin/env bash

LOGFILE=/var/log/time-logger.log

while true; do
echo "$(date '+%Y-%m-%d %H:%M:%S') - time-logger is alive" \
| sudo tee -a "$LOGFILE" >/dev/null
sleep 10
done


بعد:

sudo chmod +x /opt/time-logger/time-logger.sh
sudo touch /var/log/time-logger.log
sudo chown $(whoami):$(whoami) /var/log/time-logger.log


قدم ۲: ساخت Unit برای systemd
حالا یه سرویس systemd تعریف می‌کنیم:

sudo nano /etc/systemd/system/time-logger.service


محتوا:

[Unit]
Description=Simple Time Logger Service
After=network.target

[Service]
Type=simple
ExecStart=/opt/time-logger/time-logger.sh
Restart=always
RestartSec=5
User=%i

[Install]
WantedBy=multi-user.target


برای ساده‌تر شدن می‌تونی User رو مستقیم بذاری مثلاً:

User=yourusername


قدم ۳: Reload و فعال‌سازی سرویس

sudo systemctl daemon-reload
sudo systemctl enable --now time-logger.service
sudo systemctl status time-logger.service


اگر active (running) دیدی یعنی سرویس درست بالا آمده. لاگ‌ها:

journalctl -u time-logger.service -f


یا مستقیماً فایل:

tail -f /var/log/time-logger.log


نکات کاربردی
• تو داکیومنت رسمی systemd می‌تونی تمام گزینه‌ها رو ببینی:
systemd.service man page
• برای هر تغییری در فایل .service یادت نره sudo systemctl daemon-reload بزنی.
• اگر سرویس کرش می‌کنه، systemctl status و journalctl معمولا سرنخ خیلی خوبی می‌دن.

این الگو همون چیزیه که برای اجرای bot ها، worker ها، اسکریپت‌های backup و کلی کار دیگه روی سرورهای واقعی استفاده می‌شه. یه بار خوب یاد گرفته بشه، نصف دردسرهای «سرویس‌م خودبه‌خود می‌خوابه» حل می‌شه 🙂

امتحانش کن روی یه ماشین تست یا VM و هر جا مفید بود، توی سرورهات استفاده کن.

🔖 #Linux #لینوکس #Linux #systemd #Bash #Shell #Sysadmin #Service #GNU/Linux

👤 Developix

💎 Channel: @DevelopixLinux
7👍3🔥2
گاهی وسط کار یادت می‌افته که از پوشه‌ی پروژه‌هات Backup نگرفتی و استرس Crash یا خراب شدن Disk میاد سراغت. روی گنو/لینوکس خیلی راحت می‌شه با یه Bash Script ساده و ابزارهای استاندارد مثل cron این کار رو اتومات کرد.

ایده اینه 👇

هر شب مثلاً ساعت ۲ بامداد، از یک پوشه (مثلاً /home/user/projects) یه Archive فشرده گرفته بشه و توی یه مسیر امن ذخیره بشه. اگر هم خواستی بعداً می‌تونی اون رو روی یک Remote Server با scp یا rsync بفرستی.

مبنای کار هم چیزیه که توی مستندات رسمی Bash و manpageهای tar و cron هست (مثلاً man tar و man 5 crontab).

این یه Script خیلی ساده و در عین حال کاربردی برای Backup روزانه است:

#!/usr/bin/env bash

set -euo pipefail

SOURCE_DIR="/home/user/projects"
BACKUP_DIR="/home/user/backups"

mkdir -p "${BACKUP_DIR}"

DATE="$(date +%F_%H-%M-%S)"
ARCHIVE_NAME="projects_${DATE}.tar.gz"

/usr/bin/tar -czf "${BACKUP_DIR}/${ARCHIVE_NAME}" "${SOURCE_DIR}"

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


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

• از set -euo pipefail استفاده شده تا Script روی خطاها Stop کنه و اشتباهات Silent نمونه.

• از date برای گذاشتن Timestamp روی اسم فایل استفاده می‌کنیم تا هر Backup فایل جدا داشته باشه و قبلی‌ها Overwrite نشن.

• مسیر کامل /usr/bin/tar توی Script استفاده شده، چون وقتی با cron اجرا می‌شه، PATH معمولاً خیلی محدودتر از Shell عادیه.

حالا برای اتومات کردن با cron:

۱️⃣ فایل رو مثلاً با اسم backup_projects.sh ذخیره کن و اجرایی‌اش کن:
chmod +x ~/backup_projects.sh


۲️⃣ cron کاربر رو ویرایش کن:
crontab -e


۳️⃣ این خط رو اضافه کن تا هر روز ساعت ۲ صبح اجرا بشه:
0 2 * * * /home/user/backup_projects.sh >> /home/user/backup.log 2>&1


Log رو هم توی backup.log نگه می‌داریم که اگر جایی مشکل شد، با یک tail -f backup.log راحت ببینی چی شده.

برای جزئیات بیشتر حتماً یه نگاه به مستندات رسمی بنداز:
GNU Bash Manual
crontab(5) man page

این مدل Scriptهای کوچیک واقعاً توی کار روزمره‌ی Sysadminها و Devها نجات‌بخشه؛ از پروژه‌های شخصی گرفته تا Serverهای جدی. همین امروز روی یه پوشه‌ی آزمایشی امتحانش کن و بعد آروم‌آروم Backupت رو حرفه‌ای‌تر کن 😉

🔖 #Linux #لینوکس #GNU/Linux #bash #backup #cron #shell_scripting #sysadmin

👤 Developix

💎 Channel: @DevelopixLinux
6👍2👎1
تو این پست می‌ریم سراغ یه کار کاملاً عملی که هر ادمین لینوکسی sooner or later بهش نیاز داره: یه اسکریپت Backup ساده با Bash و زمان‌بندی با cron.

سناریو رو اینطوری فرض کن 👇
یه سرور داری که توی مسیر /var/www پروژه‌هات هست و می‌خوای هر شب یه Backup فشرده ازش گرفته بشه و بره توی یه پوشه‌ی جدا، بدون این‌که یادت بمونه هر شب دستی این کارو انجام بدی.

ایده‌ی کلی:

• استفاده از tar برای ساخت فایل آرشیو فشرده
• نام‌گذاری Backup براساس تاریخ (برای ردیابی راحت)
• زمان‌بندی با cron که خودش اتوماتیک اجراش کنه

مستندات رسمی که این ایده روش‌هاش رو پوشش می‌ده:
GNU tar Manual
GNU Bash Reference Manual
man crontab(5)

حالا بریم سراغ یه نمونه‌ی واقعی 👇

#!/usr/bin/env bash

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

mkdir -p "${BACKUP_DIR}"

tar -czf "${BACKUP_DIR}/${ARCHIVE_NAME}" "${SRC_DIR}"

find "${BACKUP_DIR}" -type f -name "www-backup-*.tar.gz" -mtime +7 -delete


این اسکریپت:

• از SRC_DIR یه آرشیو .tar.gz می‌سازه
• توی BACKUP_DIR ذخیره‌اش می‌کنه
• Backupهای قدیمی‌تر از ۷ روز رو پاک می‌کنه تا دیسک پر نشه

یه نکته‌ی ریز: اگر مسیرها رو عوض می‌کنی، حواست باشه یوزری که اسکریپت رو اجرا می‌کنه، permission لازم برای خوندن SRC_DIR و نوشتن تو BACKUP_DIR رو داشته باشه.

حالا برای زمان‌بندی با cron (مثلاً هر روز ساعت ۳ صبح):

۱) اسکریپت رو مثلاً بذار تو /usr/local/bin/www-backup.sh و اجراپذیرش کن:
chmod +x /usr/local/bin/www-backup.sh


۲) crontab رو برای یوزر root باز کن:
crontab -e


۳) این خط رو اضافه کن:
0 3 * * * /usr/local/bin/www-backup.sh >/var/log/www-backup.log 2>&1


با این کار هر شب ساعت ۳ صبح، Backup گرفته می‌شه و خروجی هم توی لاگ ذخیره می‌شه تا بعداً اگر مشکلی شد، دیباگش راحت باشه.

برای شروع همین اسکریپت ساده فوق‌العاده کاربردیه؛ بعداً می‌تونی encrypt، انتقال روی remote (مثلاً با rsync+ssh) یا Notification هم بهش اضافه کنی.

امتحانش کن روی یه پوشه‌ی تستی و اگر مفید بود برای بقیه‌ی لینوکسی‌ها هم بفرست 🌱

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

👤 Developix

💎 Channel: @DevelopixLinux
👍41
📌 مانیتور کردن پر شدن دیسک با یک اسکریپت سادهٔ Bash

خیلی وقت‌ها روی سرور یا حتی سیستم شخصی، ناگهان / پر می‌شود و سرویس‌ها شروع می‌کنند به خطا دادن. یک اسکریپت سبک Bash می‌تواند هر چند دقیقه یک‌بار وضعیت دیسک را چک کند و قبل از فاجعه، بهت خبر بدهد. 🤝

ایده این است:

• از df برای گرفتن درصد استفادهٔ دیسک استفاده می‌کنیم.
• اگر درصد از یک حد خاص (مثلاً ۸۰٪) بالاتر رفت، پیام هشدار در لاگ می‌نویسیم یا ایمیل می‌زنیم.
• اسکریپت را با cron زمان‌بندی می‌کنیم.

مستندات رسمی df و bash هم همیشه همراهت است:
GNU df manual
GNU Bash Reference Manual

👇 این یک نمونه اسکریپت مینیمال و عملی است که روی اکثر توزیع‌ها (Debian, Ubuntu, Fedora و ...) کار می‌کند:

#!/usr/bin/env bash

THRESHOLD=80
MOUNT_POINT="/"

usage=$(df -P "$MOUNT_POINT" | awk 'NR==2 {gsub("%","", $5); print $5}')

if [ "$usage" -ge "$THRESHOLD" ]; then
logger -t disk-monitor "Disk usage on $MOUNT_POINT is ${usage}% (threshold: ${THRESHOLD}%)"
fi


🧩 توضیح بخش‌های مهم:

df -P / خروجی portable می‌دهد (برای اسکریپت‌ها امن‌تر است).
• با awk سطر دوم و ستون پنج را می‌گیریم که همان درصد استفاده است؛ علامت ٪ را با gsub حذف می‌کنیم.
• اگر استفاده از حد THRESHOLD بیشتر شد، با logger یک پیام به syslog ارسال می‌کنیم. این پیام را بعداً با journalctl یا /var/log/syslog می‌شود دید.

برای اجرا کردن دوره‌ای، مثلاً هر ۵ دقیقه، یک cron job اضافه می‌شود:

crontab -e


و بعد یک خط مثل این داخلش قرار می‌دهی:

*/5 * * * * /usr/local/bin/disk-monitor.sh >/dev/null 2>&1


نکتهٔ مفید: روی سرورهای production معمولاً این اسکریپت را کمی گسترش می‌دهند؛ مثلاً اگر درصد زیاد شد، خروجی df و du -sh /var/* را هم ذخیره می‌کنند تا بعداً راحت‌تر root cause را پیدا کنند یا حتی با ابزارهایی مثل mailx ایمیل هشدار می‌فرستند.

این از آن اسکریپت‌های کوچک ولی نجات‌بخش است؛ روی یک سرور تست یا ماشین مجازی امتحانش کن و مطابق نیاز خودت شخصی‌سازی‌اش کن. 😎

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

👤 Developix

💎 Channel: @DevelopixLinux
🔥32
یکی از واقعی‌ترین کارهای روزمره روی سرورهای لینوکسی: بکاپ گرفتن منظم از فایل‌های مهم 📦

اینجا یک سناریوی ساده ولی کاملاً کاربردی:

فرض کن روی سرور، دایرکتوری /var/www داری (مثل سایت‌ها یا اپ‌های وب) و می‌خوای هر روز یک آرشیو فشرده ازش در /backup ذخیره شود، با تاریخ روی اسم فایل، بدون دخالت دست ⏱️

ایده کلی:

• یک اسکریپت Bash می‌نویسیم که:
– دایرکتوری مقصد بکاپ را اگر نبود بسازد
– از دایرکتوری سورس، یک فایل .tar.gz با تاریخ روز درست کند
– لاگ ساده بنویسد
• بعد با cron تنظیمش می‌کنیم که هر شب اجرا شود.

این کار کاملاً مطابق مستندات رسمی است:

GNU tar manual
GNU Bash manual
• راهنمای crontab(5) با اجرای man 5 crontab

نمونه اسکریپت ساده و عملی 👇

#!/usr/bin/env bash

set -euo pipefail

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

mkdir -p "${BACKUP_DIR}"

tar -czf "${BACKUP_DIR}/${ARCHIVE_NAME}" "${SOURCE_DIR}" 2>&1 | \
tee -a "${LOG_FILE}"

echo "[${DATE}] Backup created: ${ARCHIVE_NAME}" >> "${LOG_FILE}"


نکات مهم 💡

• حتماً روی سرور به‌جای مسیرهای تستی، مسیر واقعی پروژه‌ات را بگذار.
• یوزری که اسکریپت را اجرا می‌کند باید دسترسی خواندن روی /var/www و نوشتن روی /backup داشته باشد.
• گزینه‌های set -euo pipefail کمک می‌کند اسکریپت اگر به خطا خورد، بی‌سروصدا ادامه ندهد؛ این عادت خیلی خوبی در اسکریپت‌نویسی است.

اتومات کردن با cron 🕒

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

chmod +x /usr/local/bin/auto-backup.sh
crontab -e


داخل ویرایشگر cron این خط را اضافه کن تا هر روز ۳ بامداد بکاپ بگیرد:

0 3 * * * /usr/local/bin/auto-backup.sh >/dev/null 2>&1


برای تست، یک‌بار دستی اجرا کن تا مطمئن شوی همه چیز درست است و حجم فایل‌های بکاپ بی‌جهت بزرگ نمی‌شود. اگر حجم خیلی بالا بود، می‌شود الگوی حذف بکاپ‌های قدیمی (مثلاً قدیمی‌تر از ۷ روز) را هم به همین اسکریپت اضافه کرد.

چنین اسکریپت‌های کوچک واقعاً توی کار روزمره sysadmin بودن معجزه می‌کنند؛ همین امروز روی یک دایرکتوری تست اجرا کن و نتیجه را ببین 🚀

🔖 #Linux #لینوکس #Linux #Bash #Backup #cron #sysadmin #shell_scripting

👤 Developix

💎 Channel: @DevelopixLinux
👍81🔥1
🔹 خیلی وقت‌ها تو لینوکس دیسک پر می‌شود و باید سریع بفهمیم کدوم دایرکتوری‌ها بیشترین فضا را گرفته‌اند. یک ابزار ساده و پیش‌فرض که تقریبا روی همه دیستروها هست: du.

📦 نمایش حجم دایرکتوری‌ها به‌صورت خوانا (MB/GB):
du -h --max-depth=1 /var


🔹 توضیح سریع سوییچ‌ها:
- -h خروجی human-readable مثل 10M ،2.3G
- --max-depth=1 فقط یک لایه زیر دایرکتوری مشخص را نشان می‌دهد

مثلا برای بررسی هوم یوزر:
du -h --max-depth=1 ~ | sort -h


اینجا از sort -h استفاده شده تا خروجی بر اساس حجم، از کم به زیاد مرتب شود. انتهای خروجی، دایرکتوری‌های چاق و پردردسر مشخص می‌شوند و می‌شود راحت تصمیم گرفت کجا را تمیز کنیم.

💡 چند نکته کاربردی:
• برای نادیده گرفتن بعضی مسیرها:
du -h --max-depth=1 --exclude="*.git" ~

• برای جمع کل یک مسیر (بدون جزئیات):
du -sh /var/log


این ترکیب ساده du و sort تقریبا روی همه سرورها و دسکتاپ‌ها جواب می‌دهد و اولین قدم خوب برای عیب‌یابی پر شدن دیسک است.

📚 مرجع: man7.org - du(1)


🔖 #Linux #لینوکس #Linux #Terminal #du #DiskUsage #GNU

👤 Developix

💎 Channel: @DevelopixLinux
5
امروز که خواستم یوزرنیم رو توی دبیان عوض کنم، یه نکته مهم یاد گرفتم! مثال جالبش اینه که توی حرکت بخوای دنده ماشین عوض کنی بدون خلاص کردن و کلاچ گرفتن! معلومه که گیربکس خورد میشه:)🫨

چرا نباید وقتی با همون یوزر لاگین هستی اسمشو عوض کنی؟

فرض کن الان با یوزر abolfazl وارد سیستم شدی.
اگه همون موقع با دستور usermod اسمشو عوض کنی:

- یه‌دفعه پروسه‌های در حال اجرا قاطی می‌کنن
- دسکتاپ، پنجره‌ها یا کل سشن ممکنه بپره
- حتی ممکنه دسترسی به پوشه‌ی home به هم بریزه

خب، با root چی؟

حتی اگه بریم توی root هم مستقیم این کارو بکنیم، باز کار تمیز نیست.
چون هر چیزی که هنوز با اسم قدیمی یوزر کار می‌کنه، بعدش خطا می‌ده.



راه درست و حرفه‌ای چیه؟

بهترین کار اینه که یه یوزر دیگه داشته باشی (مثلاً backupuser) که:

- sudo داشته باشه
- باهاش لاگین کنی
- و از اون یوزر، اسم یوزر اصلی رو عوض کنی

مراحلش خیلی ساده‌ست:

1. اول با یوزر پشتیبان وارد شو:

su - backupuser

2. اگه خواستی، رمز یوزر قبلی رو عوض کن:

sudo passwd abolfazl

3. بعد اسم یوزر، گروه و پوشه home رو تغییر بده:

sudo usermod -l ali abolfazl
sudo groupmod -n ali abolfazl
sudo usermod -d /home/ali -m ali
sudo chown -R ali:ali /home/ali



با این روش چی می‌شه؟

- سیستم سالم می‌مونه؛ دسکتاپ و home نمی‌پره؛ میشه یه یوزر امن داری که از بیرون بتونی تغییرات سیستمی بدی

🔖 #Linux #لینوکس

👤 Abolfazl Asadi

💎 Channel: @DevelopixLinux
👍15
خیلی وقت‌ها تو ترمینال یه دستور طولانی می‌نویسیم، بعد می‌فهمیم فقط باید یه گزینه‌ٔ کوچیک عوض می‌شد. لازم نیست کل دستور رو دوباره تایپ کنی؛ تاریخچه‌ٔ Bash کلی میان‌بر خفن داره 👇

۱️⃣ اجرای آخرین دستور با sudo
یه دستور زدی، Permission denied خورد:
apt update
# Permission denied

به‌جای نوشتن کل دستور با sudo:
sudo !!

!! همون آخرین دستوریه که اجرا کردی. خیلی سریع و کاربردی 😎

۲️⃣ تکرار آخرین دستور شروع‌شده با چند حرف
مثلاً چند بار از systemctl استفاده می‌کنی:
!systemctl

این آخرین دستوری که با systemctl شروع شده رو دوباره اجرا می‌کنه.

۳️⃣ فقط آخرین آرگومان دستور قبلی
مثال ساده:
mkdir my_project
cd !$

!$ آخرین آرگومان دستور قبلیه (اینجا: my_project). برای کار با مسیرهای طولانی فوق‌العاده‌ست.

۴️⃣ ویرایش آخرین دستور با fc
اگه دستور قبلی طولانی بود و فقط یه بخشش رو می‌خوای عوض کنی:
fc

آخرین دستور رو تو ادیتور پیش‌فرض باز می‌کنه (مثلاً vim)، ادیت کن و سیو کن، خودش اجرا می‌شه.

این ترفندها تقریباً تو همه‌ٔ توزیع‌های گنو/لینوکس که از Bash استفاده می‌کنن کار می‌کنه و تو کار روزمره کلی زمان ذخیره می‌کنه ⏱️

برای جزییات بیشتر تاریخچه‌ٔ Bash:
GNU Bash Manual – History Interaction

🔖 #Linux #لینوکس #Linux #GNU #Bash #Terminal #Shell #Productivity

👤 Developix

💎 Channel: @DevelopixLinux
14👍3🔥3