Linux Zone | لینوکس زون
146 subscribers
5 photos
1 video
26 links
اینجا هر چیزی که درباره لینوکس می‌دونیم باهاتون به اشتراک می‌ذاریم 🐧

©️ این کانال بخشی از مجموعه @ninja_learn_ir است.
Download Telegram
🔧 چطوری با TestDisk پارتیشن های حذف شده رو برگردونیم؟

🔸گاهی وقتا اشتباهی یه پارتیشن رو پاک میکنیم یا فایل ها هست اما سیستم بوت لودر رو شناسایی نمیکنه! چطور برش گردونیم؟ 🚀

مرحله ۱: نصب TestDisk

براساس توزیع تون پکیج testdisk رو نصب کنید


sudo apt install testdisk


مرحله ۲: برنامه رو توی ترمینال با دسترسی sudo ران کنید:


sudo testdisk



مرحله ۳: انتخاب دیسک

🔸
- لیست دیسکها میاد. مثلاً ممکنه اسم دیسک شما /dev/sda باشه.
- با کلیدهای بالا و پایین کیبورد، دیسک مدنظر رو انتخاب کنید و اینتر بزنید.


مرحله ۴: نوع جدول پارتیشن رو مشخص کنید

🔸
- برای اکثر سیستم های معمولی (MBR یا GPT)، گزینه ی Intel رو انتخاب کنید و اینتر


مرحله ۵: اسکن و بازیابی
1️⃣ از منوی اصلی، گزینهی Analyse (تجزیه و تحلیل) رو انتخاب کنید.
2️⃣ صبر کنید تا TestDisk دیسک رو اسکن کنه. ممکنه چند دقیقه طول بکشه☕️
3️⃣ وقتی پارتیشن حذفشده پیدا شد، روشنش کنید (با کلید و اینتر).
4️⃣ حالا گزینهی Write (نوشتن) رو بزنید تا تغییرات ذخیره بشن.
5️⃣ سیستم رو ریاستارت کنید و نتیجه رو ببینید!


هشدارهای مهم ❗️
- قبل از هر کاری، از داده هاتون بکاپ بگیرید! ممکنه اشتباهی اوضاع بدتر بشه!
- اگر پارتیشن تو لیست نیست، از منوی اصلی گزینهی Deeper Search رو امتحان کنید (اسکن عمیقتر).
- اگر مطمئن نیستید، Write نزنید! اول با یه آدم باتجربه مشورت کنید.


اگر سیستم اصلاً بوت نمیشه چی؟

🔸
- یه USB لایو لینوکس بسازید و از اون بوت کنید بعد TestDisk رو نصب کرده و همین مراحل رو تکرار کنید.


💬 هر نظری داشتید خوشحال میشیم با ما در میون بزارید

#️⃣ #linux #lost_partition #disk #testdisk



🐧 CHANNEL | GROUP
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️کاربرهای سیستم عامل های مختلف:

تجربه ی کار با سیستم عامل های دیگه مثل BSD رو داشتین؟🤔

#️⃣ #linux #bsd #meme


🐧 CHANNEL | GROUP
4🔥1
📦 همه چیز درمورد کانتینرها

کانتینرها مثل "جعبه‌های نرم‌افزاری" هستن که همه چیز رو برای اجرای یک برنامه (مثلاً یک وب‌سرور یا اپلیکیشن) آماده می‌کنن. برخلاف ماشین‌های مجازی (VM) که کل سیستم عامل رو شبیه‌سازی میکنن، کانتینرها به جای بالا اوردن هسته جدا هسته اصلی رو با برنامه مون به اشتراک میزارن! این باعث میشه سبک‌تر، سریع‌تر و کم‌مصرفتر باشن.


🔍 چطوری کار میکنن؟
🔸کانتینرها از دو فناوری کلیدی لینوکس استفاده میکنن:

1️⃣Namespaces:
محیط اجرای برنامه رو از بقیه سیستم ایزوله میکنه (مثلاً فایل سیستم، شبکه و فرایندها جدا میشن).

2️⃣Cgroups (Control Groups):
منابع سخت‌افزاری (مثل CPU و RAM) رو بین کانتینرها محدود و مدیریت میکنه.


🚢 ‏Docker چیکار میکنه این وسط؟ 🤔 Docker محبوب‌ترین ابزار برای کار با کانتینرهاست. به راحتی میتونی یه اپلیکیشن رو با تمام وابستگی‌هاش (مثل کتابخانه‌ها و تنظیمات) توی یه تصویر (Image) بسته‌بندی کنی و روی هر سیستم لینوکسی اجرا کنی.
مثال اجرای یک کانتینر اوبونتو:

  docker run -it ubuntu:22.04 /bin/bash  


چطور به Image سفارشی بسازیم؟
🔸 با Dockerfile میتونی Image خودت رو بسازی:

  FROM python:3.9
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]


سپس با دستور
docker build -t my-app .

ایمیج رو بساز


📚 ‏LXC/LXD: کانتینرهای "شبه VM"
LXC (Linux Containers) کانتینرهایی میسازه که بیشتر شبیه یه سیستم عامل کاملن مثلاً میتونی یه کانتینر اوبونتو داشته باشی و تقریباً همه کارهایی که توی یه VM میکنی رو انجام بدی.

مثال ایجاد کانتینر با LXD:

  lxc launch ubuntu:22.04 my-container  # ساخت کانتینر
lxc exec my-container -- bash # ورود به کانتینر


🌟 مزایای کانتینرها:
1️⃣ پورتابل: یه بار بساز، همه جا اجرا کن (حتی روی سرور)
2️⃣ سریع: راه‌اندازی کانتینر ها خیلی سریع انجام میشه
3️⃣ صرفه‌جویی در منابع: ده‌ها کانتینر میتونی روی یک سرور اجرا کنی بدون نیاز به سخت‌افزار اضافه.
4️⃣ اسکیل آسان: با ابزارهایی مثل Kubernete**s میتونی هزاران کانتینر رو مدیریت کنی.


⚠️ نکات امنیتی:
کانتینرها کاملاً ایزوله
نیستن اگر تنظیمات اشتباه باشه، ممکنه به سیستم یا سرور آسیب بزنن.

همیشه:
1️⃣ از Imageهای رسمی و معتبر استفاده کن.
2️⃣ کانتینرها رو با کاربر غیر root اجرا کن.

3️⃣ به کانتینرها دسترسی بیش از حد نده (مثلاً --privileged در Docker خطرناکه).

🎯 کاربردهای کانتینرها:
توسعه نرم‌افزار (DevOps و CI/CD)
اجرای میکروسرویس‌ها (مثل وب‌سرور، دیتابیس و ...)
تست نرم‌افزار در محیط‌های مختلف
ساخت محیط‌های توسعه یکسان برای کل تیم


🔧 شروع کار با Docker روی لینوکس:
1️⃣ بر اساس توزیعت Docker رو نصب کن و اگر خواستی استارت اپش رو فعال کن:

   sudo apt install docker
sudo systemctl enable --now docker


2️⃣ یک Image آزمایشی دانلود کن (مثل Nginx):

   docker pull nginx


3️⃣ کانتینر رو اجرا کن:

   docker run -d -p 8080:80 --name my-nginx nginx


حالا تو مرورگر ادرس localhost:8080 رو بزن اگر صفحه پیش‌فرض Nginx رو دیدی یعنی درست اجرا شده!

جمع بندی
فهمیدیم که کانتینر ها ابزاری برای ایزوله سازی برنامه هامون هستن که با استفاده از منابع کم و راه اندازی سریع خیلی کار هارو ساده میکنن و برای بکند کار و شبکه و حتی فرانت کار ها هم کاربرد دارن.

#️⃣ #linux #development



