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

©️ این کانال بخشی از مجموعه @ninja_learn_ir است.
Download Telegram
نصب 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