نوشته‌های ترمینالی
2.62K subscribers
424 photos
12 videos
32 files
2.25K links
Download Telegram
#terminal
دستور df یا disk free
این دستور تقریبا مشابه free هست قراره بگه چقدر فضای خالی داریم. با این تفاوت که free میاد ram (و swap) رو بررسی می‌کنه ولی df فضای دیسک‌ها رو بررسی می‌کنه.

اگر به تنهایی استفاده کنید خیلی اطلاعات معنی‌داری نشون نمی‌ده ولی مثل همیشه اگر بخوایم به صورت "آدم‌وار" خروجی بده کافیه با سوییچ -h استفاده کنیم که از واحد گیگابایت و مگابایت و .. استفاده کنه و بهتر معنی بده.
پس تا اینجا:

df
پارتیشن‌های mount شده‌ی سیستم به همراه اطلاعاتِ مقدار فضای استفاده شده و فضای پر و درصد پر بودن.

df -h
مثل df ولی به صورت "آدم‌وار"


اما این دستور (مخصوصا اگر از snap استفاده کنید) یه سری پارتیشن اضافی می‌بینید که براتون خیلی معنی دار نیست.
اولین دلیلش اینه که خود لینوکس (یا احتمالا هر سیستم‌عامل دیگه‌ای که دارید) یه سری پارتیشن اضافی هم mount می‌کنه مثلا یکی از نوع tmpfs یعنی این مدلی که با خاموش شدن سیستم محتویاتش پاک شه. واضحه که این پارتیشن عادی نیست و پر شدن و مدیریتش هم برامون خیلی اهمیتی نداره. یا مثلا snap میاد برای ایزوله کردن هر برنامه اون رو توی یه پارتیشن مجزا قرار میده و اگر پکیج‌های اسنپی زیادی نصب داشته باشید کلی پارتیشن برای برنامه‌های مختلفتون می‌بینید.
راه حل چیه؟
من خودم به شخصه برام فقط مهمه پارتیشن‌های روی دیسک‌های واقعیم مثل
/dev/sda1
/dev/sdb1
/dev/sdb2
چقدرشون پره و باقیش مهم نیست. برای همین از grep استفاده می‌کنم.
که دستور نهایی به این شکل در میاد:
df -h | grep /dev/sd
نمونه استفاده، مثلا من اینجا از ۲۱۱ گیگ پارتیشن اصلیم، ۱۷ درصد معادل ۳۳ گیگ رو پر کردم.
https://itsfoss.com/aur-arch-linux/
این aur جزو چیز های دوست داشتنیِ آرچه، ولی نمیشه پیشنهادش داد به کسی چون با ریسک خودتونه همه چی.
به هر حال من دوستش دارم و زیاد ازش استفاده می‌کنم.
شاید شنیده باشید که توی لینوکس همه چی فایله، می‌خوام یه مقدار بازش کنم و به یه سری سوالامون جواب داده بشه.

توی لینوکس همه‌چیز فایله یا به صورت دقیق‌تر همه‌چیز رابطی به شکل فایل دارد. این همه‌چیز یعنی چی دقیقا؟ منظور دیسوایس‌های متصل به سیستم مثل موس و کیبورد، تنظیمات انجام شده روی سیستم و ...
چه فایده یا اهمیتی داره؟ فایده‌ش اینه که اگر بخوایم با یک دیوایس کار کنیم با همون دستورات کار با فایل و خوندن و نوشتن فایلی که بلدیم می‌تونیم کار کنیم و لازم نیست کار متفاوت و عجیبی کنیم. مثال معروفش اینه که برای اینکه اطلاعات پردازنده رو دربیاریم، یه فایل برای اینکار داریم به نام
/proc/cpuinfo
و اگر محتویاتش رو بخونیم، اطلاعات پردازنده رو درمی‌آریم.
همچنین برای مموری، به
/proc/meminfo
دسترسی داریم.

این فایل‌ها توی چند تا پوشه هستند مثلا دیوایس‌ها توی پوشه dev/ هستند، اطلاعات کرنل و داستان‌های زمان اجرا مثلا پروسس‌های باز توی proc و sys هستند.