🐧 CHANNEL | GROUP
👍8
۱۰ ابزار خط فرمان که هر کاربر لینوکس باید بشناسه 🛠
ترمینال لینوکس پر از ابزارهای فوق‌العاده‌ایه که می‌تونه کارها رو سریع‌تر و راحت‌تر کنه. این ۱۰ ابزار قدرتمند تجربه‌ی کار با لینوکس رو خیلی بهتر میکنن.

1️⃣ htop مدیریت پردازش‌ها 🔄
‏ htop یه نسخه پیشرفته از top هست که اطلاعات سیستم رو به‌شکل رنگی و خوانا نمایش می‌ده.
قابلیت شخصی‌سازی بالایی داره و مدیریت پردازش‌ها رو آسون‌تر می‌کنه.

نصب:

sudo apt install htop  # در Debian/Ubuntu  
sudo dnf install htop # در Fedora

اجرا:
htop


2️⃣ ncdu بررسی فضای اشغال‌شده در دیسک 💾
این ابزار نسخه‌ی تعاملی du هست و بهت نشون می‌ده کدوم پوشه‌ها بیشترین حجم رو اشغال کردن.
برای مدیریت فضای ذخیره‌سازی عالیه.

نصب:
sudo apt install ncdu

اجرا:
ncdu /


3️⃣ fzf جستجوی فوق سریع در تاریخچه و فایل‌ها ⚡️
‏ fzf یه ابزار تعاملیه که جستجو بین فایل‌ها، دستورات و متن‌ها رو سریع‌تر از همیشه می‌کنه.
می‌تونی خیلی سریع توی تاریخچه‌ی دستوراتت جستجو کنی.

نصب:
sudo apt install fzf

مثال:
CTRL + R  # جستجو در تاریخچه دستورات


4️⃣ bat جایگزین cat 📝
‏ bat مثل cat هست، ولی با رنگ‌بندی سینتکس، شماره خطوط و پشتیبانی از git برای نمایش تغییرات فایل‌ها.

نصب:
sudo apt install bat

مثال:
bat myfile.py  # نمایش فایل با رنگ‌بندی
bat --diff file1.txt file2.txt # مقایسه دو فایل
bat -n script.sh # نمایش شماره خطوط


5️⃣ tldr راهنمای سریع و خلاصه برای دستورات 📖
🔹 اگر man توضیحات زیادی داره، tldr خلاصه و مثال‌های کاربردی می‌ده.

نصب:
sudo apt install tldr

مثال:
tldr tar  # راهنمای سریع برای tar  
tldr curl # نمایش مثال‌های مربوط به curl


6️⃣ ripgrep (rg) جستجوی سریع متن در فایل‌ها 🔍
‏ rg جایگزین سریع‌تر grep هست و استفاده ازش راحت‌تره.

نصب:
sudo apt install ripgrep

مثال:
rg "TODO"  # جستجو در همه فایل‌های پروژه  
rg -n "error" # نمایش شماره خط برای کلمه‌ی "error"
rg --no-ignore "debug" # نادیده گرفتن .gitignore


7️⃣ lsd نسخه مدرن و زیباتر ls 🎨
‏ lsd جایگزین پیشرفته‌ی ls هست که آیکون فایل‌ها رو نمایش می‌ده و خروجی مرتب‌تری داره.

نصب:
sudo apt install lsd


مثال:
lsd -l  # نمایش فایل‌ها با جزئیات  
lsd --tree # نمایش فایل‌ها به‌شکل درختی
lsd -a # نمایش همه فایل‌ها، حتی مخفی‌ها


8️⃣ fd جستجوی سریع فایل‌ها 📁
‏ fd جایگزین سریع‌تر و راحت‌تر find هست.

نصب:
sudo apt install fd-find


مثال:
fd ".py$"  # پیدا کردن همه فایل‌های .py در پروژه  
fd "config.json" ~/projects # جستجوی یه فایل خاص
fd -t d "logs" # پیدا کردن دایرکتوری‌های خاص


‌‏9️⃣ tmux مدیریت همزمان چندین ترمینال🖥
‏ tmux بهت اجازه می‌ده چندین سشن ترمینال رو در یک صفحه مدیریت کنی. برای کار با سرورها فوق‌العاده‌ست!

نصب:
sudo apt install tmux


مثال:
tmux  # اجرای tmux و شروع یک سشن جدید  
CTRL + B سپس C # ایجاد یک پنجره جدید در سشن فعال
CTRL + B سپس X # بستن یک پنجره
CTRL + B سپس D # خروج از سشن بدون بستن
tmux ls # لیست سشن‌های باز
tmux attach -t 0 # بازگشت به سشن قبلی


🔟 bpytop مانیتورینگ گرافیکی سیستم 📊
bpytop اطلاعات پردازنده، رم، دیسک و شبکه رو با یه رابط گرافیکی زیبا نشون می‌ده.

نصب:
sudo apt install bpytop


اجرا:

bpytop


جمع‌بندی ✍️
این ابزارها باعث می‌شن سرعت و کارایی‌ت توی لینوکس افزایش پیدا کنه. کدوم یکی رو قبلاً استفاده کردی؟ اگر ابزار دیگه‌ای می‌شناسی که باید تو این لیست باشه، بگو

#️⃣ #linux #terminal #tools


🐧 CHANNEL | GROUP
👍3👏1
چجوری بازی‌های ویندوز رو روی لینوکس اجرا کنیم؟🎮
اگه عاشق بازی هستین و در عین حال از سیستم‌عامل لینوکس استفاده می‌کنین، احتمالاً براتون سوال شده که چجوری می‌شه بازی‌های ویندوز رو روی لینوکس اجرا کرد. خبر خوب اینه که راه‌های مختلفی برای این کار وجود داره پس با من همراه باشین تا بتونین بازی‌های مورد علاقه‌تون رو روی لینوکس هم تجربه کنین

راه‌های اجرای بازی‌های ویندوز روی لینوکس
برای اینکه بازی‌های ویندوز رو روی لینوکس اجرا کنین، چند ابزار و روش اصلی وجود داره که هر کدوم ویژگی‌های خاص خودشون رو دارن. بیاین این روش‌ها رو با هم ببینیم:

1️⃣ Wine
واین یه ابزار رایگان و متن‌بازه که بهتون اجازه می‌ده برنامه‌ها و بازی‌های ویندوز رو روی لینوکس اجرا کنین. این ابزار در واقع یه لایه‌ی سازگاری ایجاد می‌کنه که دستورات ویندوز رو برای لینوکس ق!ابل فهم می‌کنه.

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


چطور نصبش کنم؟

برای نصب Wine، می‌تونین از مدیر بسته‌های توزیعتون استفاده کنین. مثلاً تو اوبونتو این دستور رو بزنین:
sudo apt install wine

بعدش، برای اجرای بازی، کافیه فایل اجرایی (exe) بازی رو با این دستور باز کنین:
wine /path/to/game.exe


2️⃣ Proton (با Steam)

Proton یه ابزار فوق‌العاده‌ست که توسط Valve (شرکت سازنده‌ی Steam) ساخته شده و در واقع نسخه‌ی بهینه‌شده‌ی Wine برای گیمرهاست. با Proton می‌تونین بازی‌های ویندوز رو مستقیماً از Steam روی لینوکس اجرا کنین.
مزایا:
خیلی ساده و راحت کار می‌کنه.
به‌روز و مناسب برای بازی‌های جدید.
معایب:
فقط برای بازی‌های Steam کار می‌کنه.


چطور ازش استفاده کنم؟
اول Steam رو روی لینوکس نصب کنین. بعد تو تنظیمات Steam، بخش "Steam Play" رو پیدا کنین و گزینه‌ی "Enable Steam Play for all titles" رو فعال کنین. حالا می‌تونین بازی‌های ویندوز رو نصب و اجرا کنین


