LFS : Linux from Scratch
اسمی که حتی برای کاربران چندین ساله گنو/لینوکس ترسناکه اما میتونه یک تفریح خیلی اموزنده باشه.
پروژه LFS در واقع پروژه ایه که به شما نشون میده چجوری مرحله به مرحله سیستم عامل لینوکسی خودتون رو از سورس کد بسازید.
این پروژه این امکان رو به شما میده که با جزییات بسیار دقیق و گاها جالب اشنا بشید و اتفاقاتی که دست به دست هم میدن تا یک سیستم عامل رو بوجود بیارن رو درک کنید.
جامعه هدف LFS بیشتر توسعه دهندگان و کاربران حرفه ای هست که میخوان کنجکاوی خودشون رو ارضا کنن و مهارت هاشون رو به چالش بکشن. اما اینجا محدود نمیشه شما اگه دنبال یک سیستم عامل سفارشی از صفر میگردید جزو جامعه هدف LFS هستید
ریلیز اولیه LFS حدود سال ۱۹۹۹ بود که نشون بده چجوری میشه یک توزیع لینوکسی رو از سورس بیلد گرفت و اون رو ساخت. شاید براتون سوال باشه اگه از صفره ریلیز چی ؟! ریلیز کتاب :)
اگه شماهم دنبال به چالش کشیدن مهارت های خودتون هستید یا میخواید امتحان کنید میتونید کتاب LFS رو بصورت رایگان از [ سایت ] خودش دریافت کنید .
🔘 @linux_exp | #linux #lfs
اسمی که حتی برای کاربران چندین ساله گنو/لینوکس ترسناکه اما میتونه یک تفریح خیلی اموزنده باشه.
پروژه LFS در واقع پروژه ایه که به شما نشون میده چجوری مرحله به مرحله سیستم عامل لینوکسی خودتون رو از سورس کد بسازید.
این پروژه این امکان رو به شما میده که با جزییات بسیار دقیق و گاها جالب اشنا بشید و اتفاقاتی که دست به دست هم میدن تا یک سیستم عامل رو بوجود بیارن رو درک کنید.
جامعه هدف LFS بیشتر توسعه دهندگان و کاربران حرفه ای هست که میخوان کنجکاوی خودشون رو ارضا کنن و مهارت هاشون رو به چالش بکشن. اما اینجا محدود نمیشه شما اگه دنبال یک سیستم عامل سفارشی از صفر میگردید جزو جامعه هدف LFS هستید
ریلیز اولیه LFS حدود سال ۱۹۹۹ بود که نشون بده چجوری میشه یک توزیع لینوکسی رو از سورس بیلد گرفت و اون رو ساخت. شاید براتون سوال باشه اگه از صفره ریلیز چی ؟! ریلیز کتاب :)
اگه شماهم دنبال به چالش کشیدن مهارت های خودتون هستید یا میخواید امتحان کنید میتونید کتاب LFS رو بصورت رایگان از [ سایت ] خودش دریافت کنید .
git clone https://git.linuxfromscratch.org/lfs.git lfs-git
🔘 @linux_exp | #linux #lfs
⚡4❤2👍1👻1
Media is too big
VIEW IN TELEGRAM
💢 چطوری یک فلش مموری بوتیبل از ایزوی ویندوز توی لینوکس بسازیم ؟
توی این ویدیوضمن بررسی چالش های این کار، دو ابزار woeUSB و Ventoy رو باهم بررسی کردیم و در اخر Ventoy رو روی یک usb باهم نصب کردیم .
+ مطلب خیلی ساده ایه اما شروعی بود برای محتواهای تصویریمون 🤝 منتظر ویدیو های مفید تر باشید :)
🔘 @linux_exp | #usb #linux #video
توی این ویدیوضمن بررسی چالش های این کار، دو ابزار woeUSB و Ventoy رو باهم بررسی کردیم و در اخر Ventoy رو روی یک usb باهم نصب کردیم .
+ مطلب خیلی ساده ایه اما شروعی بود برای محتواهای تصویریمون 🤝 منتظر ویدیو های مفید تر باشید :)
🔘 @linux_exp | #usb #linux #video
🔥4❤2👍1🍾1🆒1
چجوری موقع لاگین شدن از SSH نوتیف دریافت کنیم؟
اگاهی به موقع از لاگینهای SSH میتونه سطح جدیدی از هوشیاری و امنیت رو برای سرورتون فراهم بکنه.
بهترین ابزار برای انجام این کار استفاده از PAM (Pluggable Authentication Module) هستش که میتونیم کار دلخواهمون رو (اینجا فرستادن نوتیف) موقع باز شدن یک نشست (session) توی SSH هندل کنیم
برای انجام این کار سراغ فایل
برید و بعد خطی که توش session حال حاضر تعریف شده اضافه کنید:
الان بخش اصلی کار تموم شده و شما باید نوتیفیکیشن دلخواهتون رو با استفاده از اسکریپتی که به PAM دادیم عملی کنید تا بعد هربار ایجاد نشست اسکریپت اجرا بشه و شما متوجه اتفاقات بشید.
بخش اخر خیلی به خلاقیت خودتون بستگی داره که چجوری هندلش کنید. مثلا ایمیل فرستاده بشه یا توی تلگرام و سایر جاها مثل دیکسورد نوتیفش رو داشته باشید و هزاران کار دیگه!
+ مرحله اخر بصورت استفاده از Gmail SMTP توی منبع ذکر شده میتونید مطالعه کنید :)
[ Source ]
🔘 @linux_exp | #SSH #PAM #linux
اگاهی به موقع از لاگینهای SSH میتونه سطح جدیدی از هوشیاری و امنیت رو برای سرورتون فراهم بکنه.
بهترین ابزار برای انجام این کار استفاده از PAM (Pluggable Authentication Module) هستش که میتونیم کار دلخواهمون رو (اینجا فرستادن نوتیف) موقع باز شدن یک نشست (session) توی SSH هندل کنیم
برای انجام این کار سراغ فایل
/etc/pam.d/sshdبرید و بعد خطی که توش session حال حاضر تعریف شده اضافه کنید:
session optional pam_exec.so /usr/local/bin/ssh-login-notify.shالان بخش اصلی کار تموم شده و شما باید نوتیفیکیشن دلخواهتون رو با استفاده از اسکریپتی که به PAM دادیم عملی کنید تا بعد هربار ایجاد نشست اسکریپت اجرا بشه و شما متوجه اتفاقات بشید.
بخش اخر خیلی به خلاقیت خودتون بستگی داره که چجوری هندلش کنید. مثلا ایمیل فرستاده بشه یا توی تلگرام و سایر جاها مثل دیکسورد نوتیفش رو داشته باشید و هزاران کار دیگه!
+ مرحله اخر بصورت استفاده از Gmail SMTP توی منبع ذکر شده میتونید مطالعه کنید :)
[ Source ]
🔘 @linux_exp | #SSH #PAM #linux
🔥9👌5❤2👍1
دیروز یکی از دوستان با وجود اینکه چند گیگ فضای خالی روی سرور داشت، ولی نمیتونست فایل ایجاد کنه که مشکل از پر شدن inode های سرور بود.
📌 inode چیه؟
میتونیم inode رو مثل کارت شناسایی فایلها توی لینوکس تصور کنیم. هر فایلی که روی سیستم هست یه کارت شناسایی (inode) داره که توش اطلاعات مهم مثل اندازه فایل، محل ذخیرهسازی فایل روی دیسک، مالک و تاریخها نوشته شده. یعنی حتی اگه فضای خالی روی هارد باشه، اگه همه کارتها پر شده باشن، سیستم نمیتونه فایل جدید بسازه چون دیگه کارت شناسایی جدید برای فایل وجود نداره.
♨️ مشکل پر شدن چطوری پیش میاد؟
معمولا وقتی تعداد خیلی زیادی فایل ریز و درشت روی سیستم ذخیره میکنیم (بیش از حد نرمال)، مخصوصا فایلهای کوچک، هر فایل یه inode میگیره. بعد از یه مدت، حتی اگه فضای هارد زیادی داشته باشیم، همه inode ها پر میشن و سیستم دیگه نمیتونه فایل جدید بسازه.
پس همیشه خوبه موقع مدیریت سرور حواسمون به inode usage هم باشه، نه فقط فضای خالی هارد. با دستورهایی مثل
🔘 @linux_exp | #linux #inode
📌 inode چیه؟
میتونیم inode رو مثل کارت شناسایی فایلها توی لینوکس تصور کنیم. هر فایلی که روی سیستم هست یه کارت شناسایی (inode) داره که توش اطلاعات مهم مثل اندازه فایل، محل ذخیرهسازی فایل روی دیسک، مالک و تاریخها نوشته شده. یعنی حتی اگه فضای خالی روی هارد باشه، اگه همه کارتها پر شده باشن، سیستم نمیتونه فایل جدید بسازه چون دیگه کارت شناسایی جدید برای فایل وجود نداره.
وقتی فایلسیستم روی هارد ساخته میشه، یه تعداد مشخص inode بهش اختصاص داده میشه. یعنی از همون اول تعداد مشخصی کارت شناسایی برای فایلها وجود داره و بعدا به راحتی قابل افزایش نیست.
♨️ مشکل پر شدن چطوری پیش میاد؟
معمولا وقتی تعداد خیلی زیادی فایل ریز و درشت روی سیستم ذخیره میکنیم (بیش از حد نرمال)، مخصوصا فایلهای کوچک، هر فایل یه inode میگیره. بعد از یه مدت، حتی اگه فضای هارد زیادی داشته باشیم، همه inode ها پر میشن و سیستم دیگه نمیتونه فایل جدید بسازه.
پس همیشه خوبه موقع مدیریت سرور حواسمون به inode usage هم باشه، نه فقط فضای خالی هارد. با دستورهایی مثل
df -ih میتونیم ببینیم چه مقدار inode باقی مونده و قبل از اینکه مشکل جدی بشه، فایلهای اضافی یا لاگهای قدیمی رو پاک کنیم.معمولا فایلهای لاگ قدیمی، فایلهای موقت یا کشها بیشترین inode رو مصرف میکنن. حتی دایرکتوریها هم inode دارند! با پاک کردن این فایلها میتونید فضای inode رو آزاد کنید و مشکل پر شدن رو حل کنید.
🔘 @linux_exp | #linux #inode
🔥5🥰3👍2👌1🫡1
📌
ReVanced یک مجموعه ابزار اوپنسورسه که بهتون اجازه میده اپهای محبوب مثل YouTube، YouTube Music، TikTok، Spotify و ... رو بدون تبلیغ، با امکانات مثل پخش در پسزمینه یا اسپانسر بلاک و شخصیسازیهای ویژه استفاده کنید.
ReVanced Manager اپ رسمی اندرویدی تیم ReVanced هست که نصب و مدیریت همه اپهای مود شده ReVanced رو ساده و امن میکنه. جایگزین Vanced قدیمی شده و همیشه آپدیت میشه تا بهترین تجربه بدون تبلیغ رو در اختیار شما بذاره.
طرزکار ReVanced Manager به این شکل هست که لیست پچهای سازگار با آخرین نسخۀ اپ موردنظر رو بهتون نشون میده و شما باید فایل APK اون اپ رو بهش بدید و پچهای موردنظرتون رو انتخاب کنید تا پروسۀ زیر رو به ترتیب به صورت خودکار انجام بده.
Decompile -> Patch -> Complie -> Sign APK
هرچند پیدا کردن نسخۀ مناسب برای پچ و انجام دادن این پروسه ممکنه زمانبر و سنگین باشه. اگه نمیخواستید این مراحل رو طی کنید، میتونید از builderهای غیررسمی اوپنسورس استفاده کنید که این مراحل رو انجام میدن و خروجی نهایی رو در اختیارتون میذارن.
[ ReVanced ] [ ReVanced Manager ] [ GmsCore ] [ Peternmuller's Builder ]
🔘 @linux_exp | #android #tools
معرفی ReVancedReVanced یک مجموعه ابزار اوپنسورسه که بهتون اجازه میده اپهای محبوب مثل YouTube، YouTube Music، TikTok، Spotify و ... رو بدون تبلیغ، با امکانات مثل پخش در پسزمینه یا اسپانسر بلاک و شخصیسازیهای ویژه استفاده کنید.
ReVanced Manager اپ رسمی اندرویدی تیم ReVanced هست که نصب و مدیریت همه اپهای مود شده ReVanced رو ساده و امن میکنه. جایگزین Vanced قدیمی شده و همیشه آپدیت میشه تا بهترین تجربه بدون تبلیغ رو در اختیار شما بذاره.
طرزکار ReVanced Manager به این شکل هست که لیست پچهای سازگار با آخرین نسخۀ اپ موردنظر رو بهتون نشون میده و شما باید فایل APK اون اپ رو بهش بدید و پچهای موردنظرتون رو انتخاب کنید تا پروسۀ زیر رو به ترتیب به صورت خودکار انجام بده.
Decompile -> Patch -> Complie -> Sign APK
فایل خام APK با نسخههای خاص رو میتونید از سایتهایی مثل APKMirror.com دانلود کنید.
هرچند پیدا کردن نسخۀ مناسب برای پچ و انجام دادن این پروسه ممکنه زمانبر و سنگین باشه. اگه نمیخواستید این مراحل رو طی کنید، میتونید از builderهای غیررسمی اوپنسورس استفاده کنید که این مراحل رو انجام میدن و خروجی نهایی رو در اختیارتون میذارن.
حواستون باشه که اگه از پچهای پیشفرض استفاده میکنید برای لاگین کردن به اکانت گوگلتون باید GmsCore داشته باشید.
GmsCore بهتون اجازه میده حتی اگه سرویسهای گوگل رو ندارید بتونید به راحتی از ReVanced استفاده کنید.
[ ReVanced ] [ ReVanced Manager ] [ GmsCore ] [ Peternmuller's Builder ]
🔘 @linux_exp | #android #tools
👍4🔥3
💢 چندتا اصلاح (یا بهتر بگیم اشتباه) مهم تو دنیای برنامهنویسی هست که دونستنشون خالی از لطف نیست و باعث میشه کمتر تو تلهشون بیفتیم:
🔶 Shotgun Debugging
🔷 Deep Magic
🔶 Cargo Cult Programming
🔘 @linux_exp | #programming #fyi
🔶 Shotgun Debugging
یعنی وقتی یه باگ داری، به جای اینکه منطقی بررسیش کنی، شروع میکنی بیهدف بخشهای مختلف کد رو دستکاری کردن، به امید اینکه یه جایی یه چیزی درست بشه.
در واقع داری با شاتگان شلیک میکنی و بدون اینکه بدونی هدف دقیقا کجاست، امیدواری یکی از تیرها بخوره به هدف.
نتیجه؟ احتمالا یه چیز درست میشه، ولی دوتا چیز دیگه خراب میشن.
🔷 Deep Magic
به کدی گفته میشه که اونقدر پیچیده، مبهم یا پر از ترفندهای غیرمعمول هست که حتی خود نویسندهاش هم بعد از مدتی نمیفهمه دقیقا چی نوشته. معمولا این نوع کد کاری پیشرفته یا غیرمنتظره انجام میده و از بیرون مثل «جادو» به نظر میرسه، ولی در واقع نگهداری و درک اون بسیار سخته. کد خوب باید واضح، قابلخوندن و قابلتوضیح باشه، نه پر از «جادو».
🔶 Cargo Cult Programming
وقتی یه چیزی رو تو یک پروژه یا شرکت دیگه دیدیم و بدون اینکه بفهمیم چرا یا چطور استفاده شده، همونو تو پروژه خودمون پیاده میکنیم.
مثلا: «فلان شرکت از Kubernetes استفاده میکنه، پس ما هم باید بریم سمتش، چون حتما گزینه خوب و درستی بوده که انتخابش کرده»
در ظاهر داریم از Best Practice ها استفاده میکنیم، ولی در واقع فقط داریم تقلید میکنیم بدون دونستن منطق پشت این انتخاب.
🔘 @linux_exp | #programming #fyi
👍7🔥3👌2❤1
تو کیبورد استاندار فارسی کاراکترهای کنترلی نوشتاری وجود داره که برای مدیریت جهت و ترتیب نوشتار تو متنهای چندزبانه (مثل فارسی که راست به چپه و انگلیسی که چپ به راسته) استفاده میشه. این کاراکترها برای کنترل درست نمایش متنهای دوسویه و پیچیده ضرورین و در استاندارد یونیکد تعریف شدن.
⦁ LRM (Left-to-Right Mark) و RLM (Right-to-Left Mark):
کاراکترهای نامرئیای که جهت نوشتار رو مشخص میکنن و اون رو تغییر میدن بدون اینکه چیزی نمایش داده بشه. مثلا RLM باعث میشه متن پس از اون راستبهچپ تفسیر بشه و LRM برعکس.
⦁ LRO (Left-to-Right Override) و RLO (Right-to-Left Override):
این کاراکترها جهت متن رو به صورت اجباری و override تعیین میکنن، یعنی تمام کاراکترهای بعدی تا پایان این حالت، به چینش مشخص شده (چپ به راست یا راست به چپ) نمایش داده میشن، حتی اگه مخالف رفتار طبیعیشون باشه.
⦁ LRE (Left-to-Right Embedding) و RLE (Right-to-Left Embedding):
مشابه LRO/RLO ولی بهصورت تعبیه (embedding) هستن، یعنی میتونن در متن اصلی جهت بخش کوچکی رو تغییر بدن اما این حالت اجباری نیست و رفتار طبیعی کاراکترهارو تغییر نمیده.
⦁ PDF (Pop Directional Formatting):
کاراکتری که پایان یک حالت override یا embedding رو نشون میده و کنترل جهت رو به حالت قبل برمیگردونه.
مثال:
<RLM>order کاراکترهای LTR مثلا اعداد پشت هم ۱ ۲ ۳ میتونن بشن <LRM>۱ ۲ ۳<RLM>!
🔘 @linux_exp | #linux #keyboard #unicode
⦁ LRM (Left-to-Right Mark) و RLM (Right-to-Left Mark):
کاراکترهای نامرئیای که جهت نوشتار رو مشخص میکنن و اون رو تغییر میدن بدون اینکه چیزی نمایش داده بشه. مثلا RLM باعث میشه متن پس از اون راستبهچپ تفسیر بشه و LRM برعکس.
⦁ LRO (Left-to-Right Override) و RLO (Right-to-Left Override):
این کاراکترها جهت متن رو به صورت اجباری و override تعیین میکنن، یعنی تمام کاراکترهای بعدی تا پایان این حالت، به چینش مشخص شده (چپ به راست یا راست به چپ) نمایش داده میشن، حتی اگه مخالف رفتار طبیعیشون باشه.
⦁ LRE (Left-to-Right Embedding) و RLE (Right-to-Left Embedding):
مشابه LRO/RLO ولی بهصورت تعبیه (embedding) هستن، یعنی میتونن در متن اصلی جهت بخش کوچکی رو تغییر بدن اما این حالت اجباری نیست و رفتار طبیعی کاراکترهارو تغییر نمیده.
بخش کوچک تحت تاثیر در این مورد عموما کاراکترهای خنثی هستن یعنی بهطور پیشفرض جهتی برای چینششون تعیین نشده مثل علائم (+/!->)
⦁ PDF (Pop Directional Formatting):
کاراکتری که پایان یک حالت override یا embedding رو نشون میده و کنترل جهت رو به حالت قبل برمیگردونه.
مثال:
<RLM>order کاراکترهای LTR مثلا اعداد پشت هم ۱ ۲ ۳ میتونن بشن <LRM>۱ ۲ ۳<RLM>!
تا جایی که فهمیدم تلگرام تو فرستادن کاراکترهای embedding و override مشکل داره.
🔘 @linux_exp | #linux #keyboard #unicode
👍4✍1❤1
Linux Experts
تو کیبورد استاندار فارسی کاراکترهای کنترلی نوشتاری وجود داره که برای مدیریت جهت و ترتیب نوشتار تو متنهای چندزبانه (مثل فارسی که راست به چپه و انگلیسی که چپ به راسته) استفاده میشه. این کاراکترها برای کنترل درست نمایش متنهای دوسویه و پیچیده ضرورین و در استاندارد…
تو تصویر پایین میتونین قسمتی از کانفیگ پیشفرض کیبورد استاندارد فارسی رو ببینید. هر ستون با یک comma (,) از ستون بعدی جدا شده و این ستونها بهترتیب نشوندهندۀ این هستن که تو حالت عادی، با shift، با altGr و با alt چه کاراکتری باید تایپ بشه.
altGr و alt با هم تفاوت دارن. altGr معمولا سمت راست صفحهکلیده.
❤2👍1
برخی مشکلات رایج در شبکه لینوکس
ارور:
Name or service not known
علل رایج:
آیپی نگرفتن کارت شبکه ، عدم شناسایی کارت شبکه ، غیرفعال بودن کارت شبکه
در صورتی که آدرس ip مانند 8.8.8.8 پینگ شود ولی دامنه پینگ نشود مشکل از nameserver ها بوده و فایل resolv.conf باید ویرایش شود
ارور:
Network is unreachable
علل:
مشکل در جدول مسیریابی ، مشکل در سرویس DHCP و یا عدم دریافت ip ، نبود default route در جدول مسیر یابی
ارور:
Connection refused
مشکل در سرویس هایی مانند ssh یا http ، اشغال بودن پورت مقصد ، مسدود بودن توسط ufw , iptables و یا فایروال های دیگر
ارور:
No route to Host
علل:
مشکل در جدول مسیریابی و default route ، پایین بودن سرویس مقصد و یا مسیر اشتباه
راهنمای سریع:
ip addr show = مشاهده آیپی و مشخصات کارت های شبکه
ip route show = مشاهده جدول مسیریابی
/etc/resolv.conf = نیم سرور ها
systemctl status NetworkManager = مشاهده سرویس نتورک منیجر(در صورت وجود داشتن)
dhclient nic0(example eth0) = درخواست دریافت آیپی از سرور
🔘 @linux_exp | #network
ارور:
Name or service not known
علل رایج:
آیپی نگرفتن کارت شبکه ، عدم شناسایی کارت شبکه ، غیرفعال بودن کارت شبکه
در صورتی که آدرس ip مانند 8.8.8.8 پینگ شود ولی دامنه پینگ نشود مشکل از nameserver ها بوده و فایل resolv.conf باید ویرایش شود
ارور:
Network is unreachable
علل:
مشکل در جدول مسیریابی ، مشکل در سرویس DHCP و یا عدم دریافت ip ، نبود default route در جدول مسیر یابی
ارور:
Connection refused
مشکل در سرویس هایی مانند ssh یا http ، اشغال بودن پورت مقصد ، مسدود بودن توسط ufw , iptables و یا فایروال های دیگر
ارور:
No route to Host
علل:
مشکل در جدول مسیریابی و default route ، پایین بودن سرویس مقصد و یا مسیر اشتباه
راهنمای سریع:
ip addr show = مشاهده آیپی و مشخصات کارت های شبکه
ip route show = مشاهده جدول مسیریابی
/etc/resolv.conf = نیم سرور ها
systemctl status NetworkManager = مشاهده سرویس نتورک منیجر(در صورت وجود داشتن)
dhclient nic0(example eth0) = درخواست دریافت آیپی از سرور
🔘 @linux_exp | #network
🔥3🍓2⚡1💅1
♨️ فوتوشاپ خط فرمان!
ImageMagick یه ابزار خط فرمان برای کار با تصویرهاست. بیشتر برای وقتی استفاده میشه که لازم باشه عکسها بهصورت خودکار پردازش بشن، بدون اینکه نرمافزاری مثل فتوشاپ باز بشه.
کارهایی مثل تغییر اندازه، بریدن، چرخوندن، اضافهکردن متن، تغییر فرمت، یا تنظیم رنگها رو میتونه انجام بده. دستورها سادهان و با چند پارامتر میتونن چندین کار پشتسرهم انجام بدن.
نمونه:
عکس ورودی تغییر اندازه میده و خروجی جدید میسازه.
ImageMagick توی سرورها و اسکریپتها زیاد استفاده میشه، چون بدون رابط گرافیکی کار میکنه و برای پردازش انبوه عکسها خیلی سریع و قابلاعتماده.
🔘 @linux_exp | #linux #imagemagick #cli
ImageMagick یه ابزار خط فرمان برای کار با تصویرهاست. بیشتر برای وقتی استفاده میشه که لازم باشه عکسها بهصورت خودکار پردازش بشن، بدون اینکه نرمافزاری مثل فتوشاپ باز بشه.
کارهایی مثل تغییر اندازه، بریدن، چرخوندن، اضافهکردن متن، تغییر فرمت، یا تنظیم رنگها رو میتونه انجام بده. دستورها سادهان و با چند پارامتر میتونن چندین کار پشتسرهم انجام بدن.
نمونه:
magick input.jpg -resize 800x600 output.jpg
عکس ورودی تغییر اندازه میده و خروجی جدید میسازه.
بهتازگی دستور اصلی که convert بود منسوخ شده و الان بهجاش باید از magick استفاده بشه.
ImageMagick توی سرورها و اسکریپتها زیاد استفاده میشه، چون بدون رابط گرافیکی کار میکنه و برای پردازش انبوه عکسها خیلی سریع و قابلاعتماده.
🔘 @linux_exp | #linux #imagemagick #cli
🔥5🆒3❤🔥2👍1🤝1
Linux Experts
😁 🔗 Source 🔘 @linux_exp | #fun
📌 معرفی Linux Mint
لینوکس مینت یکی از محبوبترین و کاربرپسندترین توزیعهای لینوکس هست که همیشه به تازهواردها پیشنهاد میشه. دلیل اصلی این محبوبیت، سادگی، پایداری و محیط کاربری آشنا اون هست که شباهت به ویندوز داره و باعث میشه مهاجرت به لینوکس برای کاربران جدید خیلی راحتتر بشه.
لینوکس مینت همیشه تلاش کرده تا رضایت کاربران فعلی خودش رو حفظ کنه، نه اینکه صرفا بهدنبال جذب کاربرهای جدید باشه.
به همین خاطر، بهجای اعمال تغییرات بزرگ و ناگهانی، روی توسعه پایدار و بهبودهای تدریجی تمرکز داره. نتیجهاش اینه که Linux Mint تجربهای آروم، قابل اعتماد و بدون دردسر ارائه میده.
♻️ چرخه انتشار لینوکس مینت
لینوکس مینت در واقع بر دو پایه یا Base عرضه میشه:
🔷 Ubuntu-based (نسخه اصلی)
🔷 Debian-based (LMDE)
هرکدوم از این نسخهها از چرخه انتشار متفاوتی پیروی میکنن:
🔵 نسخه مبتنی بر اوبونتو
🟢 نسخه مبتنی بر دبیان (LMDE)
🖥 محیطهای دسکتاپ
لینوکس مینت با چند محیط دسکتاپ (Desktop Environment) مختلف عرضه میشه تا هر کاربر بسته به سلیقهاش، ظاهر و تجربه کاربری مورد نظر خودش رو انتخاب کنه:
⚡️ Cinnamon
🧩 MATE
🧩 Xfce
✨ به صفحه دانلود مینت سر بزنید تا تصویر پیشنمایش از هر دسکتاپ رو ببینید.
🔘@linux_exp | #linux #mint #guide
لینوکس مینت یکی از محبوبترین و کاربرپسندترین توزیعهای لینوکس هست که همیشه به تازهواردها پیشنهاد میشه. دلیل اصلی این محبوبیت، سادگی، پایداری و محیط کاربری آشنا اون هست که شباهت به ویندوز داره و باعث میشه مهاجرت به لینوکس برای کاربران جدید خیلی راحتتر بشه.
لینوکس مینت همیشه تلاش کرده تا رضایت کاربران فعلی خودش رو حفظ کنه، نه اینکه صرفا بهدنبال جذب کاربرهای جدید باشه.
به همین خاطر، بهجای اعمال تغییرات بزرگ و ناگهانی، روی توسعه پایدار و بهبودهای تدریجی تمرکز داره. نتیجهاش اینه که Linux Mint تجربهای آروم، قابل اعتماد و بدون دردسر ارائه میده.
♻️ چرخه انتشار لینوکس مینت
لینوکس مینت در واقع بر دو پایه یا Base عرضه میشه:
🔷 Ubuntu-based (نسخه اصلی)
🔷 Debian-based (LMDE)
هرکدوم از این نسخهها از چرخه انتشار متفاوتی پیروی میکنن:
🔵 نسخه مبتنی بر اوبونتو
بیشتر کاربرا از این نسخه استفاده میکنن که شامل دو نوع اپدیت هست:
🔹 Major Release (اصلی):
این نسخهها تقریبا هر دو سال یکبار منتشر میشن و معمولا تغییرات بزرگ و مهمی نسبت به نسخه قبل دارن. نمونه:
20 → 21 → 22
🔸 Point Release (فرعی):
برای هر نسخه اصلی، ۳ نسخه فرعی منتشر میشه که فاصله زمانی بین هر کدوم حدود ۶ ماه هست. بهعنوان مثال:
22.1, 22.2, 22.3
این نسخهها بیشتر شامل بهبودهای جزئی، باگفیکسها، بهروزرسانی نرمافزارها و بعضی ویژگیهای تازه هستن که تجربه کاربر رو بهتر میکنن بدون اینکه سیستم رو دچار تغییرات اساسی کنن.
🟢 نسخه مبتنی بر دبیان (LMDE)
این نسخه مستقیما روی Debian Stable ساخته میشه، نه اوبونتو. به همین خاطر چرخه انتشارش کندتر و محافظهکارانهتره هست و آپدیتهای بزرگ معمولا فقط وقتی میان که دبیان نسخه جدیدی از Stable رو منتشر کنه.
هدف LMDE اینه که اگه روزی اوبونتو غیر قابل استفاده شد، لینوکس مینت همچنان با همون تجربه کاربری قابل ادامه باشه.
🖥 محیطهای دسکتاپ
لینوکس مینت با چند محیط دسکتاپ (Desktop Environment) مختلف عرضه میشه تا هر کاربر بسته به سلیقهاش، ظاهر و تجربه کاربری مورد نظر خودش رو انتخاب کنه:
⚡️ Cinnamon
محیط دسکتاپ اصلی و پیشفرض لینوکس مینت هست که توسط تیم خود Mint توسعه داده میشه. ساده، زیبا و شبیه ویندوز مناسب برای کاربران تازهوارد.
🧩 MATE
نسخه مدرنشده و فورک GNOME 2 هست؛ سبکتر از Cinnamon و مناسب سیستمهای قدیمیتر.
رابط کاربریش کلاسیکتره، اما همچنان با ثبات و کارآمد عمل میکنه.
🧩 Xfce
سبکترین نسخه لینوکس مینت. مناسب سیستم با سختافزار قدیمی یا منابع محدود. سریع، پایدار و مصرف پایین منابع.
✨ به صفحه دانلود مینت سر بزنید تا تصویر پیشنمایش از هر دسکتاپ رو ببینید.
🔘@linux_exp | #linux #mint #guide
🔥3👌2⚡1👍1
Linux Experts
📌 معرفی Linux Mint لینوکس مینت یکی از محبوبترین و کاربرپسندترین توزیعهای لینوکس هست که همیشه به تازهواردها پیشنهاد میشه. دلیل اصلی این محبوبیت، سادگی، پایداری و محیط کاربری آشنا اون هست که شباهت به ویندوز داره و باعث میشه مهاجرت به لینوکس برای کاربران…
⭕️ دیروز پشتیبانی ویندوز 10 به پایان رسید.
اگه کسی رو میشناسید که سیستمش با ویندوز 11 سازگار نیست، میتونید Linux Mint رو پیشنهاد کنید 😁
حتی Zorin OS هم توی آپدیت آخرش خودش رو برای مهاجرهای ویندوزی آماده کرده.
🔘 @linux_exp | #windows #EOL #mint
اگه کسی رو میشناسید که سیستمش با ویندوز 11 سازگار نیست، میتونید Linux Mint رو پیشنهاد کنید 😁
حتی Zorin OS هم توی آپدیت آخرش خودش رو برای مهاجرهای ویندوزی آماده کرده.
🔘 @linux_exp | #windows #EOL #mint
🥰7👍4⚡1
📌 بررسی مخازن اوبونتو
اگر به مخازن اوبونتو دقت کرده باشید میبینید که برای نظم و کنترل بهتر روی نرمافزارها، ریپازیتوریها یا همون مخازنش رو در چند بخش مختلف تقسیم کرده که هرکدوم سطح متفاوتی از پشتیبانی و مجوز دارن:
🔷 Main
🔶 Universe
🔴 Restricted
⚫️ Multiverse
💢 چرا این جداسازی انجام شده؟
همون طور که میشه حدس زد، دلیل اصلی این تقسیمبندی، شفافیت و انعطافپذیری هست. اوبونتو با این کار چند هدف رو دنبال میکنه:
• شفافیت مجوزها: کاربر دقیق بدونه چه نرمافزارهایی آزاد و یا تجاری هستن.
• پشتیبانی تفکیکشده: نرمافزارهای مهمتر (مثل Main) سریعتر بهروزرسانی بشن.
• مشارکت جامعه: بخشی مثل Universe به جامعه اجازه میده در توسعه و نگهداری پکیجها مشارکت کنن.
این جداسازی باعث میشه کاربر، توسعهدهنده و خود تیم اوبونتو بدون تداخل و دردسر بتونن مدیریت نرمافزارها، پشتیبانی و امنیت سیستم رو به شکل موثرتری انجام بدن.
🔘 @linux_exp | #linux #ubuntu
اگر به مخازن اوبونتو دقت کرده باشید میبینید که برای نظم و کنترل بهتر روی نرمافزارها، ریپازیتوریها یا همون مخازنش رو در چند بخش مختلف تقسیم کرده که هرکدوم سطح متفاوتی از پشتیبانی و مجوز دارن:
🔷 Main
این بخش شامل نرمافزارهای آزاد و متنبازه که بهصورت رسمی توسط خود Canonical پشتیبانی میشن.
نرمافزارهایی مثل GNOME، apt، bash و ابزارهای ضروری سیستم اینجا قرار دارن.
🔶 Universe
این ریپازیتوری شامل نرمافزارهای آزاد و متنبازه که توسط جامعه کاربری نگهداری میشن، نه Canonical.
یعنی آپدیت امنیتی تضمینشده نیست، ولی دسترسی به ابزارها و برنامههای بسیار بیشتری میده. مثال: htop، neovim، ffmpeg و کلی ابزار محبوب دیگه.
🔴 Restricted
برخی درایورها یا نرمافزارهای کاربردی هستن که کد منبعشون آزاد نیست ولی برای عملکرد درست سیستم ضروری هستن.
اوبونتو اینها رو توی بخش Restricted قرار میده.
مثلا درایورهای گرافیکی NVIDIA یا بعضی فریمورکهای خاص. این مخزن هم مثل main به صورت رسمی پشتیبانی و نظارت میشه.
⚫️ Multiverse
اینجا جاییه برای نرمافزارهایی که کد بسته و مجوزهای محدودتری دارن و Canonical بهصورت رسمی پشتیبانشون نیست.
مثلا نرمافزارهایی که مجوز تجاری دارن یا قوانین کپیرایت خاصی براشون صدق میکنه. نصبش به عهده خود کاربره، چون اوبونتو مسئولیتی در قبالش نداره.
یکی از مثالهای معروف، libdvdcss هست، کتابخونهایی که برای پخش DVDهای رمزگذاریشده (Encrypted DVDs) استفاده میشه و بهخاطر قوانین مربوط به DRM و کدگذاری رسانه، توی بعضی کشورها استفاده یا توزیعش ممکنه از نظر قانونی مشکلدار باشه.
💢 چرا این جداسازی انجام شده؟
همون طور که میشه حدس زد، دلیل اصلی این تقسیمبندی، شفافیت و انعطافپذیری هست. اوبونتو با این کار چند هدف رو دنبال میکنه:
• شفافیت مجوزها: کاربر دقیق بدونه چه نرمافزارهایی آزاد و یا تجاری هستن.
• پشتیبانی تفکیکشده: نرمافزارهای مهمتر (مثل Main) سریعتر بهروزرسانی بشن.
• مشارکت جامعه: بخشی مثل Universe به جامعه اجازه میده در توسعه و نگهداری پکیجها مشارکت کنن.
این جداسازی باعث میشه کاربر، توسعهدهنده و خود تیم اوبونتو بدون تداخل و دردسر بتونن مدیریت نرمافزارها، پشتیبانی و امنیت سیستم رو به شکل موثرتری انجام بدن.
🔘 @linux_exp | #linux #ubuntu
👍3✍2❤1⚡1🔥1🆒1
Linux Experts
⭕️ دیروز پشتیبانی ویندوز 10 به پایان رسید. اگه کسی رو میشناسید که سیستمش با ویندوز 11 سازگار نیست، میتونید Linux Mint رو پیشنهاد کنید 😁 حتی Zorin OS هم توی آپدیت آخرش خودش رو برای مهاجرهای ویندوزی آماده کرده. 🔘 @linux_exp | #windows #EOL #mint
♨️ در ۴۸ ساعت گذشته، Zorin OS بیش از ۱۰۰ هزار بار دانلود شده که بیش از ۷۲٪ از این دانلودها، توسط مهاجران ویندوزی بودن!
فعلا آمار توزیعهای محبوب دیگه منتشر نشده اما بنظر میرسه امسال لینوکس افزایش محبوبیت قابلتوجهی رو تجربه کنه.
🔗 Link
@linux_exp | #repost
فعلا آمار توزیعهای محبوب دیگه منتشر نشده اما بنظر میرسه امسال لینوکس افزایش محبوبیت قابلتوجهی رو تجربه کنه.
🔗 Link
@linux_exp | #repost
👍10❤4🔥4😁1
📌 آیا همه توزیعهای لینوکسی واقعا آزاد (اوپنسورس / نرمافزار آزاد) هستن؟
توی وبسایت GNU یک مقاله هست با تیتر:
"Free System Distrobution Guidelines (GNU FSDG)"
که توضیح میده فقط برخی از توزیعهای لینوکسی واقعا کامل آزاد هستن.
چرا؟ چون بیشتر توزیعهای محبوب (مثل Ubuntu، Fedora یا حتی Debian) معمولا شامل اجزایی هستن که کد منبع بسته دارن. مثلا:
• Firmwareهای غیرآزاد برای کارت صدا، گرافیک یا Wi-Fi
• کدکها و درایورهای اختصاصی
• یا حتی مخازنی (Repositories) که نرمافزارهای غیرآزاد داخلشون قرار دارن (راجع بهشون در پستهای قبل توضیح دادیم).
از دید بنیاد GNU، این یعنی اون توزیعها کامل آزاد نیستن، چون کاربر روی همه بخشهای سیستم کنترل نداره.
🧭 توزیعهای مورد تأیید GNU کدامند؟
بنیاد GNU در صفحه رسمی خودش لیستی از توزیعهایی رو منتشر کرده که از نظرش ۱۰۰٪ آزاد هستن و تمام معیارهای نرمافزار آزاد رو رعایت میکنن. از اینجا میتونید این لیست رو ببینید.
برخی از اونها عبارتاند از:
🔹 Trisquel: بر پایه اوبونتو، ولی بدون هیچ بخش close source
🔸 PureOS: توسعهیافته توسط Purism، با تمرکز بر حریم خصوصی
🔹 Parabola GNU/Linux-libre: نسخه کاملا آزاد از آرچ
تمام این توزیعها از نسخه آزاد کرنل به نام Linux-libre استفاده میکنن؛ کرنلی که هرگونه کد بسته (binary blob) ازش حذف شده.
⚖️ چرا این تفاوت مهمه؟
از نگاه GNU، موضوع فقط فنی نیست، اخلاقیه.
نرمافزار آزاد فقط به «دسترسی به کد» خلاصه نمیشه، بلکه به آزادی کاربر برای کنترل سیستم خودش مربوطه.
بنیاد GNU معتقده اگر بخشی از سیستم بسته باشه، کاربر در واقع وابسته به شرکت سازنده اون بخشه و از نظر فلسفه آزادی، هنوز واقعا آزاد نیست.
💠 جمعبندی
شخصا میگم تا وقتی که از یه توزیع لینوکسی استفاده میکنید، مهم نیست کدومه تا همینجاش هم خوب پیش اومدید :)
هرکدوم باهاش راحتترید همون رو استفاده کنید.
این پست هم صرفا برای آشنایی بیشتر با فلسفه و پشتصحنه جنبش نرمافزار آزاد بود. اگر علاقه به این سبک توزیع ها دارید لیستش رو حتما چک کنید.
🔘 @linux_exp | #gnu #linux #freesoftware #opensource
توی وبسایت GNU یک مقاله هست با تیتر:
"Free System Distrobution Guidelines (GNU FSDG)"
که توضیح میده فقط برخی از توزیعهای لینوکسی واقعا کامل آزاد هستن.
چرا؟ چون بیشتر توزیعهای محبوب (مثل Ubuntu، Fedora یا حتی Debian) معمولا شامل اجزایی هستن که کد منبع بسته دارن. مثلا:
• Firmwareهای غیرآزاد برای کارت صدا، گرافیک یا Wi-Fi
• کدکها و درایورهای اختصاصی
• یا حتی مخازنی (Repositories) که نرمافزارهای غیرآزاد داخلشون قرار دارن (راجع بهشون در پستهای قبل توضیح دادیم).
از دید بنیاد GNU، این یعنی اون توزیعها کامل آزاد نیستن، چون کاربر روی همه بخشهای سیستم کنترل نداره.
🧭 توزیعهای مورد تأیید GNU کدامند؟
بنیاد GNU در صفحه رسمی خودش لیستی از توزیعهایی رو منتشر کرده که از نظرش ۱۰۰٪ آزاد هستن و تمام معیارهای نرمافزار آزاد رو رعایت میکنن. از اینجا میتونید این لیست رو ببینید.
برخی از اونها عبارتاند از:
🔹 Trisquel: بر پایه اوبونتو، ولی بدون هیچ بخش close source
🔸 PureOS: توسعهیافته توسط Purism، با تمرکز بر حریم خصوصی
🔹 Parabola GNU/Linux-libre: نسخه کاملا آزاد از آرچ
تمام این توزیعها از نسخه آزاد کرنل به نام Linux-libre استفاده میکنن؛ کرنلی که هرگونه کد بسته (binary blob) ازش حذف شده.
⚖️ چرا این تفاوت مهمه؟
از نگاه GNU، موضوع فقط فنی نیست، اخلاقیه.
نرمافزار آزاد فقط به «دسترسی به کد» خلاصه نمیشه، بلکه به آزادی کاربر برای کنترل سیستم خودش مربوطه.
بنیاد GNU معتقده اگر بخشی از سیستم بسته باشه، کاربر در واقع وابسته به شرکت سازنده اون بخشه و از نظر فلسفه آزادی، هنوز واقعا آزاد نیست.
💠 جمعبندی
شخصا میگم تا وقتی که از یه توزیع لینوکسی استفاده میکنید، مهم نیست کدومه تا همینجاش هم خوب پیش اومدید :)
هرکدوم باهاش راحتترید همون رو استفاده کنید.
این پست هم صرفا برای آشنایی بیشتر با فلسفه و پشتصحنه جنبش نرمافزار آزاد بود. اگر علاقه به این سبک توزیع ها دارید لیستش رو حتما چک کنید.
🔘 @linux_exp | #gnu #linux #freesoftware #opensource
❤3👍3❤🔥1⚡1👏1
🌐 گاهی اوقات پیدا کردن تاریخ دقیق EOL (پایان پشتیبانی) برای یک توزیع، نرمافزار، دستگاه یا سرویس نیازمند جستجو و بررسی چندین سایت مختلف است. اما یک سایت جمعوجور وجود داره که میتونید تاریخ EOL همه چیز را یکجا و سریع پیدا کنید:
🔗 https://endoflife.date
🔘 @linux_exp | #EOL #website
🔗 https://endoflife.date
🔘 @linux_exp | #EOL #website
👍4🥰2
📚 Orphan Reaping
در سیستمعاملهای مبتنی بر یونیکس و لینوکس، orphan reaping (جمعآوری فرایند های یتیم) به فرآیند خودکار مدیریت و پاکسازی پروسههای یتیم (orphan processes) توسط سیستم init (PID 1) اشاره دارد. پروسه یتیم زمانی ایجاد میشود که پروسه والد (parent process) قبل از پروسه فرزند (child process) خاتمه یابد یا کرش کند؛ در این حالت، کرنل لینوکس PPID (Parent Process ID) پروسه فرزند را به ۱ تغییر میدهد و init را به عنوان والد جدید آن معرفی میکند. این مکانیسم، بخشی از مدیریت پروسهها (process management) در فضای کاربر است و تضمین میکند که پروسههای یتیم بدون نظارت رها نشوند، که میتواند منجر به نشت منابع (resource leaks) یا ناپایداری سیستم شود.
🔖 مکانیسم ایجاد و مدیریت Orphan Processes
پروسههای یتیم از طریق سیستمکال
⦁ پذیرش (Adoption): init به عنوان والد جدید عمل میکند و پروسه یتیم را نظارت میکند.
⦁ جمعآوری (Reaping): هنگامی که پروسه یتیم خاتمه مییابد، init وضعیت خروج آن (exit status) را با استفاده از سیگنال SIGCHLD (Child Signal) دریافت میکند. سپس، init پروسه را "reap" میکند، یعنی ورودی آن را از جدول پروسهها (process table) حذف میکند، منابع حافظه (memory)، فایلهای باز (file descriptors) و ورودیهای دیگر را آزاد میسازد، و از انباشت پروسههای مرده (dead processes) جلوگیری میکند. این فرآیند با توابع
در systemd فرایند reaping پیشرفتهتر است و از cgroups (control groups) برای نظارت بر منابع استفاده میکند، در حالی که در SysVinit، init به طور مداوم SIGCHLD را هندل میکند تا orphans را مدیریت کند. بدون reaping، orphans میتوانند به zombie processes (پروسههای زامبی) تبدیل شوند، که ورودی در process table اشغال میکنند بدون مصرف منابع، اما در مقیاس بزرگ باعث PID exhaustion میشود
🔖 تفاوت با Zombie Reaping
توجه: orphan reaping را با zombie reaping (جمعآوری پروسههای زامبی) اشتباه نگیرید: zombie زمانی است که فرزند قبل از والد خاتمه مییابد، اما والد وضعیت آن را نخوانده و پروسه در حالت "زامبی" (terminated but entry retained) میماند. والد با
اگر والد خاتمه یابد، init zombie را به عنوان orphan مدیریت و reap میکند. هر دو reaping برای حفظ پایداری سیستم (system stability) و جلوگیری از resource leaks ضروریاند، اما orphans در حال اجرا هستند، در حالی که zombies مردهاند.
🔖 شناسایی و جلوگیری از Orphan Processes
برای شناسایی orphans، از دستور
استفاده کنید
خروجی پروسههایی با PPID=1 (غیر از init خود) را نشان میدهد. در سطح برنامهنویسی، برای جلوگیری از orphans، والد باید از
در نهایت، orphan reaping یک مکانیسم resilient در لینوکس است که تضمین میکند سیستم از پروسههای بیسرپرست آسیب نبیند و منابع بهینه مدیریت شوند، به ویژه در محیطهای سرور و ابری با پروسههای متعدد.
🔘 @linux_exp | #linux #orphan_reaping #init
در سیستمعاملهای مبتنی بر یونیکس و لینوکس، orphan reaping (جمعآوری فرایند های یتیم) به فرآیند خودکار مدیریت و پاکسازی پروسههای یتیم (orphan processes) توسط سیستم init (PID 1) اشاره دارد. پروسه یتیم زمانی ایجاد میشود که پروسه والد (parent process) قبل از پروسه فرزند (child process) خاتمه یابد یا کرش کند؛ در این حالت، کرنل لینوکس PPID (Parent Process ID) پروسه فرزند را به ۱ تغییر میدهد و init را به عنوان والد جدید آن معرفی میکند. این مکانیسم، بخشی از مدیریت پروسهها (process management) در فضای کاربر است و تضمین میکند که پروسههای یتیم بدون نظارت رها نشوند، که میتواند منجر به نشت منابع (resource leaks) یا ناپایداری سیستم شود.
🔖 مکانیسم ایجاد و مدیریت Orphan Processes
پروسههای یتیم از طریق سیستمکال
fork() ایجاد میشوند، جایی که والد پروسه جدیدی میسازد اما قبل از اتمام کار فرزند، خود را با exit() خاتمه میدهد. کرنل لینوکس بلافاصله PPID را به init تنظیم میکند تا از orphan شدن جلوگیری شود این یک ویژگی POSIX-compliant است. init system (مانند SysVinit یا systemd) مسئولیت reaping را بر عهده دارد، که شامل:⦁ پذیرش (Adoption): init به عنوان والد جدید عمل میکند و پروسه یتیم را نظارت میکند.
⦁ جمعآوری (Reaping): هنگامی که پروسه یتیم خاتمه مییابد، init وضعیت خروج آن (exit status) را با استفاده از سیگنال SIGCHLD (Child Signal) دریافت میکند. سپس، init پروسه را "reap" میکند، یعنی ورودی آن را از جدول پروسهها (process table) حذف میکند، منابع حافظه (memory)، فایلهای باز (file descriptors) و ورودیهای دیگر را آزاد میسازد، و از انباشت پروسههای مرده (dead processes) جلوگیری میکند. این فرآیند با توابع
wait() یا waitpid() در سطح والد شبیهسازی میشود، اما init آن را به صورت خودکار انجام میدهد.در systemd فرایند reaping پیشرفتهتر است و از cgroups (control groups) برای نظارت بر منابع استفاده میکند، در حالی که در SysVinit، init به طور مداوم SIGCHLD را هندل میکند تا orphans را مدیریت کند. بدون reaping، orphans میتوانند به zombie processes (پروسههای زامبی) تبدیل شوند، که ورودی در process table اشغال میکنند بدون مصرف منابع، اما در مقیاس بزرگ باعث PID exhaustion میشود
🔖 تفاوت با Zombie Reaping
توجه: orphan reaping را با zombie reaping (جمعآوری پروسههای زامبی) اشتباه نگیرید: zombie زمانی است که فرزند قبل از والد خاتمه مییابد، اما والد وضعیت آن را نخوانده و پروسه در حالت "زامبی" (terminated but entry retained) میماند. والد با
wait() در حقیقت zombie را reap میکند.اگر والد خاتمه یابد، init zombie را به عنوان orphan مدیریت و reap میکند. هر دو reaping برای حفظ پایداری سیستم (system stability) و جلوگیری از resource leaks ضروریاند، اما orphans در حال اجرا هستند، در حالی که zombies مردهاند.
🔖 شناسایی و جلوگیری از Orphan Processes
برای شناسایی orphans، از دستور
ps -eo pid,ppid,cmd | grep '^[ ]*[0-9]*[ ]*1'
استفاده کنید
خروجی پروسههایی با PPID=1 (غیر از init خود) را نشان میدهد. در سطح برنامهنویسی، برای جلوگیری از orphans، والد باید از
wait() یا handler برای SIGCHLD استفاده کند تا فرزندان را قبل از خروج خود خاتمه دهد. در محیطهای کانتینری (مانند Docker)، init-like پروسهها (مانند tini) برای reaping orphans استفاده میشوند تا PID 1 را شبیهسازی کنند.در نهایت، orphan reaping یک مکانیسم resilient در لینوکس است که تضمین میکند سیستم از پروسههای بیسرپرست آسیب نبیند و منابع بهینه مدیریت شوند، به ویژه در محیطهای سرور و ابری با پروسههای متعدد.
🔘 @linux_exp | #linux #orphan_reaping #init
🔥4❤2⚡1👍1
⚡️ aria2 ابزار سبک ولی قدرتمند برای دانلود
aria2 یه ابزار خط فرمانه که برای دانلود از پروتکلهای مختلف مثل HTTP ،FTP ،BitTorrent و Metalink طراحی شده.
مزیتش اینه که میتونه فایل رو به چند بخش تقسیم کنه و هر بخش رو همزمان از چند اتصال مختلف بگیره؛ همین باعث میشه دانلودها سریعتر و پایدارتر انجام بشن.
یک نمونۀ ساده:
اگه بخواید از تمام ظرفیت اینترنت استفاده کنید، میتونید تعداد اتصالها و بخشها رو زیاد کنید و در عین حال تلاش نامحدود برای ادامۀ دانلود در صورت قطع ارتباط فعال کنید:
برای وقتی که چند تا لینک دارید، کافیه همه رو خط به خط تو فایلی مثل
aria2 پشت صحنۀ خیلی از ابزارهای دانلودمثل uGet، Motrix، Persepolis (در نسخههای قدیمی)، و حتی بعضی مدیرهای دانلود گرافیکی سبک برای سرور یا NAS استفاده شده.
تو دنیای لینوکس هم معمولاً داخل اسکریپتهای خودکار یا نصب بستهها ازش استفاده میشه چون دقیق، قابلاسکریپتنویسی و کممصرفه.
🔘 @linux_exp | #linux #commandline #tools
aria2 یه ابزار خط فرمانه که برای دانلود از پروتکلهای مختلف مثل HTTP ،FTP ،BitTorrent و Metalink طراحی شده.
مزیتش اینه که میتونه فایل رو به چند بخش تقسیم کنه و هر بخش رو همزمان از چند اتصال مختلف بگیره؛ همین باعث میشه دانلودها سریعتر و پایدارتر انجام بشن.
یک نمونۀ ساده:
aria2c https://example.com/file.iso
اگه بخواید از تمام ظرفیت اینترنت استفاده کنید، میتونید تعداد اتصالها و بخشها رو زیاد کنید و در عین حال تلاش نامحدود برای ادامۀ دانلود در صورت قطع ارتباط فعال کنید:
aria2c \
--max-connection-per-server=16 \
--split=16 \
--max-tries=0 \
https://example.com/file.iso
🔹 --max-connection-per-server تعداد اتصالهای همزمان به سرور
🔹 --split تعداد بخشهایی که فایل به اون تقسیم میشه
🔹 --max-tries=0 یعنی در صورت خطا تا بینهایت بار تلاش مجدد انجام بشه
برای وقتی که چند تا لینک دارید، کافیه همه رو خط به خط تو فایلی مثل
links.txt بنویسید و اجرا کنید:aria2c --input-file=links.txt
aria2 پشت صحنۀ خیلی از ابزارهای دانلودمثل uGet، Motrix، Persepolis (در نسخههای قدیمی)، و حتی بعضی مدیرهای دانلود گرافیکی سبک برای سرور یا NAS استفاده شده.
تو دنیای لینوکس هم معمولاً داخل اسکریپتهای خودکار یا نصب بستهها ازش استفاده میشه چون دقیق، قابلاسکریپتنویسی و کممصرفه.
وقتی با aria2 دانلود میکنید، کنار هر فایل در حال دانلود یه فایل موقت با پسوند .aria2 ساخته میشه. این فایل شامل اطلاعات پیشرفت دانلود، بخشهای دریافتشده و وضعیت اتصالاته.
اگه دانلود به هر دلیلی قطع بشه (مثلاً اینترنت قطع شه یا سیستم ریستارت شه)، تا زمانی که فایل .aria2 حذف نشده باشه، میتونید همون دستور قبلی رو دوباره اجرا کنید تا دانلود از همونجا ادامه پیدا کنه.
🔘 @linux_exp | #linux #commandline #tools
🔥7❤3⚡1👏1
🔹 آشنایی با jq — چاقوی سوئیسی برای JSON!
اگه زیاد با فایلها یا خروجیهای JSON سر و کار دارین، احتمالاً میدونین خوندن و فیلتر کردنش با ابزارهای معمول مثل grep یا awk زیاد جالب از آب در نمیاد!
اینجاست که jq به دردتون میخوره. jq یه ابزار خط فرمانه که میتونه دادههای JSON رو بخونه، فیلتر کنه، تغییر بده یا حتی قالبشونو عوض کنه.
مثلاً با یه دستور ساده میتونین فقط یه فیلد خاص رو از یه فایل JSON بزرگ بیرون بکشین:
یا حتی صرفاً فقط دادهها رو مرتب و رنگی چاپ کنین تا راحتتر خونده بشن:
برای کسایی که با APIها، دادههای ساختاریافته یا اسکریپتهای خودکار کار میکنن، jq یه ابزار واقعاً نجاتدهندهست.
🔘 @linux_exp | #linux #commandline #tools
اگه زیاد با فایلها یا خروجیهای JSON سر و کار دارین، احتمالاً میدونین خوندن و فیلتر کردنش با ابزارهای معمول مثل grep یا awk زیاد جالب از آب در نمیاد!
اینجاست که jq به دردتون میخوره. jq یه ابزار خط فرمانه که میتونه دادههای JSON رو بخونه، فیلتر کنه، تغییر بده یا حتی قالبشونو عوض کنه.
مثلاً با یه دستور ساده میتونین فقط یه فیلد خاص رو از یه فایل JSON بزرگ بیرون بکشین:
cat data.json | jq '.users[].name'
یا حتی صرفاً فقط دادهها رو مرتب و رنگی چاپ کنین تا راحتتر خونده بشن:
cat data.json | jq
برای کسایی که با APIها، دادههای ساختاریافته یا اسکریپتهای خودکار کار میکنن، jq یه ابزار واقعاً نجاتدهندهست.
در ضمن اگه میخواستین سریعتر عمل کنین میتونین جاش jaq بزنین
🔘 @linux_exp | #linux #commandline #tools
👍4🔥4🥰1😁1🍌1