آیا هاردها هم خودشون فایل هستن؟
بله! توی پوشه dev یه سری فایل مربوط به دیسک‌ها و پارتیشن ها داریم که مثلا
/dev/sda
میشه هارد اول
و مثلا
/dev/sda1
میشه اولین پارتیشن روی هارد اول

آیا فایل‌ها روی سیستم جا گرفتن؟
فایل های معمولی که روی سیستم جا گرفتن مثلا فایل های پوشه هوم کاربر و فایل های binary اجرایی و غیره ولی فایل های خاص مثل پوشه /dev و /proc و /sys اصولا روی هارد نیستن و زمانی که به محتواشون نیاز باشه کرنل اون رو هندل می‌کنه. (البته در مورد dev یه چیزایی هم گویا روی هارد نوشته می‌شه ولی ایده اصلی همونه که گفتم)

آیا کار با این فایل‌ها سربار IO داره؟
بیایید برای جواب دقیق‌تر به این سوال روند کار رو ببینیم، فرض کنیم یه برنامه سی داریم که می‌خواد از پوشه proc، فایل cpuinfo رو بخونه. برای این خوندن باید به کرنل درخواست بده، تا اینجا مشابه خوندن فایل از روی دیسک هست. اما کرنل می‌بینه که فایلی که خواستیم یه پارتیشن mount شده از روی دیسک نیست، بلکه یه فایل از نوع proc هست، پس میاد اطلاعاتی که لازم داره رو می‌سازه و به عنوان محتویات فایل نشون می‌ده. پس سربار از نظر صدا کردن توابع کرنل داره ولی سربار خوندن دیسک رو نداره.

در این بین یه سری دیوایس خاص هم وجود دارند که این دیوایس‌ها وجود خارجی ندارند.
مثلا dev/zero/ یه فایله که هرمقدار ازش بخونید بهتون 0 بر می‌گردونه. لازم به ذکره که نمی‌تونید همه‌ی فایل رو بخونید چون تموم نمی‌شه فقط می‌تونید بر اساس نیاز با یه ابزاری (مثلا head) خط های اولش رو (به اون اندازه که نیاز دارید) بخونید.

۲ تا فایل هم برای تولید random داریم که dev/random/ و dev/urandom/ هستند که فرقشون اینه که اگر عدد رندومی وجود نداشته باشه random همچنان عدد شبه رندوم می ده ولی urandom به صورت blocking صبر می‌کنه تا عدد رندوم تولید بشه. (در مورد تولید عدد رندوم و آنتروپی می‌تونید بخونید.)


اما فایل محبوبم:
/dev/null
این فایل چیزی خروجی نمی‌ده در عوض شما می‌تونید چیز‌هایی که لازم ندارید رو داخل این فایل بریزید مثلا می‌تونید خروجی دستوری که رو که نمی‌خواید نمایش داده بشه با دستور
ls > /dev/null
بریزید دور.
(برای اینکه stderr هم بریزید دستور
ls > /dev/null 2>&1
رو بزنید)


منابع:
https://unix.stackexchange.com/questions/119648/redirecting-to-dev-null
https://unix.stackexchange.com/questions/324209/when-to-use-dev-random-vs-dev-urandom
https://unix.stackexchange.com/questions/188886/what-is-in-dev-proc-and-sys
https://en.wikipedia.org/wiki/Everything_is_a_file
👍1
همینقدر ساده
سرعت دانلود منفی هم ببینید :)‌
Either write something worth reading or do something worth writing.
    - Benjamin Franklin
یه سایته که خیلی منطقی در مورد این مشکل اعداد ممیز شناور توضیح داده :))
https://0.30000000000000004.com/
خب این مطلبم منتشر شد:)))

https://javacup.ir/dont-use-float/
زبان C خوبی‌های مختلفی داره، ولی به نظر من کار با رشته‌ٔ آسان جزوشان نیست!
اگر بخواهیم رشته در C ورودی بگیریم چه راه‌هایی وجود دارد و کدام توصیه می‌شود؟
https://vrgl.ir/ejdUl
معرفی مختصر مفید elm
https://guide.elm-lang.org/

منم اضافه کنم که باهاش فرانت میزنن و به js کامپایل میشه و فانکشناله و زیباست.