3️⃣ Lutris
Lutris یه پلتفرم مدیریت بازیه که کار نصب و اجرای بازی‌های ویندوز رو روی لینوکس خیلی راحت می‌کنه. این ابزار از Wine، Proton و حتی شبیه‌سازها پشتیبانی می‌کنه.

مزایا:
رابط کاربری ساده و جذاب.
پشتیبانی از بازی‌های مختلف (Steam، GOG، Epic و غیره).
معایب:
بعضی بازی‌ها ممکنه نیاز به تنظیمات دستی داشته باشن.


چطور نصبش کنم؟
‏ Lutris رو از سایت رسمیش یا مدیر بسته‌ها نصب کنین. بعد از کتابخونه‌ی بازی‌هاش، بازی مورد نظرتون رو انتخاب کنین و نصبش کنین. Lutris خودش تنظیمات رو براتون انجام می‌ده.


‌‏4️⃣ PlayOnLinux
یه ابزار دیگه‌ست که بر پایه‌ی Wine کار می‌کنه و با اسکریپت‌های آماده، نصب بازی‌ها رو آسون‌تر می‌کنه و خود کار تنظیمات مربوط به گزافیک رو برای واین انجام میده.

مزایا:
رابط کاربری گرافیکی ساده.
اسکریپت‌های آماده برای بازی‌های معروف.
معایب:
بعضی بازی‌های جدید ممکنه پشتیبانی نشن.


چطور ازش استفاده کنم؟
‏PlayOnLinux رو بر اسا توزیعتون نصب کنین، بازی مورد نظرتون رو از لیست انتخاب کنین و مراحل نصب رو دنبال کنین. این ابزار خودش نسخه‌ی مناسب Wine رو برای هر بازی مدیریت می‌کنه.

نکات مهم برای اجرای بهتر بازی‌ها🎮
برای اینکه تجربه‌ی بهتری از بازی‌ها روی لینوکس داشته باشین، این نکات رو رعایت کنین:
1️⃣ درایورهای گرافیک: حتماً درایورهای کارت گرافیکتون رو به‌روز کنین (مثلاً درایور NVIDIA یا Mesa برای AMD).
2️⃣ Vulkan: خیلی از بازی‌ها با Vulkan بهتر کار می‌کنن. مطمئن شین که Vulkan روی سیستمتون نصب باشه.

تنظیمات اضافی⚙️:
1️⃣برای بازی‌های خاص، ممکنه لازم باشه تنظیمات Wine یا Proton رو دستی تغییر بدین. سایت‌های ProtonDB و WineHQ اطلاعات خوبی دارن.
2️⃣ DXVK: این ابزار DirectX رو به Vulkan تبدیل می‌کنه و می‌تونه عملکرد بازی‌ها رو بهتر کنه.

جمع‌بندی✍️
دیگه لازم نیست بین لینوکس و بازی‌های ویندوز یکی رو انتخاب کنین با ابزارهایی مثل Wine، Proton، Lutris، PlayOnLinux و حتی ماشین مجازی، می‌تونین بازی‌های مورد علاقه‌تون رو روی لینوکس اجرا کنین. اگه دنبال راه ساده هستین، Proton یا Lutris رو امتحان کنین. اگه بازی‌تون پشتیبانی نمی‌شه، ماشین مجازی هم تنها راه باقی موندست.

شما کدوم روش رو ترجیح می‌دین؟ تجربه‌تون رو با ما به اشتراک بذارین تا بقیه هم استفاده کنن. امیدوارم از بازی کردن لذت ببرین! 🎮

#️⃣ #linux #gaming #tools


🐧 CHANNEL | GROUP
6
فرآیند بوت شدن سیستم های لینوکسی 🚀
خب توی این پست فرآیند بوت شدن سیستم هایی که از لینوکس استفاده میکنن رو بررسی میکنیم.

1️⃣ فاز اولیه: اجرا شدن فریمور (BIOS/UEFI)
وقتی دکمه‌ی پاور رو می‌زنی، اولین چیزی که اجرا می‌شه، BIOS (تو سیستم‌های قدیمی‌تر) یا UEFI (تو سیستم‌های جدید) هست. این قسمت سخت‌افزار رو بررسی می‌کنه و مطمئن می‌شه که قطعات اصلی (مثل رم، پردازنده و دیسک‌ها) درست کار می‌کنن.

تست اولیه: این مرحله به اسم POST (Power-On Self Test) شناخته می‌شه و اگه مشکلی باشه، مثلاً رم خراب باشه، معمولاً با یه سری بوق یا پیام خطا هشدار می‌ده.

پیدا کردن بوت لودر: بعد از تست سخت‌افزار، BIOS/UEFI دنبال دیسک قابل بوت می‌گرده (مثل SSD یا USB) و بوت‌لودر رو اجرا می‌کنه.

2️⃣ بوت‌لودر (GRUB یا systemd-boot)
بعد از اینکه دیسک بوت پیدا شد، بوت‌لودر (معمولاً GRUB) اجرا می‌شه. بوت‌لودر یه برنامه‌ی کوچیکه که وظیفه‌ی لود کردن کرنل لینوکس رو داره.

انتخاب سیستم‌عامل:
اگه چند تا سیستم‌عامل نصب کرده باشی (مثلاً لینوکس و ویندوز)، اینجا می‌تونی انتخاب کنی که کدوم یکی بوت بشه.

بارگذاری کرنل:
بعد از انتخاب سیستم‌عامل (یا بعد از چند ثانیه اگه گزینه‌ای انتخاب نشه)، بوت‌لودر کرنل لینوکس (فایل vmlinuz) رو بارگذاری می‌کنه.

3️⃣ بارگذاری کرنل و initramfs
اینجا کرنل لینوکس اجرا می‌شه و شروع به کنترل سخت‌افزار می‌کنه. اما چون هنوز فایل‌سیستم اصلی (Root) بارگذاری نشده، یه چیز به اسم initramfs وارد ماجرا می‌شه.

‏initramfs چیه؟
یه فایل موقتی که شامل درایورها و ابزارهای اولیه برای شناسایی و اتصال فایل‌سیستم اصلیه. به کرنل کمک می‌کنه که بتونه پارتیشن‌های دیسک رو بشناسه و مونت کنه.

4️⃣ مونت شدن روت و اجرای systemd
بعد از اینکه کرنل تونست به فایل‌سیستم اصلی دسترسی پیدا کنه، حالا سیستم آماده‌ی راه‌اندازی سرویس‌ها و بقیه‌ی چیزهاست.

ورود systemd:
تو اکثر توزیع‌های مدرن لینوکس، systemd اجرا می‌شه و وظیفه‌ی مدیریت سرویس‌ها و فرآیندهای سیستم رو به عهده داره.

راه‌اندازی سطح سیستم:
اینجا کلی سرویس اجرا می‌شن، مثل:
مدیریت شبکه (NetworkManager یا systemd-networkd)

مدیریت لاگ‌ها (journald)

راه‌اندازی محیط گرافیکی (GDM، SDDM یا LightDM)


5️⃣ نمایش صفحه‌ی لاگین
در نهایت، بعد از اینکه همه سرویس‌های لازم اجرا شدن، یه ترمینال لاگین (TTY) یا محیط گرافیکی دسکتاپ (مثل KDE Plasma یا GNOME) نمایش داده می‌شه و می‌تونی با یوزرنیم و پسورد وارد سیستم بشی.

