انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: رسول سعیدنژاد در 31 اردیبهشت 1395، 11:27 بظ
-
سلام سلام.
خیلی وقته اینجا سؤال نپرسیدم :D
آقا ما (یعنی من و کانکیم ;D ) به یه مشکلی برخورد کردیم. یعنی مشکل که نیست. فقط برام مبهمه.
باز داستان سراییم شروع شد. میگی نه؟!:
من نیاز به یک کانکی دارم که باید ۱۵ دقیقه زمان رو برعکس با یک نوار نشون بده. که مثلا بگه ۱۵ دقیقه وقت داری و هر چندلحظه یک بار اون نواره شروع کنه به پر شدن که مشخص بشه زمان داره میره! خب کانکی هیچ گزینه ی خاصی برای نشون دادن زمان در پروگرس بار نداره. یا من ندیدم! برای همین تصمیم گرفتم که یک فایل بسازم و اونو ماونت کنم و بعد توش چندثانیه ای یک بار فایل بنویسم و کانکی اون پارتیشن رو با fs_bar نشون بده. اینجوری طی برنامهریزیای که انجام دادم، سر ۱۵ دقیقه اون فایلی که ماونتش کردم، حجمش پر میشه و به هدفم میرسم. حالا مشکل چیه؟ مشکل اینه وقتی من فرضا یه فایل ۳۰ مگی میسازم. سیستم ۳۰ مگش رو خالی درنظر نمیگیره و نزدیک ۲۵ مگش رو خالی درنظر میگیره و وقتی به ۲۵ رسید، میگه که ۱۰۰ درصد پر شده. ولی کانکی همون ۳۰ مگ رو درنظر میگیره توی نوارش و می بینی حجم کاملا پر شده ولی کانکی هنوز نوارش جا داره که بره ولی دیگه نمیره و همون جا می ایسته.
اینم اسکرین شاتش: الان دیگه بیشتر از این جلو نمیره چون پر شده!
http://s6.picofile.com/file/8252234668/2016_05_20_232319_1023x49_scrot.png (http://s6.picofile.com/file/8252234668/2016_05_20_232319_1023x49_scrot.png)
اومدم مراحلش رو با دقت بیشتری نگاه کردم. خروجیشون رو براتون میذارم:
اول با dd یه فایل میسازیم:
dd if=/dev/zero of=test.img bs=1024 count=30000که میگیم یعنی یه فایل ۳۰ مگی بسازه. (۳۰۰۰۰×۱۰۲۴ بایت که میشه ۳۰مگابایت)
خروجیش این میشه:
30000+0 records in
30000+0 records out
30720000 bytes (31 MB) copied, 0.255369 s, 120 MB/s
خب میگه ۳۰۷۲۰۰۰۰ بایت نوشته و شده ۳۱ مگابایت (درصورتی که هر ۱۰۲۴ بایت رو ۱ کیلوبایت درنظر بگیریم، باید بشه ۳۰ مگ نه ۳۱!)
حالا حجمش رو نگاه میکنیم:
-rw-rw-r-- 1 ubuntu ubuntu 30M May 20 23:15 test.imgجالب شد! اونجا زد ۳۱ اینجا زده ۳۰
ولی حجم بایتیش یکیه. یعنی:
-rw-rw-r-- 1 ubuntu ubuntu 30720000 May 20 23:15 test.img
خب حالا میام فرمتش میکنم تا بتونم ماونتش کنم.
sudo mkfs.ext4 test.img
Creating filesystem with 30000 1k blocks and 7520 inodes
Superblock backups stored on blocks:
8193, 24577
Creating journal (1024 blocks): done
خب میگه بلاک هاش رو ۱۰۲۴ درست کرده. یعنی دقیقا همون bs=1024یی که جلوتر انتخاب کرده بودم. ۳۰۰۰۰ رو هم طبق همون ۳۰۰۰۰ dd حساب کرده.
حالا ماونتش میکنیم و خروجی df رو مینگریم:
Filesystem Size Used Avail Use% Mounted on
dev/loop1 28M 365K 25M 2% /mnt/اول زد ۳۱. بعد نشون داد ۳۰. بعد الان که ماونت شده میگه ۲۸مگ! و بعد جالبه که ۳۶۵ کیلوش پر هست خود به خود درصورتی که حجم lost+found دقیقا12K هست.
و از همه جالب تر میگه کلا ۲۵ مگ میشه توش ریخت.
اینجاس که کانکی فقط ۲۵ مگش رو میتونه نوار پر کنه ولی داره حجم ۲۸ مگ یا حتی ۳۰ مگ رو از کل نوار نشون میده.
چرا اینجوریه؟
باید چکار کنم که بشه تا خرخره پرش کرد؟ چرا ۳۱ و ۳۰ و ۲۸ و ۲۵؟
به خاطر dd هست؟ به خاطر ext4 هست؟ یا آپشنی در دستور mount باید زده بشه تا اینجوری ماونت نشه؟
-
سلام به روی ماهت :دی
رسول جان به جای ۳۰۰۰۰ از ۳۰۷۲۰ استفاده کن ببین اختلافا چقدر میشه، این دقیقا ۳۰ مگه!
-
بیا امیر جان. اینم خروجی دستورات قبلی با عددی که دادی ;)
dd if=/dev/zero of=test.img bs=1024 count=30720
30720+0 records in
30720+0 records out
31457280 bytes (31 MB) copied, 0.225613 s, 139 MB/s
اینم حجمش در دو حالت:
-rw-rw-r-- 1 ubuntu ubuntu 31457280 May 21 13:54 test.img
-rw-rw-r-- 1 ubuntu ubuntu 30M May 21 13:54 test.img
فرمت کردنش:
Creating filesystem with 30720 1k blocks and 7680 inodes
Filesystem UUID: 0cc5ad19-67e4-4f45-ac34-d39d4bd0a897
Superblock backups stored on blocks:
8193, 24577
Creating journal (1024 blocks): done
اینم حجمش با df:
Filesystem Size Used Avail Use% Mounted on
/dev/loop1 29M 371K 26M 2% /mnt
بازم شد به ترتیب ۳۱ و ۳۰ و ۲۹ و ۲۶.
فقط جای ۲۸ شد ۲۹، جای ۲۵ شد ۲۶
;D
-
البته من خودم این احساس بهم دست داده که واسه همهی پارتیشن ها اینجوری هست. حالا چرا کانکی اونارو اینجوری نشون نمیده؟ چون حجم اونا مثلا ۱۰۰ گیگ! یا ۵۰ گیگ هست و وقتی پر میشه، نوار تا حد زیادی به آخرش میرسه و نشون میده. ولی چون اینجا حجم کم هست. اون فاصلهی بین نوار رنگی با ته خط بیشتر احساس میشه. :)
الان با یه فایل ۳ گیگی تست کردم. هر ۳ گیگش رو پُر کردم. نوار پیشرفت عملکردش بهتر شد.
http://s7.picofile.com/file/8252319026/2016_05_21_141848_1023x46_scrot.png (http://s7.picofile.com/file/8252319026/2016_05_21_141848_1023x46_scrot.png)
البته بازم هر ۳ گیگ رو نشد پر کنم. اینجوری زده:
/dev/loop1 2.9G 2.8G 0 100% /mnt
این دفعه ۲٫۹ گیگ زده که ۲٫۸ گیگش رو کلا میتونم پُر کنم.
احتمالا برای همینه که پارتیشن های ۱۰۰ گیگیم موقع پُر شدن کانکی اونارو تا آخر رنگی نشون میده. چون مقیاس بزرگ میشه. واسه همین اون مقدار خالیش برای ۱۰۰ گیگ به چشم نمیاد.
حالا موضوع اینه که چرا اصلا کانکی اینجوری نشونش میده؟
به نظرم:
یا باید کاری کرد که این پارتیشن ها عدداشون تغییر کنه و جوری که ما میخوایم تبدیل بشن
یا باید کاری کرد که کانکی یه جوری فقط فضایی که میشه پُر کرد رو نشون بده نه فضای کلی رو
یا باید کلا برای این پروگرس بار ۱۵ دقیقه ای از یه روش دیگه استفاده کرد که اون بتونه تا آخر نوار رو پُر کنه.
یا باید همین جوری که هست، باهاش کنار بیام. حالا خیلی چیز مهمی نیست. فقط مهم این بوده که بفهمم ۱۵ دقیقه دیگه بیشتر وقت ندارم.
ولی خب هم برام سوال شد که چرا حجم ها اینجوری نشون داده میشن که کانکی بیاد مارو تو دردسر بندازه. شاید طبیعی باشه از نظر مقداردهی توی حجم فایل سیستم و پارتیشن ها و ...
-
سلام آقا رسول :)
تاجایی که من فهمیدم می خواید یه بار تو کانکی باشه که هر ۱۵ دقیقه ی بار پر بشه ؟؟!! ???
من یه حرکتی زدم باید کمک کنه 8)
البته ورژن بتا هستش و مشکلی داشت به بزرگی خودتون ببخشید ;D
یه اسکریپت به نام bar.sh ساختم اینا توشن:#!/bin/bash
while true; do
for i in {0..100}; do
echo "#!/bin/bash
echo $i" > bar-num.sh
chmod +x bar-num.sh
sleep 9
done
done
و درفایل کانکی اینو اضاف کردم :${execbar /home/badboy17/bar-num.sh}
برا من که خوب کار کرد ، ذره ذره تا 900 ثانیه یا 15 دقیقه و بعد از اول \\:D/
به هرحال امیدوارم کمک کنه :D
-
ممنون مسعودجان
ولی واسه من کار نکرد. اسکریپت اول رو ران کردم و اسکریپت دوم رو هم گذاشتم توی کانکی. کانکی یه مربع کوچک ران کرده که هیچ اتفاقی واسش نمی افته. ولی اگه هرچند لحظهای یک بار اسکریپت دوم رو cat کنی متوجه میشی که ذره ذره echo 1، echo 2 و ... رو می نویسه. ولی توی کانکی هیچ اتفاقی نمی افته.
بعد من نمیخوام همش ۱۵ دقیقه باشه. فقط یک بار میاد و ۱۵ دقیقه پروگرس بار پر میشه و به آخر میرسه و بعد بسته میشه. :)
-
نه اوکی شد. میواس یه offset هم کنارش بذارم برای اینکه نوار رو تا آخر صفحه نشون بده. fs_barخودش تنظیم طول و عرض رو داره. برای این باید خودم تنظیم کنم.
اونوخ یه چیزی؟ الان این عرضش رو فقط شد تغییر بدم و تا ۱۰۱۲ (که فیکس بشه) رسوندمش. ولی ارتفاعش رو چجوری تغییر بدم؟ این ارتفاعش زیاد میشه. :)
-
پیداش کردم:
default_bar_size
باید اینو تغییر داد. ولی خب کانکی رو با سینتکس lua نوشتم، اونم اینو قبول نمی کنه. مجبور شدم کلا سینتکس lua رو پاک کنم و مثل کانکی های معمولی بنویسم تا بتونه محاسبهش کنه.
ممنون :)
راه افتاد. فقط با اجازهت باید تغییراتی توش بدم تا مناسب کارم بشه. :)
-
خب مشکلم با نشون ندادن کامل پروگرس بار توی کانکی حل شد.
ممنون از مسعود جان بابت ایدهی execbar
اینم لینک:
https://github.com/rasoolsn/interactive-script/ (https://github.com/rasoolsn/interactive-script/)
کامیت های قبلیم مربوط به همون ماونت شدن فایل ۳۰ مگی و پر کردنش طی ۱۵ دقیقه با ddهست که کانکی نشون میداد.
الان روش مسعودجان استانداردتر حساب میشه یه جورایی. :)
خب حالا برمیگردیم سر جریان سوال اول تاپیک. دلیل اینکه حجم با یه سایز متفاوت ساخته میشه و مقدار نسبتا زیادی (از ۳۰ مگ وقتی ۵ مگش میره، خب یه مسئلهای باید وجود داشته باشه) رو از دسترس خارج میکنه، چیه؟