جمع‌بندی:
1.‏ BIOS/UEFI اجرا می‌شه و سخت‌افزار رو بررسی می‌کنه.
2. بوت‌لودر (GRUB) کرنل لینوکس رو لود می‌کنه.
3. کرنل و initramfs فایل‌سیستم رو راه‌اندازی می‌کنن.
4.‏ systemd مدیریت سرویس‌ها رو انجام می‌ده.
5. صفحه‌ی لاگین نمایش داده می‌شه و سیستم آماده‌ی استفاده‌ست!

#️⃣ #linux #boot #kernel


🐧 CHANNEL | GROUP
👍9
چطور برنامه های پرتابل یا فایل های اجرایی که پکیج نشدن نصب کنیم؟ 💻
همه ما برنامه ها و فایل هایی مواجه شدیم که اون هارو دانلود کردیم اما فقظ تونستیم اجرا بکنیم اما نه روی سیستممون نصب داریم نه توی سرچ برنامه ها میان حالا بیاین راه های نصبشون رو برسی کنیم

چند نوع برنامه پرتابل داریم؟🤔
این برنامه ها اواع مختلفی دارن که دو نوع خیلی مرسومشون رو برسی میکنیم

1️⃣ فرمت AppImage
این فرمت کل برنامه و نیاز مندی هاش رو توی یه فایل به ما نحویل میده که میتونیم با کلیک ساده یا توی ترمینال خیلی ساده رانش کنیم مثل بعضی نسخه های nekoray

2️⃣ فایلهای اجرایی (.sh, .bin, ...):
فایل های اجرایی ساده و اسکریپت هایی که به فایل اجرایی تبدیل شدن هم ازین دسته فایل ها هستن که معمولا به صورت فشرده دسته بندی شدن و توی ترمینال بعد از اکسترکت به سادگی به ./script.sh ران میشن مثل پایچارم یا اندروید استودیو


چطوری نصبشون کنیم تا توی منوی برنامه ها بیاد؟🗂
ما برای نصب این برنامه ها به طور کلی به دو مرحله نیاز داریم
به طور مثال میخوایم پایچارم رو که پرتابل هست نصب کنیم

1️⃣ کپی فولدر برنامه یا فایل اکسنرکت شده توی فولدر
/usr/local/bin/


نکته در بعضی اموزش ها برای این مورد فولدر opt پیشنهاد میشه که خیلی فرقی نمیکنه توی کدوم فولدر بریزین اما اگر برنامه تون تک فایل اجرایی ساده هست صرفا با ریختن توی همین فولدر بهش از طریق ترمینال دسترسی دارید و نیاز به تنظیماتی که در اخر مطلب گفته میشه نیست


2️⃣ ساخت فایل .desktop توی مسیر ~/.local/share/applications:
توی این فولدر یه فایل دسکتاپ با نام دلخواهمون میسازیم مثال:

nano ~/.local/share/applications/pycharm.desktop  


3️⃣ براساس برنامه تون این فایل رو میسازین:
نکته: بخش Exec حتما باید مسیر کامل برنامه رو بدید


  
[Desktop Entry]
Name=PyCharm Portable
Exec=/home/you/Downloads/pycharm/bin/pycharm.sh
Icon=/home/you/Downloads/pycharm/bin/pycharm.png
Type=Application
Categories=Development;


و بعد از ذخیره اگر درست تنظیم کرده باشین باید برنامه داخل سرچ لینوکستون بیاد

چطور برنامه رو توی ترمینال با یه کامند برنامه رو اجرا کنم؟🤔
برای این کار باید مسیر اجرای برنامه رو داخل PATH ها قرار بدید و اگر میخواید همیشه دردسترش باشه این کار رو براساس ترمینالتون توی فایل bashrc یا zshrc یزارید تا همیشه در دسترس باشه

export PATH=/program_bin_folder/:$PATH # این رو داخل فایل .bashrc قرار بدید

نکات مهم⚠️:

در صورتی که موقغ اجرای برنامه دیدین ارور میده که یه نیازمندی نصب نیست میتونید با کامند زیر لیست نیازمندی ها رو ببینید و نصب کنید. اگر نبود به داکیومنت برنامه مراجعه کنین

  
ldd /مسیر/برنامه | grep not



💬 خوحال میشیم نظراتتون رو با ما در میون بزارید😉

#️⃣ #linux #install #portable


🐧 CHANNEL | GROUP
👍5🔥1
نصب AstroNvim🛠
همیشه کانفیگ vim یا nvim میتونه برای تازه کار ها سخت و برای حرفه ای ها زمان بر باشه برای همین کانفیگ های آماده ای به وجود اومدن که به کاربر اجازه میدادن با صرف زمان و انرژی کمتر یه کانفیگ خوب و قابل استفاده داشته باشه. یکی از این کانفیگ ها AstroNvim هست که روی nvim نصب میشه و تجربه ی کار با این ادیتور رو لذت بخش تر میکنه.

ویژگی‌های AstroNvim
سریع، زیبا و بهینه‌شده
پشتیبانی از LSP، DAP و درخت فایل پیشرفته
افزونه‌های از پیش تنظیم‌شده برای یه تجربه‌ی عالی
قابلیت شخصی‌سازی بالا

📌 نصب AstroNvim
اول از همه، نئوویم نسخه 0.9 یا بالاتر رو نصب کن:
sudo apt install neovim #Debian
sudo pacman -S neovim #Arch
sudo dnf install neovim #Fedora

حالا AstroNvim رو توی پوشه ی کانفیگ های nvim کلون کن:
git clone --depth 1 https://‌‌‏github.c‌‌‌‏om/AstroNvim/AstroNvim  ~/.config/nvim

حالا توی اولین اجرای nvim نصب کننده ی AstroNvim شروع به دانلود و نصب افزونه های مورد نیازش میکنه:
nvim


🔧نحوه ی کار کردن با AstroNvim:

برای استفاده از AstroNvim فقط کافیه nvim رو اجرا کنید، کانفیگ به طور خودکار لود میشه و آماده ی استفاده هست:
nvim 

برای اینکه مستقیم یه فایل رو باهاش باز کنید میتونید دقیقا از دستور مشابه vim استفاده کنید:
nvim file.txt


توی هر اجرا شما صفحه ی اولیه ی AstroNvim رو میبینید که به شما امکان انتخاب سشن های قبلی یا پروژه های قبلی رو میده.
بیشتر فرمان های(حرکت ها، عملگر ها، دستورات و...) AstroNvim دقیقا مشابه فرمان های vim هستن و اگه به vim تسلط دارید میتونید خیلی راحت با این کانفیگ کار کنید.
البته میتونید توی حالت نرمال با استفاده از کلید Space به راهنمای AstroNvim دسترسی پیدا کنید. توی این راهنما هم نحوه ی استفاده از خود کانفیگ نوشته شده و هم نحوه ی کار با فرمان های برنامه،‌ مثل یه برگه تقلب(Cheat Sheet) کنار دستتونه.
برای مثال میتونید با کلید های Space + e توی حالت نرمال به فایل اکسپلورر داخلی برنامه دسترسی پیدا کنید و با کلید های CTRL + O بین فایل اکسپلورر و صفحه ی ادیتور جا به جا بشید.

📌 نصب افزونه‌ها و LSP‌ها
بعد از نصب، این دستورات رو توی نئوویم اجرا کن:
برای نصب و استفاده از بیشتر افزونه ها نیاز به npm دارید.

:LspInstall python
:MasonInstall eslint lua-language-server


🔧 شخصی‌سازی AstroNvim
اگر می‌خوای تنظیمات خودت رو اضافه کنی، یه فولدر مخصوص تنظیمات ایجاد کن:
mkdir -p ~/.config/nvim/lua/user
touch ~/.config/nvim/lua/user/init.lua


و داخل init.lua می‌تونی تنظیمات شخصی خودت رو اضافه کنی.

💬 جمع‌بندی
‏AstroNvim‏ یه کانفیگ آماده هست با طراحی مدرن و افزونه‌های از پیش تنظیم‌شده. این کانفیگ به شما امکان می‌ده تا با سرعت و کارایی بیشتری کدنویسی کنید و محیطی زیبا و کاملاً شخصی‌سازی‌شده داشته باشید. اگر به دنبال تجربه‌ای بهینه‌تر از nvim هستید، AstroNvim بهترین انتخابه.
میتونید با مراجعه به وبسایت AstroNvim اطلاعات بیشتری درموردش کسب کنید.
#️⃣ #linux #terminal #tools


🐧 CHANNEL | GROUP
👍6
🗓 تقویم جلالی توی ترمینال لینوکس
دیگه تقریبا همه cal رو میشناسن، همون تقویم کوچیک و بامزه که میتونیم با دستور cal بهش دسترسی پیدا کنیم. ولی خب همونطور که میدونید این ابزار برای تقویم های میلادی طراحی شده و تقویم میلادی رو نشون میده.امروز که 5 آوریل 2025 هست خروجی این دستور این شکلیه:
cal
April 2025
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

برای نمایش تقویم یه سال خاص:
cal 2025

یا نمایش تقویم یه ماه مشخص:
cal 4 2019

که در این مثال، تقویم آوریل 2019 نمایش داده می‌شه.

🔥 jcal، تقویم جلالی برای لینوکس
‏jcal یه جایگزین پیشرفته برای cal هست که علاوه بر تقویم میلادی، تقویم شمسی (جلالی) رو هم نمایش میده.

📌 نصب jcal
میتونید خیلی راحت از طریق مدیر بسته ی توزیعتون نصبش کنین:
sudo apt install jcal #Debian
sudo pacman -S jcal #Arch
sudo dnf install jcal #Fedora

📌 استفاده از jcal
برای دیدن تقویم ماه جاری به همراه تقویم شمسی، این دستور رو اجرا کنید:
jcal
Farvardin 1404
Sh Ye Do Se Ch Pa Jo
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29

برای نمایش کل سال شمسی:
jcal -y

برای نمایش تقویم یک سال خاص:
jcal 1403

و نمایش یک ماه مشخص از سال خاص:
jcal 6 1401

که در این مثال، تقویم شهریور 1401 نمایش داده می‌شه.

💬 جمع‌بندی
اگه فقط به یه تقویم ساده میلادی نیاز دارید، cal براتون کافیه. اما اگه به دنبال نمایش تقویم شمسی هستید و می‌خواید یه ابزار بهتر داشته باشید، jcal انتخاب خوبیه. میتونید به صفحه ی گیتهاب این ابزار هم یه نگاهی بندازید.

#️⃣ #linux #terminal #tools


🐧 CHANNEL | GROUP
4👍1
🛠 چند alias کاربردی برای هر کاربر لینوکس
حتما با alias ها آشنایی دارین، همون لقب دادن به دستوراتمون.
کاربردش چیه؟ میتونیم کلی دستور طولانی یا حتی دستورایی که تایپ کردنشون هر دفعه مثل یه کابوس میمونه رو توی دستور مورد نظر خودمون خلاصه کنیم.
ساده تر بگیم، درواقع با اینکار داریم به شل(zsh, bash, fish) میگیم که دستور مورد نظر a معادل دستور طولانی b هست.


با این aliasها توی فایل ~/.bashrc یا ~/.zshrc می‌تونی کلی زمان تو ترمینال صرفه‌جویی کنی 💻⚡️

# ====== System Management ======
alias update="sudo apt update && sudo apt upgrade -y" # Fast system update
alias clean="sudo apt autoremove && sudo apt autoclean" # Clean cache and unnecessary packages
alias reboot="sudo reboot" # Reboot the system
alias ping="ping -c 5" # Ping with 5 packets

# ====== Navigation Shortcuts ======
alias home='cd ~' # Go to home directory
alias cd..='cd ..' # One directory up
alias ..='cd ..' # One directory up (short)
alias ...='cd ../..' # Two directories up
alias ....='cd ../../..' # Three directories up
alias .....='cd ../../../..' # Four directories up

# ====== File Search ======
alias f="find . -name" # Find file by name in current directory and subdirectories

# ====== Listing (ls) Aliases ======
alias la='ls -Alh' # List all files including hidden
alias ls='ls --color=always' # Enable colored output
alias lx='ls -lXBh' # Sort by extension
alias lk='ls -lSrh' # Sort by size
alias lc='ls -lcrh' # Sort by change time
alias lu='ls -lurh' # Sort by access time
alias lr='ls -lRh' # Recursive listing
alias lt='ls -ltrh' # Sort by date
alias lw='ls -xAh' # Wide listing format
alias ll='ls -Flsh' # Long listing format with type indicators
alias labc='ls -lap' # Alphabetical listing with hidden files
alias lf="ls -l | egrep -v '^d'" # List only files
alias ldir="ls -l | egrep '^d'" # List only directories

🔗برای راحتی کار میتونید فایل آماده ی alias هارو از لینک زیر دانلود کنید:
فایل آماده ی alias ها

📌 نکته: بعد از اضافه کردن aliasها، فراموش نکن که ترمینالت رو یه بار ببندی و باز کنی یا دستور زیر رو وارد کنی:
source ~/.bashrc  # or ~/.zshrc


#️⃣ #linux #terminal #tools


🐧 CHANNEL | GROUP
👍4
🔧 چطور یک داکر برای خودمون بسازیم؟ – قسمت اول

در این مجموعه پست‌ها قصد داریم با کنار هم گذاشتن اجزای پایه های لینوکس، یک container runtime مینیمال مشابه Docker بسازیم. تو این مسیر، با مفاهیم کلیدی مثل namespaceها، cgroups، mount isolation، و root filesystem کار میکنیم تا پایه لینوکس خودمون رو تقویت کنیم.

🧩 cgroups چیست و چرا مهم هست؟

Control Groups‏ یا به‌اختصار cgroups مکانیزمی در لینوکس هست که اجازه می‌ده میزان منابع مصرفی یک یا چند پراسس را محدود کنیم.

در ساختار یک کانتینر، این قابلیت باعث می‌شه که:

1️⃣ یک کانتینر بیش از سهم خود از CPU یا RAM استفاده نکنه.
2️⃣ فشار زیاد از سوی یک کانتینر باعث اختلال در کل سیستم نشه.
3️⃣ مدیریت منابع میان چند کانتینر با دقت بیشتری انجام بشه.

چه چیزهایی را میشه با اون کنترل کرد؟

در cgroup نسخه ۲ می‌تونیم انواع مختلفی از منابع رو محدود کنیم. به طور مثال:

1️⃣ با memory.max می‌تونیم حداکثر میزان RAM قابل استفاده رو تعیین کنیم. مثلاً مقدار 536870912 یعنی محدودیت ۵۱۲ مگابایت.

2️⃣ گزینه cpu.max برای کنترل میزان مصرف CPU استفاده می‌شه. مثلاً مقدار 50000 100000 به معنی استفاده از ۵۰٪ ظرفیت CPU هست.

3️⃣ با pids.max می‌تونیم تعداد پراسس هایی که داخل یک cgroup ایجاد می‌شن رو محدود کنیم. مثلاً مقدار 50 یعنی فقط ۵۰ پراسس مجاز هستن.

4️⃣ و در نهایت، با io.max می‌تونیم سرعت دسترسی به دیسک رو کنترل کنیم. مثلاً rbps=1048576 یعنی حداکثر سرعت خواندن از دیسک یک مگابایت بر ثانیه خواهد بود.

🧪 ایجاد یک cgroup

در این مرحله می‌خوایم به‌صورت دستی یک cgroup بسازیم و محدودیت RAM را روی پراسس فعلی اعمال کنیم:
# ساخت دایرکتوری برای cgroup
sudo mkdir /sys/fs/cgroup/mycontainer

# تنظیم محدودیت حافظه (۵۱۲ مگابایت)
echo 536870912 | sudo tee /sys/fs/cgroup/mycontainer/memory.max

# افزودن پراسس جاری به این cgroup
echo $$ | sudo tee /sys/fs/cgroup/mycontainer/cgroup.procs


از این لحظه به بعد، پراسس فعلی فقطمجازه که از ۵۱۲ مگابایت RAM استفاده کنه.

🐳 و containerd کجای ماجراست؟
ابزارهای مدرنی مثل Docker، در پشت صحنه از containerd برای اجرای کانتینرها استفاده می‌کنن. این ابزار مسئولیت تنظیم cgroupها، namespaceها و mountها را بر عهده داره. ما اما در این مجموعه، سعی می‌کنیم این مفاهیم رو به‌صورت مستقیم و بدون واسطه تجربه کنیم.

✍️ جمع بندی
در پست بعدی، در مورد namespaceها توضیح میدیم؛ ابزاری که باعث میشه پراسس ها بتونن محیط مجزای خودشون رو داشته باشن (مثلاً PID یا network مجزا).
اگر سوالی درباره cgroups یا محدودسازی منابع داشتید توی کامنت‌ها با ما در میون بزارید.


#️⃣ #linux #containers #cgroups #build_your_own_docker


🐧 CHANNEL | GROUP
🔥41
استارتر پک لینوکس یوزر / کسی که تازه با لینوکس آشنا شده

#️⃣ #linux #meme #newbies


🐧 CHANNEL | GROUP
👍3
🔧 چطور یک داکر برای خودمون بسازیم؟ – قسمت دوم

در قسمت قبل با cgroups آشنا شدیم و دیدیم چطور می‌تونیم مصرف منابع مثل RAM و CPU رو برای یک پراسس محدود کنیم. حالا وقتشه به سراغ دومین جزء اصلی کانتینرها بریم:

🧩namespace چیه و چرا مهمه؟

‏Namespace‏ها مکانیزمی در کرنل لینوکس هستن که اجازه می‌دن یک پراسس (یا گروهی از اون‌ها) نمای متفاوتی از بخش‌های مختلف سیستم ببینن. به زبان ساده‌تر، با namespaceها می‌تونیم یک محیط ایزوله برای پراسس‌ها بسازیم.
مثال:

1️⃣ هر کانتینر PIDهای خودش رو داشته باشه و PIDهای بیرونی رو نبینه.
2️⃣ فضای شبکه‌ی مخصوص خودش رو داشته باشه، با IP و interface جدا.
3️⃣ فقط فایل‌های خاصی از سیستم فایل رو ببینه، نه کل چیزی که روی سیستم هست.

📦 چه namespace‌هایی به صورت دیفالت وجود داره؟:

- pid: برای جداسازی فضای پراسس ها (Process IDs)
- net: برای جداسازی تنظیمات شبکه مثل interface، routing و ...
- mnt: برای مدیریت جداگانه‌ی mountها و filesystem
- uts: برای جداکردن hostname و domainname
- ipc: برای جداکردن فضای ارتباط بین پردازه‌ها (مثل shared memory)
- user: برای جداسازی فضای کاربری و دسترسی‌ها
- cgroup: برای اینکه هر پراسس فقط cgroup خودش رو ببینه

🧪 چطور با یک namespace جدید پراسس هارو ایزوله کنیم؟

با استفاده از ابزار unshare می‌تونیم پراسس جدیدی بسازیم که در namespaceهای جداگانه اجرا می‌شه. مثلاً برای اجرای یک شِل با PID namespace جداگانه:

sudo unshare --pid --fork --mount-proc bash


حالا توی این شِل جدید اگر ps بگیریم، فقط پراسس خودمون رو می‌بینیم و PID ما از دید درون این namespace معمولاً 1 خواهد بود.

🧩 چطور با cgroup ترکیبش کنیم؟
وقتی namespace رو با cgroup ترکیب کنیم، عملاً داریم پایه‌ی یک کانتینر واقعی رو می‌سازیم: یه محیط ایزوله که هم منابعش محدوده، هم چیزی از بیرون نمی‌بینه.
🎯 مثال:

# ساخت cgroup با محدودیت RAM
sudo mkdir /sys/fs/cgroup/mycontainer
echo 268435456 | sudo tee /sys/fs/cgroup/mycontainer/memory.max # ۲۵۶ مگابایت RAM

# اجرای یک شِل در namespace جدید با PID مجزا
sudo unshare --pid --fork --mount-proc bash


حالا که داخل شل جدید هستیم، می‌خوایم این پراسس جدید رو به cgroupای که قبلاً ساختیم اضافه کنیم. همون‌طور که گفتیم، باید این کار از داخل شل انجام بشه چون فقط از داخل می‌تونیم به‌راحتی به PID فعلی (با $$) دسترسی داشته باشیم:

echo $$ | sudo tee /sys/fs/cgroup/mycontainer/cgroup.procs


حالا برای اینکه چک کنیم محدودیت ها اعمال شدن از این دستور داخل شل استفاده میکنیم:

cat /sys/fs/cgroup/mycontainer/memory.max


با این کار، شل جدید ما (و تمام پراسس‌هایی که از داخل اون اجرا می‌شن) تحت محدودیت‌هایی که برای cgroup تعریف کردیم قرار می‌گیرن مثل محدودیت RAM، CPU یا I/O. به این ترتیب، کم‌کم داریم ساختار اولیه یک container ساده رو شکل می‌دیم.

✍️ جمع‌بندی
در این پست با namespaceها آشنا شدیم و دیدیم چطور می‌تونن محیط یک پراسس رو از بقیه‌ی سیستم جدا کنن به صورت عملی یه کانتینر خیلی جمع و جور ساختیم. در قسمت بعد، سراغ root filesystem و mount namespace می‌ریم تا بتونیم فایل‌سیستم اختصاصی برای کانتینرمون بسازیم.
اگه سوالی درباره namespaceها داشتید توی کامنت ها با ما در میون بزارید.

#️⃣ #linux #containers #namespaces #build_your_own_docker


🐧 CHANNEL | GROUP
🔥5
🌀چطوری توی گرداب برنچ های مختلف دبیان غرق نشیم؟
احتمالا تا حالا شنیدید که دبیان سه تا شاخه(branch) توسعه داره: Stable, Testing, Unstable. چون معمولا از نسخه ی پایدار یا همون Stable استفاده میشه اون دوتای دیگه خیلی به چشم نمیان. توی این پست میخوایم تفاوت این نسخه ها و اینکه اصلا کاربرد این سه تا نسخه چیه رو بررسی کنیم.

‏Debian Stable قدیمی ولی قابل اعتماد
همونطور که از اسمش مشخصه، پایداری خوبی رو ارائه میده. به شدت تست شده و تا وقتی که خودتون نخواید هیچ چیز جدیدی نصب نمیکنه. دیر به دیر آپدیت میده اگر هم آپدیت بده زیاد آپدیت بزرگ و حماسی ای نمیده. برای کسایی که میخوان بدون هیچ دردسری از کامپیوترشون استفاده کنن عالیه. نکته ای که داره اینه که نرم افزار ها و پکیج ها توی این نسخه قدیمی هستن ولی به شدت قابل اعتمادن و میتونین تقریبا بهشون بگین بدون باگ!

‏Debian Stable به روز و قابل استفاده🔄
توی این نسخه خبری از ثبات کامل نیست اما نرم افزار ها نسبت به نسخه ی پایدار جدیدترن. درواقع نسخه های جدید نرم افزار ها قبل از اینکه وارد نسخه ی پایدار بشن مدتی رو توی این نسخه میمونن و باگ ها و مشکلاتشون با آپدیت برطرف میشه. برای کسایی که نرم افزار های نسبتا به روز میخوان ولی دوست ندارن هرروز کرش ببینن مناسبه.

‏Debian Unstable به روز ولی پرحاشیه⚠️
همه چی اول از اینجا شروع میشه! نسخه های آزمایشی پکیج ها، باگ ها، آپدیت های لحظه ای و ... برای کسایی که دوست دارن روی لبه ی تکنولوژی حرکت کنن، همیشه به روز ترین هارو داشته باشن و باگ براشون تفریحه. ممکنه یه آپدیت بده کاملا باگ و کار نکردن و ممکنه یه آپدیت بده کاملا درست و بدون باگ، قابل اعتماد نیست و باید انتظار باگ رو داشته باشین.

کدوم رو استفاده کنیم؟🤔

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

#linux #debian


🐧 CHANNEL | GROUP
👍3
تفاوت Display Server های محبوب: Wayland و X11🖥
چند وقتی میشه که توی دنیای لینوکس دسکتاپ یه سوال، یه بحثی هست که: Wayland یا X11؟ واقعا چه تفاوتی دارن؟ کدوم یکی رو باید انتخاب کرد؟ بریم یه نگاه ساده بهشون بندازیم تا تفاوتشون رو درک کنیم و راحت تر بتونیم بینشون انتخاب کنیم.

‏X11: قدیمی ولی کارآمد📺
‏X11 یه دیسپلی سرور قدیمیه که از دهه‌ها پیش همراه لینوکس و کاربراش بوده. میشه گفت به خاطر همین قدیمی بودنش، سازگاری خیلی خوبی با نرم افزار و درایور های مختلف داره و هنوزم استفاده میشه، دستکاپ XFCE هنوزم داره به عنوان پیش فرض ازش استفاده میکنه و دسکتاپ هایی مثل پلاسما یا گنوم با اینکه پیش فرضشون به Wayland تغییر کرده ولی هنوز امکان استفاده از X11 رو دراختیار کاربر قرار میدن.
یکی دیگه از مزایاش امکان اجرای برنامه های گرافیکی از راه دور با SSH هست. از معایبش میشه به عدم پشتیبانی بومی از ویژگی های مدن مثل شفافیت و Vsync و ساختار پیچیده و کد بیس قدیمی که روند توسعه رو نگهداری رو سخت میکنه اشاره کرد.

‏Wayland: جدید، سریع و آینده دار🖥
‏Wayland اومده که جایگزینی برای X11 باشه. از برتری هاش میشه به سرعت بیشتر، کد ساده تر، ساختار مدرن، ‌امنیت بهتر، مصرف منابع کمتر و پشتیبانی از تکنولوژی ها جدید تر اشاره کرد. مدتی هست که دسکتاپ های گنوم و پلاسما به طور پیش فرض ازش استفاده میکنن.
مشکلی که داره اینه که هنوز با همه چی سازگار نیست. بعضی برنامه ها یا ابزار های قدیمی ممکنه باهاش مشکل داشته باشن که ممکنه برای اجراشون نیاز به استفاده از XWayland داشته باشین.

کدوم رو انتخاب کنیم؟🤔
اگه دنبال حداکثر سازگاری و درصدر اطمینان بالا هستین X11 هنوزم شمارو راضی نگه میداره. اگه سیستم و نرم افزار هاتون جدیدن و میخوان از امکانات و تکنولوژی های مدرن، امنیت و سرعت بیشتری بهره ببرین Wayland گزینه ی بهتریه.

#linux #display_servers #x11 #wayland


🐧 CHANNEL | GROUP
👍4
‏GRUB چیه؟📂
‏GRUB مخفف GNU GRUB یا GNU GRand Bootloader هست. این ابزار یه bootloader چند مرحله ایه که وظیفه داره کرنل سیستم عامل از روی دیسک پیدا کنه و اجراش کنه. ولی پشت این ظاهر ساده ساختار نسبتا پیچیده و وظیفه ی مهمی داره.

ساختار کلی GRUB🛠️
گراب رو میشه توی دوتا لایه تعریف کرد:
1️⃣لایه ی اول:
این قسمت بسیار کوچیکه و بسته به نوع سیستمتون داخل MBR یا EFI Partition ذخیره میشه. تنها کاری که انجام میده بارگذاری بخش بعدی GRUB هست. چون فضای بسیار محدودی داره، فقط نقش یک واسطه ساده رو بازی میکنه.
2️⃣لایه ی دوم:
این بخش روی پارتیشن سیستم(معمولا boot/) قرار میگیره و شامل اجزای اصلی GRUB هست. مثل ماژول ها، فایل های تنظیمات، تم ها منوی بوت. GRUB در این بخش قابلیت هایی مثل خوندن فایل سیستم ها، نمایش منوی انتخاب سیستم عامل و بارگذاری کرنل لینوکس یا bootloader ویندوز رو داره.

مهم ترین فایل ها و مسیرها در GRUB:🗃️
‏boot/grub/grub.cfg/:

فایل اصلی کانفیگ های GRUB. این فایل خودکار توسط grub-mkconfig ساخته میشه. معمولا نباید اون رو ویرایش کرد.

‏etc/default/grub/:

این فایلیه که قابل ویرایشه،‌اینجا گزینه هایی مثل سیستم عامل پیش فرض، زمان تایمر منو،‌تنظیمات گرافیکی و ... رو میتونید مشخص کنید.
فقط بعد از ویرایش فایل و نوشتن تنظیمات خودتون باید این دستور رو بزنید:
sudo update-grub


‏/boot/grub/:

این مسیر شامل تمام فایل های مرتبط با GRUB هست، مثل grub.cfg، ماژول ها، تم ها و تنظیمات دیگه.

ماژول های GRUB:🔗
این ابزار به شکل ماژولار طراحی شده، یعنی قابلیت لود فایل سیستم ها، رمزنگاری، شبکه و کلی تنظیمات و امکانات دیگه از طریق ماژول ها اضافه میشه و در نهایت با کنار هم قرار گرفتن ماژول ها GRUB میتونه به درستی کارهای خودش و کارهای فوق‌العاده دیگه ای انجام بده. مثلا:
‏ext2.mod:
پشتیبانی از ext2/ext3/ext4
‏linux.mod:
لود کرنل‌های لینوکس
‏luks.mod:
پشتیبانی از پارتیشن‌های رمزنگاری‌شده

چطوری میشه توی GRUB تغییر ایجاد کرد؟🛠️
فقط کافیه که فایل /etc/default/grub/ رو ادیت کنید. برای مثال:
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s`
GRUB_DEFAULT=0
GRUB_THEME="/boot/grub/themes/your-theme/theme.txt"

و بعدش میتونید با اجرای دستور زیر تنظیمات جدید رو اعمال کنید:
sudo update-grub


جمع بندی✍️
‏GRUB یه bootloader قدرتمند، کاملا آزاد و متن بازه که میتونه سیستم عامل های مختلف رو مدیریت کنه و توی مدیریت چندین سیستم عامل مختلف روی یه کامپیوتر کمک کنه. قابلیت شخصی سازی بالایی داره، از تغییر تایمر و ترتیب منو گرفته تا اضافه کردن پس زمینه و حتی نصب تم های گرافیکی خاص و جذاب. تنظیم کردنش هم ساده هست و با مقداری گشتن میتونید دقیقا به همون چیزی تبدیلش کنید که میخواید.

#linux #bootloaders #GRUB


🐧 CHANNEL | GROUP
👍3
‏Cron Jobs در لینوکس
‏Cron یک از ابزار های قدرتمند و کاربردی لینوکسه که به شما اجازه میده دستورات یا اسکریپت هارو توی یه بازه/دوره ی زمانی مشخص و کاملا خودکار اجرا کنید.

‏Cron Job چیه؟

‏cron job یه تسک زمان بندیه که توی سیستم های Unix Base اجرا میشه. به طور مثال شما میتونید کارهای زیر رو با کمک cron job کاملا خودکار و زمان بندی شده انجام بدید.
اجرای روزانه اسکریپت بکاپ
پاک کردن لاگ ها یا فایل های کش قدیمی
ارسال ایمیل گزارش ها به ادمین سیستم
اجرای یک API call توی زمان مشخص

ساختار زمان بندی توی cron
⏱️
این ابزار برای زمان بندی از یه سینتکس خاصی استفاده میکنه که همین خاص بودنش باعث شده درکش پیچیده باشه و در عین حال بشدت کاربردیش کرده.
* * * * * command_to_run
│ │ │ │ │
│ │ │ │ └ Day of the Week (0 - 7)
│ │ │ └── Month (1 - 12)
│ │ └──── Day of the Month (1 - 31)
│ └────── Hour (0 - 23)
└──────── Minute (0 - 59)

مثلا دستور زیر یک اسکریپت رو هرروز ساعت 2:30 اجرا میکنه:
30 2 * * * /home/rick/backup.sh


مدیریت Cron Jobs🛠
با استفاده از کامند crontab میتونید cron job هاتون رو مدیریت کنید.
ایجاد یا ویرایش cron jobها:
crontab -e

لیست cron job های فعال برای کاربر فعلی:
crontab -l

حذف کرون جاب های فعلی:
crontab -f

حتی میتونید از اجرا شدن cron هاتون لاگ هم داشته باشین:
0 2 * * * /home/rick/backup.sh >> /var/log/backup.log 2>&1


نکات مهم⚠️
1.محیط اجرای cron با محیط ترمینال فرق داره
ممکنه بعضی متغیر های محیطی توی cron در دسترس نباشن. پس بهتره که مسیر کامل دستورات و فایل هارو بنویسید. به عنوان راه حل میتونید مستقیما اون متغیر هارو توی crontab تعریف کنید.
PATH=/usr/bin:/bin:/usr/local/bin

2.برای اجرای اسکریپت ها مطمئن باشید که فایل دسترسی اجرا شدن رو داشته باشه.
میتونید با دستور زیر این دسترسی رو به اسکریپت بدین.
chmod +x ./script.sh


مثال
📝
*/15 * * * * /home/rick/check_server.sh 
# Every 15 minutes
0 9 * * 1 /home/rick/weekly_report.sh
# Every Monday at 9 AM
0 3 1 * * /home/rick/monthly_cleanup.sh
# On the 1st of each month at 3 AM


مشاهده لاگ‌های cron🔎

اگه میخواین بدونین cron job هاتون واقعا اجرا شدن یا نه، میتونید لاگ های سیستم رو چک کنید:
grep CRON /var/log/syslog    # Debian/Ubuntu
journalctl -u cron.service # systemd-based systems


جمع بندی✍️
‏Cron یکی از دوست داشتنی ترین ابزار های لینوکسه که فقط با چند خط ساده میتونید کلی از کارهای تکراری و خودکار انجام بدین و یه خودکارسازی خوب برای خودتون یا سرورتون داشته باشین. البته که سینتکس زمانبندیش یکمی پیچیدس ولی بعد یه مدتی دستتون میاد و بهش عادت میکنید.

#️⃣#linux #tools


🐧 CHANNEL | GROUP
2🔥1
یه چیت شیت کوچیک مربوط به کرون جاب ها
🔥2
اثربخشی تکنیک های تعمیر کامپیوتر روی سیستم عامل های مختلف

#️⃣#linux #meme


🐧 CHANNEL | GROUP
🤣8
میرور ها توی لینوکس🐧
حتما توی استفاده از لینوکستون از دستور های آپدیت پکیج منیجر ها(مثل apt update) استفاده کردید. دستور هایی که نسخه های پکیج های مختلف نرم افزاری رو از مخزن بسته ها دریافت میکنن و اگه نیاز به بروزرسانی داشته باشن براتون بروزرسانی انجام میدن. ولی این مخزن ها چی هستن؟

‏Mirror ها یا مخازن🪞
هر پکیج منیجر یه مخزن یا به اصطلاح Mirror داره. مخزن ها سرورهایی هستن که نسخه های مشابهی از یه پکیج نرم افزاری رو نگه میدارن. این مخزن ها توی سراسر دنیا هستن و یه جورایی پخش شدن. اینجوری دیگه همه ی کاربرا از فقط یه سرور استفاده نمیکنن. توی نقاط مختلف ایران مخزن های مختلفی وجود داره تا دانلود ها سریع تر و پایدار بشن.
مثلا:
sudo apt update
sudo apt install vim

اینجا apt میره از یکی از مخزن ها پکیج vim رو میگیره و نصب میکنه.

چرا این همه Mirror به وجود اومدن؟🤔
اگه این مخازن توی نقاط مختلف پخش نشده بودن یا فقط یه سرور واحد وجود داشت، با درخواست آپدیت همزمان کاربرا سرعت دانلود میومد پایین و همچنین دانلود ناپایدار بود. اما اینجوری هرکی میتونه مخزن مناسب خودش(مثلا نزدیک به محل زندگیش یا کشور خودش) رو انتخاب کنه و پکیج هاشو از اونجا دانلود کنه.
اینجوری بار این همه درخواست بین سرورهای مختلف تقسیم میشه و سرعت و پایداری هم بالا میره. توی بعضی موارد(مثل کالی یا فدورا) هم میتونیم با عوض کردن مخازن تحریم هارو دور بزنیم.

چطوری نسخه ها هماهنگ میمونن؟🔄
وقتی دستور apt update رو می‌زنید، سیستم میره سراغ فایل‌هایی مثل Packages.gz و Release توی مخزن (repository) که لیست کامل بسته‌ها، نسخه‌ها و هش‌ها رو نگه می‌دارن. این فایل‌ها از سرورهای مخزن ها میان، ولی اصلشون از مخزن اصلی (مثلاً deb.debian.org) تولید می‌شه. حالا میرورها با استفاده از ابزارهایی مثل rsync یا apt-mirror به‌صورت خودکار و منظم با مخزن اصلی همگام می‌شن و فقط فایل‌های جدید یا تغییر کرده رو می‌گیرن. اینطوری همه میرورها تقریباً همیشه نسخه‌ی هماهنگی از پکیج‌ها دارن و وقتی چیزی نصب می‌کنید، از نزدیک‌ترین یا سریع‌ترین میرور دانلود میشه.

پکیج ها توی مخازن دستکاری نمیشن؟🔐
برای اینکه هیچکس نتونه پکیج های داخل مخزن ها رو دستکاری کنه یا نسخه ی مخرب آپلود کنه، هر پکیج با کلید دیجیتال(GPG) امضا میشه. وقتی از دستورهای آپدیت استفاده میکنین سیستم فایل Release.gpg رو بررسی میکنه که امضای دیجیتال پکیج هارو توی خودش داره. این امضا فقط با کلید رسمی توزیع قابل اعتبار سنجیه.
پکیج منیجر هش هر پکیج رو با چیزی که توی فایل Packages.gz ثبت شده مقایسه میکنه، اگه حتی یه بیت از پکیج دستکاری شده باشه هش تایید نمیشه و پکیج نصب نمیشه.

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

#️⃣#linux #terminal #tools


🐧 CHANNEL | GROUP
👍2