ورود

View Full Version : چیزهای تازه ای که هر روز یاد میگیرم.



rezaTavak
دوشنبه 14 آبان 1386, 11:55 صبح
سلام

نمی دانم این عنوان مناسب بود یا نه اما می خواهم هر چیزی که تازه یاد گرفتم و به نظرم جالب آمد در اینجا بنویسم.

اما امروز:

errorlevel چیست؟
برنامه ها هنگام خروج می توانند یک کد خروجی به سیستم عامل تحویل دهند. اگر این کد صفر باشد یعنی خروج عادی اما اگر عددی دیگر باشد (صفر تا ۲۵۵) یعنی خطا.

در داس خیلی وقت پیش این نکته را می دانستم و با آن کار میکردم اما در لینوکس (bash) نمی دانستم.

تا اینکه امروز دستور for را یکبار دیگر نگاه می کردم و این را یاد گرفتم. بهتر است با یک مثال پیش برویم:

اگر شما با دستور ls فایلی را بخواهید پیدا کنید و آن فایل وجود نداشته باشد عدد یک به عنوان نتیجه بر گردانیده می شود:



root@srv1:/# ls a
ls: a: No such file or directory
root@srv1:/# echo $?
1
root@srv1:/#


توجه کنید دستور بعدی که اجرا شود errorlevel از بین می رود.

تذکر: نمی دانم واژه درست در لینوکس errorlevel است یا نه من واژه ویندوزی (داس) را نوشتم. exit status در متن خودش نوشته است.

در ویندوز دستور از راهنمای ویندوز if را ببینید مثال:


if %errorlevel% geq 1 echo error

tux-world
سه شنبه 15 آبان 1386, 08:42 صبح
سلام استاد ! راستش تاپیک خیلی باحالی زدین . من هم می خوام مشارکت کنم باهاتون. اجازه میدین ؟

rezaTavak
سه شنبه 15 آبان 1386, 11:26 صبح
سلام خواهش می کنم.

اما امروز:

اگر می خواهید لیست کل فایلهای شما در یک متغیر ذخیره شود با دستور:


LISTFILES="`ls -1`"


اینکار را انجام دهید. نام فایلها با فاصله در این متغیر قرار می گیرد.

کلا برای قرار دادن نتیجه یک دستور در متغیر از این راه می توانید استفاده کنید. مثلا ارسال محتویات یک فایل به متغیر با دستور زیر:


ls -1 > __LS__1


LISTFILE2="`cat __LS__1`"

دستور اول مد نظر من نیست فقط خواستم لیست فایلها در یک فایل قرار گیرد.
به دستور دوم نگاه کنید که چگونه محتویات یک فایل را به داخل متغیر می ریزد.


مبحث دوم:
دستور for
در داس خیلی از این دستور خوشم می آمد نحوه کار آن در ویندوز و داس:


for %f in (*.*) do echo %f

که %f متغیر است و عبارت داخل پرانتز لیست فایلهایی است که کاری می خواهید با دستور بعد از do روی آنها انجام دهید.


اما در لینوکس:


for INDEX in `ls -1` ; do echo $INDEX ; done
[code]
و روش دوم:
[code]
for (( I=0 ; I < 10 ; I++)); do echo $I ; done


می بینید که مانند بسیاری از زبانهای برنامه نویسی foreach و for شبیه C دارد.

البته می توانید هر چقدر می خواهید دستور بین do و done قرار دهید و با ; از هم جدا کنید.




راستی اسم کاراکتر ` چیست؟ (کاراکتر زیر ESC در صفحه کلید که با shift کاراکتر ~ تایپ می شود.) (فکر کنم کوتیشن شروع باشد و ' کوتیشن انتهایی یعنی در یک نقل قول اول می آید.)

tux-world
سه شنبه 15 آبان 1386, 17:26 عصر
آقای توکل به مورد جالبی اشاره کردن .:گیج:
چند هفته پیش درگیر موضوع نمایش تمام فایلهای مخفی روی هارد دیسکم بودم . به موارد جالب بر خورد کردم که شدیدا بهم کمک کرد .
به عنوان مثال دستور زیر تمام هارد دیسک رو میگرده البته به غیر از پارتیشن های ویندوز که مانت شده :


ls -aR / | grep '^\.'
برای اینکه فقط داخل یک شاخه رو بگردید از این دستور استفاده کنین


ls -aR | grep '^\.'
این دستور شاخه رو مانند درخت تا انتها طی می کنه و می گرده .
تو این دستورات کاراکتر a که همون all هستش و R هم به صورت بازگشتی عمل می کنه که اگه شاخه ای داخل شاخه باشه اون رو هم بگرده که معادل recursive هستش .
ممکنه بپرسید که grep اینجا چیکار میکنه . اون هم واسه این هستش که وقتی دستور ls رو شما اجرا می کنین یه خروجی میده همون که آقای توکل اول تاپیک فرمودن . اون رو مقایسه می کنه و اگه موردی که پیدا شد با داخل کوتیشن برابر بود نمایش میده

tux-world
سه شنبه 15 آبان 1386, 17:34 عصر
من انگلیسیم تو مکالمه و املایی یه خورده ضعیفه برای همین به مورد جالب استثنایی برخورد کردم که تو سایتهای ایرانی هم بحث شده بود . شما مثلا می تونین با ربات یاهو مسنجر چت کنین ولی خوب تو لینوکس حال نمیده . برای همین به صورت اتفاقی تو یکی از سایتهای انگلیسی که داشتم می گشتم به مورد جالبی بر خورد کردم که بتونم باهاش چت کنم یه خورده مکالمم و نوشتاریم بره بالا.
برای اینکه با یه ربات چت کنین این دستور رو تو خط فرمان اجرا کنین .


telnet the-funk.net 7000

البته باید به اینترنت وصل باشین . ببینین که چقدر حال میده با یه ربات چت کنین .

oxygenws
سه شنبه 15 آبان 1386, 17:39 عصر
راستی اسم کاراکتر ` چیست؟ (کاراکتر زیر ESC در صفحه کلید که با shift کاراکتر ~ تایپ می شود.) (فکر کنم کوتیشن شروع باشد و ' کوتیشن انتهایی یعنی در یک نقل قول اول می آید.)
بکتیک یا backtick (http://en.wikipedia.org/wiki/Backtick) یا احیانا grave accent.
تو کتاب های کامپیوتری backtick بیان میشه.

tux-world
سه شنبه 15 آبان 1386, 17:39 عصر
دستور wget واقعا شیرین ترین دستوری هستش که وقتی کانکت میشم بهم حال میده.
چند ماه پیش داشتم برای دانلود کامل سایت هزاردستان اینترنت رو می گشم . اون سایت مقاله های جالبی داره می خواستم کلا دانلود کنم بشینم بخونم .
نرم افزارهای جالبی رو دیدم ولی هیچ کودوم مثل دستور زیر منو حیرت زده نکرده بود . چقدر لذت می برم از اینکه با لینوکس کار میکنم . :بوس:


wget WEBSITE -k -c -r -p

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

tux-world
سه شنبه 15 آبان 1386, 17:43 عصر
من اصول آدم بسیار مشکل داری هستم . یه سیدی صوتی mp3 بهم داده بودن که کپی نمیشد و سی دی مشکل داشت .
تو ویندوز که عمرا نشد حتی با نرم افزاری مخصوصش . اومدم لینوکس ببینم چیزی برای اینکار سراغ داره یا نه . البته نه که نمیشد حتما وجود داشت .
آخرش پیداش کردم .


ddrescue

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

rezaTavak
سه شنبه 15 آبان 1386, 17:53 عصر
یک اسکریپت برای تبدیل 3gp به avi:


#!/bin/bash
ffmpeg -i $1 -f avi -vcodec xvid -acodec mp3 -ar 22050 $1.avi

tux-world
سه شنبه 15 آبان 1386, 18:00 عصر
برای استخراج صدا از flv.(یا YouTube) که فایل تصویری محصول Macromedia است از دستور زیر استفاده کنید :


mencoder -of avi -nosound -ovc copy in.flv -o out_just_vid.avi
برای تبدیل فایل flv که دانلود کردین به 3gp نیز از دستور زیر استفاده کنین


mencoder Filename.flv -nosound -ovc lavc -lavcopts vcodec=mpeg4 -vop expand=176:144,scale=176:-2 -o temp.avi -ofps 15

و در نهایت اگه مشکلی با پخش فایل flv. داشتین دستور زیر و به کار ببرید


mplayer -dumpaudio in.flv
این تاپیک داره رقابتی میشه ...:قهقهه:

tux-world
سه شنبه 15 آبان 1386, 18:04 عصر
یه مدت پیش دوستی ازم سوال کردم چطوری می تونم دستگاههایی که به USB وصل هستن رو ببینم . از استاد گوگل رخست گرفتمو و ایشون فرمودند :لبخند: :


lsusb

tux-world
سه شنبه 15 آبان 1386, 18:13 عصر
این هم دیکشنری آنلاین . دیگه چی می خوایین ؟ هی بیایین بگین لینوکس نرم افزارهاش خیلی کمه :D


curl dict://dict.org/d:word

به جای word کلمه مورد نظرتون رو بنویسید (البته بعد از اتصال به اینترنت)

tux-world
سه شنبه 15 آبان 1386, 20:19 عصر
برای دانلود فایل ویدویی YouTube از خط فرمان می تونین از دستور زیر استفاده کنین .
این بسته رو باید از مخازن توزیع خود نصب و یا دانلود و نصب کنین :


#youtube-dl

usage: youtube-dl [options] video_url

options:
-h, --help print this help text and exit
-v, --version print program version and exit
-u USERNAME, --username=USERNAME
account username
-p PASSWORD, --password=PASSWORD
account password
-o FILE, --output=FILE
output video file name
-q, --quiet activates quiet mode
-s, --simulate do not download video

alux
چهارشنبه 16 آبان 1386, 16:20 عصر
فکر کنم اسم این تاپیک رو میگذاشتید

یاد گرفته هایم در شل اسکریپت بهتر بود

tux-world
چهارشنبه 16 آبان 1386, 16:34 عصر
خوب این تاپیک فقط که دستورات ترمینال ( نه شل اسکریپت) نخواهد بود چون ترمینال خیلی زیاد حال میده بیشتر راجع بهش بحث میشه .

tux-world
جمعه 18 آبان 1386, 10:46 صبح
http://root:8080/server/images/header_title_4.gifWebHTTrack Website Copier

امروز اتفاقی به مورد جالبی برخورد کردم . وقتی داشتم منوهای کی دی ئی رو تمیز و خوش دستشون می کردم با این آدرس لینک تو فایرفاکس آشنا شدم :
از این آدرس استفاده کنید : http://root:8080/server/index.html

tux-world
جمعه 18 آبان 1386, 10:50 صبح
وقتی داشتم راهنمای pppconfig رو می خوندم متوجه شدم اون هم رابط گرافیکی داره .


pppconfig --gdialog

rezaTavak
یک شنبه 20 آبان 1386, 07:44 صبح
با دستور hostname میشه نام سرور را مشاهده و تغییر داد.

البته /etc/hostname محل ذخیره این اسم است.

اما موضوع این است که با تغییر نام سرور دیگر هیچ برنامه گرافیکی کار نخواهد کرد (برنامه جدیدی که گرافیکی باشد باز نخواهد شد.)

tux-world
یک شنبه 20 آبان 1386, 11:23 صبح
میشه بیشتر توضیح بدین که چرا اجرا نخواهد شد ؟ یعنی تمام بسته های گرافیکی به نام هاست وابسته هستن ؟ :متفکر:

حامد مصافی
یک شنبه 20 آبان 1386, 13:04 عصر
نه بسته های گرافیکی؛ خود xserver روی دامنه اجرا میشه و وقتی نام برنامه ای که از محیط گرافیکی استفاده می کنید در ترمینال تایپ می کنید با استفاده از نام میزبان به سرور x متصل می شود.


یه نکته جالب هم من در جریان یه کاری یاد گرفتم.

اگر یک فایل متنی با نام nologin در مسیر /etc/ بسازید هیچ کس جز root توانایی دسترسی از طریق خط فرمان را به کامپیوتر نخواهد داشت. اگر شخص دیگری سعی در ورود کند متن داخل فایل به وی نمایش داده خواهد شد. از این روی برای کامپیوتر هایی که به صورت remote به آن وصل می شوند (برای مثال سرور ها) استفاده می شود تا جلوی خطرات احتمالی نسبت به ساخت کاربر جدید توسط افراد متخاصم گرفته بشه.

alux
یک شنبه 20 آبان 1386, 16:31 عصر
میشه دلیل اون رو هم بگید؟

حامد مصافی
یک شنبه 20 آبان 1386, 17:56 عصر
میشه دلیل اون رو هم بگید؟


دلیل چی ؟؟

tux-world
یک شنبه 20 آبان 1386, 18:32 عصر
اگر یک فایل متنی با نام nologin در مسیر /etc/ بسازید هیچ کس جز root توانایی دسترسی از طریق خط فرمان را به کامپیوتر نخواهد داشت. اگر شخص دیگری سعی در ورود کند متن داخل فایل به وی نمایش داده خواهد شد. از این روی برای کامپیوتر هایی که به صورت remote به آن وصل می شوند (برای مثال سرور ها) استفاده می شود تا جلوی خطرات احتمالی نسبت به ساخت کاربر جدید توسط افراد متخاصم گرفته بشه.

جالب اینجاست که دیگه نمیشه با یوزری که ساخته شده لاگین شد . حداقل برای من که با دبیان کار میکنم اینطوریه:چشمک:

oxygenws
سه شنبه 22 آبان 1386, 21:28 عصر
هنر استفاده از راهنما ها در لینوکس:
http://polishlinux.org/console/the-art-of-using-manuals/

tux-world
سه شنبه 22 آبان 1386, 22:50 عصر
امروز درگیر این قالب گنوم تو kde بودم وقتی برنامه های گنوم رو توش اجرا میکردم با قالب خشک اجرا می شدن . آخرش فهمیدم مشکل از کجاست . شما می تونین خود قالب kde رو ، رو برنامه های گنوم که اجرا می کنین سوار کنین و یا از قالبهایی که تو گنوم نصب کردین استفاده کنین ممکنه خیلی هاتون بدونین ولی برای من که طی این چند سال تازه با kde آشنا شدم و کار می کنم خیلی به درد خورد به هر حال :
appearance & Theme رو از کنترل سنتر باز کنین و از GTK Styles می تونین تنظیم کنین که از کودوم استفاده کنه .

rezaTavak
چهارشنبه 23 آبان 1386, 11:13 صبح
فقط در توزیعهای مبتنی بر دبیان:

فرض کنیم که شما ubuntu 5 داشته اید و امروز قصد دارید که ubuntu 7.1 نصب کنید. اما پکیجهای زیادی هم نصب کرده اید. که یادآوری آنها و نصب آنها بسیار مشکل است. و شما همه پکیجها را در روی هارد خود یا جایی که نیاز به تعویض سی دی نداشته باشد و نیاز به دانلود نداشته باشد داشته اید.

خب ایتدا یک لیست از کل پکیجهای نگارش قبل بر روی یک فایل می گیریم و این فایل را به نگارش جدید کپی می کنیم. فرض کنید نام فایل PACKAGELISTS باشد. طریقه تهیه آن:


dpkg -l | awk '{print $2}' > PACKAGELISTS

حال تمام پکیجها روی این فایل است.

با چند خط دستور در لینوکس جدید تمام پکیجها نصب خواهند شد:


LISTS=`cat LISTPACKGES`
for i in ${LISTS} ; do sudo apt-get install $i ; done


البته کاری که من می کنم این است که کل سی دی ها را روی هارد می ریزم و از نصب محلی استفاده میکنم.



یعنی تغییر فایل /etc/apt/sources.list مثل این:


deb file:/home/reza/Debs/binary-amd64/ ./
deb file:/home/reza/Debs/binary-i386/main/ ./


که البته قبل از آن Package ها را با dpkg-scanpacke ساخته ام.

rezaTavak
پنج شنبه 24 آبان 1386, 23:54 عصر
(فقط برای توزیعهای مبتنی بر دبیان)

حالا یک فرض دیگر:

من knoppix داشتم و از کل پکیجهای آن راضی بودم. اما نمی توانستم پکیجهای آنرا روی ubuntu استفاده کنم! البته با chroot هر دو محیط را بالا می آوردم هم gnome داشتم هم kde.

برخی از پکیجهای kubuntu یا بهتر بگویم kde در gnome نظیر خوبی ندارند اما من هم ubuntu دارم هم kubutu با این اینترنت هم نمیشه واقعا تمام کتابخانه و فایلهای یک توزیع را درست گرفت.


یا یه مسئله دیگر: یک سی دی زنده دارم مثل knoppix یک پکیج را اشتباهی پاک کردم جه کنم؟


خیلی ساده است. dpkg-repack چاره کار است.


این بسته در صورتیکه نصب شود هر بسته نصب شده را به بسته دبیان دوباره تبدیل میکند!

(آیا در ویندوز چنین چیزی داریم؟ در توزیعهای مبتنی بر rpm چطور؟)



این را هم بدانید که قدرت deb بسیار بیشتر از rpm است دلیلش هم این است که deb تنظیمات از پیش تعریف شده برای کاربران تازه کار دارد. و خب با alien اگر یک بسته rpm به deb تبدیل شود زمانی مفید است که چیزی مانند سرویس و نیاز به تنظیم نداشته باشد.



برویم سر حل:

ابتدا از توزیعی که می خواهید پکیجهای آن را بردارید لیست پکیج می گیریم:



LI=`dpkg -l | awk '{print $2}'`


حالا متغیر من حاوی کل نام پکیجهاست.

خب یک حلقه ساده راهکار ساخت کل پکیجهاست:


for _I_ in ${LI} ; do dpkg-repack $_I_ ; done
در همان مسیری که هستید بسته ها ساخته خواهند شد و بسته deb دارید.

حال اینها را هر جا خواستید ببرید.

دقت کنید که مسیری که در آن هستید نوع فایل سیستم آن لینوکسی باشد مثلا در درایوی ویندوز نروید. پس از ساخته شدن آنها را به درایو ویندوزی می توانید کپی کنید.



در قسمت آینده ساخت منبع بسته بر روی هارد را توضیح خواهم داد.

tux-world
جمعه 25 آبان 1386, 13:03 عصر
ممنون آقای توکل میشه همون chroot رو هم توضیح بدین عالی میشه.

rezaTavak
سه شنبه 29 آبان 1386, 18:13 عصر
فقط برای دیستروهای دبیان:
شاید داشتن ۱۴ عدد سی دی دبیان (sarge) خیلی حوصله آدم را سر ببرد و هی مجبوری سی دی عوض کنی.

کلی فایل از اینترنت دانلود کردی که همه توی /var/cache/apt/archives همه هستند و دوست داری توزیع جدید نصب کنی.

و مواردی از این دست.

برای اینکار در یک دایرکتوری می توانیم کل فایلهای deb را بریزیم و یا حتی دارای subdir هم باشد. سپس فایل Package را می سازیم. و این را به لیست اضافه میکنیم.


خب اول ساختن دایرکتوری:


mkdir /debs
این شاخه هر جایی می تواند باشد مثلامن از هارد دومم استفاده میکنم /media/sdb1 و یا هر جایی جه خودتان صلاح دانستید.

خب حالا کل فایلها deb را اینجا کپی میکنم.

توجه توجه: اگر یک فایل جدیدتری باشد آن در نظر گرفته میشود و از قدیمی صرف نظر می شود. پس اگر چندین نمونه از یک پکیج دارید باید جاهای مختلف باشند. مثلا من اصلیها را در شاخه فرعی main قرار می دهم و تکراریهای قدیمی را در repeated همچنین دو باید برای هر شاخه اینجنین باید Package ساخت.

خب حالا ساختن فایل Packages :

اگر این فایل بر روی هارد شما باشد فرق ندارد zip باشد یا نه اما بر روی شبکه و اینترنت باید حتما زیپ شده باشد. پس من روش زیپ شده را خواهم گفت.
فرق ندارد شما در کدام شاخه باشید (دایرکتوری) فقط این مهم است که آن شاخه یا دایرکتوری که پکیجها در آن است نسبت به این شاخه سنجیده می شوند و مسیرها نسبی است.

اما من در همان شاخه ای که فایلهاست می روم.
همچنین اگر زیر شاخه دارید باید شاخه پدری را معرفی کنید.


dpkg-scanpackages . /dev/null | gzip > Packages.gz
خب اسم دستور که مشخص است اما پارامتر اولی نشاندهنده مسیر فایلهای deb است که چون من در شاخه بودم همان را ذکر کردم. پارامتر دومی هم فایلی که باید رونویسی شود در اینجا چیزی نیست. و بعد با دستور gzip داده ها زیپ می شود و در فایل Packages.gz قرار می گیرد. مهم است که نام فایل همین باشد. یعنی P بزرگ باشد و بقیه حروف کوچک.

با این دستور تمام پکیجهای شما لیست شده در فایل قرار می گیرند. اگر هم خطایی باشد به شما نمایش داده خواهد شد.


اما اضافه کردن این فایلها به لیست /etc/apt/sorces.list به این صورت است که فایل را با ویرایشگر محبوبتان باز کنید و این خط را به آن اضافه کنید:


deb file:/debs ./
اگر چندین شاخه مجزا و فایل Packages.gz دارید هم کار همین است
سپس باید لیست بسته ها به روز شوند یعنی فرمان :


sudo apt-get update
حالا دیگر بسته های شما هم در لیست قرار دارند. با synaptic یا هر چیزی راحتید نصب بسته ها را انجام دهید.

rezaTavak
چهارشنبه 30 آبان 1386, 08:16 صبح
اجرای gnome و kde با هم!
من فرض می کنم که شما دو توزیع مختلف بر روی دو پارتیشن مجزا از هاردتان دارید. مثلا فرض کنید که ubuntu و kubuntu یکی در /dev/hda5 و دیگری در /dev/hda6
با یکی بوت شوید. فرق نمیکند. فرض کنیم hda5

بعد پارتیشن دومی را به صورت خواندنی و نوشتنی حتما بوت کرده باشید. فرض کنیم در /media/hda6

سپس با فرمان


sudo chroot /media/hda6

دومی را بارگذاری میکنیم.

حال با فرمان


mount -t proc proc /proc

پروسه ها را بار گذاری میکنیم.

در آخر هم با
startx محیط گرافیکی را بالا می آوریم. حال با alt+ctrl+F7 محیط اولی و alt+ctrl+F8 دومی (ممکن است F9 باشد.) هم گنوم دارید هم kde

با اینکار اگر مشکلی در یکی باشد با دومی در محیط گرافیکیش رفع می شود.

rezaTavak
یک شنبه 04 آذر 1386, 11:46 صبح
فایلهای جامانده و مشکلات


در synaptic یا مانند آن:
اگر پکیج منیجر شما در حال نصب بسته شود مثلا shutdown کنید یک فایل در / var/cache/apt/archives/lock ساخته می شود که اگر آن پاک نشود هیچ برنامه دیگری درست کار نخواهد کرد.


هرگاه xorg یا xfree86 اجرا شود یک فایل با نام .X0-lock در شاخه /tmp ساخته می شود
که اگر به عللی مثل برق رفتن یا ... این فایل باقی بماند دفعه بعد Xserver شما بالا نخواهد آمد.



هر گاه kppp اجر شود یک /.kde/share/apps/kppp/kppp.pid~ ساخته می شود (بسته به نام شاخه خانگی مسیر متغیر است ~ معنی شاخه خانگی کاربر را میدهد.) که در هر بار اجرا این فایل تست میشود. و اگر وجود داشته باشد به شما اخطار می دهد.




اگر از xfardic استفاده کنید در شاخه خانگی شما یک چنین فایلی ساخته می شود که
xFarDic نام دارد. وجود این فایل باعث می شود که آن نیز اجرا نشود.


و...


نتیجه:
فایلهای به جامانده برخی اوقات درد سر ایجاد میکنند که بهتر است به آنها توجه کنید.

oxygenws
دوشنبه 05 آذر 1386, 10:44 صبح
Bash tips and tricks (http://richbradshaw.wordpress.com/2007/11/25/bash-tips-and-tricks/)

mnajafi
دوشنبه 05 آذر 1386, 11:53 صبح
فایلهای جامانده و مشکلات


من مشکل مذکور رو با این دستور حل کردم
dpkg --configure -a

rezaTavak
دوشنبه 05 آذر 1386, 12:41 عصر
dpkg --configure -a

دستوری است که پیکربندی پکیجهای نصب شده را دوباره انجام می دهد.

مثلا فرض کنید که شما یک پکیج را با سویچ -f نصب کرده باشید برای نمایش خطاها و ترمیم آنها از این دستور استفاده کنید.

اگر اینکار را نکنید پکیجهایی که دارای هطا هستند در هر بار ورود به syanptic به شما اخطار خواهند داد.

rezaTavak
پنج شنبه 15 آذر 1386, 07:55 صبح
به نظر شما آیا ویروسهای ویندوزی از طریق wine می توانند لینوکس را هم آلوده کنند؟

پاسخ بعدا می گویم.

rezaTavak
چهارشنبه 21 آذر 1386, 09:13 صبح
این ویروس:
W32.Rontokbro@mm (http://www.symantec.com/security_response/writeup.jsp?docid=2005-092311-2608-99)

http://www.symantec.com/security_response/writeup.jsp?docid=2005-092311-2608-99
ویروسی است که روی یکی از کامپیوترهایم که ویندوز داشت بود. من هم چون این ویروس یک ویروس جایگزین شونده بود و نام چیزی که می خواستم اجرا کنم با آن یکی بود به اشتباه با wine آنرا اجرا کردم.

چند روزی دیدم اوضاع کامپیوتر در هم شده است و تا اینکه فهمیدم ای دل غافل کامپیوترم ویروسی است! (هیچ ویروس کشی هم نداشتم.)

خلاصه اینکه با wine ویروسی را که از API ویندوزی استفاده کرده باشد اجرا کنید سیستم شما ویروسی خواهد شد.

Folaani
جمعه 23 آذر 1386, 17:03 عصر
بنظر بنده هر دو حالت امکان داره.
فکر میکنم تعداد زیادی از ویروسها بی اثر بشن. ولی میتونه ویروسها یا بطور کلی نفوذها و خرابکاریهایی هم باشه که روی لینوکس هم با نرم افزار اجرا کنندهء نرم افزارهای ویندوز موثر باشه.
اونهایی که بی اثر میشن، بخاطر این هست که حفره هایی که در برنامه های نویسندگان API و بخشهای مختلف ویندوز بوده لزوما در پیاده سازی تحت لینوکس نیست. با توجه به بسته بودن سورس ویندوزیها، باید گفت که این برنامه ها رو برای لینوکس مجددا و خودشون مینویسن.
اما اون جاهایی که اشکال ساختاری وجود داره، مثلا در منطق یک پروتکل امنیتی و احراز هویت و غیره، خب دیگه غیر از اینکه اون تشخیص داده و اصلاح شده باشه، سد دیگری وجود نداره. بسته به اینکه برنامه تا چه حد اجازهء دسترسی به سیستم رو داشته باشه میتونه کارهای مختلفی رو بکنه.
چیزهایی هم که برنامه های مخرب نامیده میشن، و هرکسی میتونه بنویسه، معلومه که دیگه ربطی به ویندوز و لینوکس نداره.
اما بنظر من بطور کلی wine باید خیلی محدودتر باشه برای اینطور خرابکاریهای ویندوزی. مثلا wine چیزی مثل رجیستری ای که موقع ریستارت سیستم لینوکس شما هم برنامه ها رو بطور خودکار اجرا کنه، فکر نمیکنم داشته باشه!! یا اجازهء هرکاری رو نمیده (حداقل امکان تنظیمش رو باید داشته باشه!؟)
بطور کلی هیچ گزینهء کلی ای وجود نداره! و گذشته از اینکه باید اصول طراحی wine رو بدونیم (که دقیق نمیدونم) و بخشهای مختلفش رو و میزان دسترسی و لایه های حفاظتی احتمالی و طرز ارتباط و تعامل با ساختارهای خود لینوکس رو، نوع برنامه یا ویروس خیلی مهم هست. یعنی ویروسی که مثلا از یک buffer overflow استفاده میکرده خیلی فرق داره با یک ویروسی که از نقص ساختاری یک مکانیزم سوء استفاده میکرده و بازهم فرق داره با یک برنامهء عادی که تروجان هست.
فایل شما هم وقتی با ویروس آلوده شده، دیگه ممکنه همون ویروس اولیه (به فرم ابتداییش) نباشه. باید دید ماهیت و طرز کارش چیه.
فرضا اون ویروس اولیه از اینترنت یا یک عکس آلوده روی سیستم شما منتقل شده، اما روی لینوکس لزوما امکان نفوذش وجود نداره.

خلاصه قانون کلی ای نمیشه داد و بسته به مورده و تحلیل تمام شرایط نیاز هست که دانش فراگیر میخواد.
اگر سرچ کنید و در فرومی چیزی سوال کنید احتمالا خیلی سریع به منابع زیادی دراینموارد دست پیدا کنید.

سوال جالبی بود!!

rezaTavak
شنبه 24 آذر 1386, 07:29 صبح
دوست عزیز جواب سوال را داده ام.

مورد هم به عینا برای خودم پیش اومده.

فقط اینکه چون لینوکس برای دسترسی به هر جا مجوز می خواهد فقط شاخه home/username من ویروسی شده بود و بقیه جاها سالم بود.

من کامپیوترهایم خیلی روزها دائم روشن هستند برای همین مشکل وجود داشت.

Folaani
شنبه 24 آذر 1386, 14:11 عصر
بنده هم تجربهء شما را دیدم. سپس نظر خود را بیان کردم -------
آن جواب نیست؛ تنها یک مورد نقل تجربه است.
توضیحات بنده احتمالات منطقی بیشتری را مطرح میکند.
پاسخ نهایی هم تنها با همان منابع و رفرنسهای علمی و رسمی مربوطه میسر است که تذکر دادم.
شما که بسادگی چون یک فایل آلوده روی سیستم لینوکس شما اجرا شده نمیتوانید ادعا کنید برای تمام ویروسهای ویندوزی نیز به همین صورت است و به قانون کلی و قطعی ای دست پیدا کرده اید که همگان باید جواب معتبر و نهایی بدانیم؟! اینطور مسایل و کلا اغلب مسایل در حوزهء علم رایانه خیلی مفصلتر و پیچیده تر از این حرفها میتواند باشد و چنین ساده نگری ای کاملا ناشیانه و غیرعلمی است.
هیچ دلیلی وجود نداره که تجربهء شما کلی و قطعی باشد (گرچه میتوان در نهایت به چنین نتیجه ای هم رسید) و حتی ماهیت واقعی آن فرضا از دید بنده زیر سوال است.

oxygenws
شنبه 24 آذر 1386, 14:15 عصر
نظرتون چیه این بحث ویروس رو ببریم تو یه تاپیک مجزا؟؟ چون داره جالب میشه :)


پ.ن: این پست و ارسال های مربوطه بعدا حذف خواهند شد.

oxygenws
یک شنبه 02 دی 1386, 10:53 صبح
یافتن پورت های باز و برنامه هایی که این پورت ها را باز کرده اند (http://archives.neohapsis.com/archives/sf/linux/2000-q3/0692.html)

rezaTavak
سه شنبه 02 بهمن 1386, 11:59 صبح
با تمام احترامی که برای OpenOffice و محصولات OPenSource قائلم اما باید خاطر نشان کنم که فونتها و عکسها در Writer آن درست کار نمیکند! مثلا فونت نستعلیق در Word Microsoft درست است اما در Writer نه!

عکسهایی که ذخیره میکنم درست نیستند و در خصوص فونت فارسی هم بسیار مشکل دارد اما از حق نگذریم Word مشکلی ندارد.


اما در مقابل Html Document آن فوق العاده است. و من برای نوشتن مطالب از آن استفاده میکنم.

همچنین در خصوص انتقال جداول از word to execl و برعکس درست کار میکند اما در Writer to Calc نه خیلی عذاب میده و OLE انتقال میده!


اما زبانهای پشتیبانی در Office بیسیک است اما در OpenOffice چند زبان معروف.


خلاصه در کل Office میکروسافت بهتر عمل می کند.

oxygenws
یک شنبه 14 بهمن 1386, 00:25 صبح
دوستانی که با Gnome کار می کنند، ممکنه تا حالا با فونت نامناسب برنامه های KDE مواجه شده باشند. برنامه هایی مثل Skype یا K3B یا ... در صورتی که تنظیمات فونت برای خودشون نداشته باشند، از فونت های پیشفرض QT استفاده می کنند که در صورتی که شما برنامه های مناسب تنظیم QT رو نصب نداشته باشید، اندکی اذیت می شین :)

برای این کار کافیه برنامه kcontrol یا qtconfig رو از توی synaptic نصب کنید (kcontrol ارجحیت داره) ضمن اجرای کامند kcontrol یا qtconfig در ترمینال، تنظیمات فونت QT رو درست کنید. :)

برای راهنمایی بیشتر، اینجا رو ببینید:
https://help.ubuntu.com/community/Skype#head-80f179bd99051727cbf8f093a3f38f4f70149c9d

rezaTavak
یک شنبه 14 بهمن 1386, 07:41 صبح
ولی فکر کنم برای پیش فرض نصب برخی برنامه ها مانند konqueror این برنامه kcontrol اتومانیک نصب بشه.

devildarkness
یک شنبه 28 بهمن 1386, 02:27 صبح
دستور wget واقعا شیرین ترین دستوری هستش که وقتی کانکت میشم بهم حال میده.
چند ماه پیش داشتم برای دانلود کامل سایت هزاردستان اینترنت رو می گشم . اون سایت مقاله های جالبی داره می خواستم کلا دانلود کنم بشینم بخونم .
نرم افزارهای جالبی رو دیدم ولی هیچ کودوم مثل دستور زیر منو حیرت زده نکرده بود . چقدر لذت می برم از اینکه با لینوکس کار میکنم . :بوس:


wget WEBSITE -k -c -r -p
دستور wget خیلی قدرتمنده و واقعا سرعتش هم بالاست . تمام دانلود هام رو باهاش انجام میدم . فایل رو عالی دانلود میکنه و فایل دانلود شده صحیح و سالم تحویل داده میشه .
با اون دستور یک سایت رو کامل می تونین دانلود و لذت ببرید .


یه سوال: چجوری با این دستور مکان ذخیره شدن فایل ای دانلودی رو تعیین کنم ؟

rezaTavak
دوشنبه 29 بهمن 1386, 08:28 صبح
با سوئیچ o-

rezaTavak
سه شنبه 21 اسفند 1386, 19:13 عصر
در ویندوز شما می توانید با virtualcd یک سی دی مجازی بسازید و برنامه هایی که شما را مجبور به استفاده از سی دی میکنند را دور بزنید اما در لینوکس شما به چیز زیادی احتیاج ندارید!

با فرمان dd از سی دی یک کپی روی هارد می گیریم:


dd if=/dev/cdrom of=~/cd.iso

سپس با فرمان mount آنرا مانت می کنیم:


sudo mount -o loop ~/cd.iso /mnt/cd

rezaTavak
شنبه 25 اسفند 1386, 11:11 صبح
من بیشتر با ubuntu کار میکنم اما هنگامی که آنرا بر روی یک کامپیوتر به مشخصات زیر اجرا کردم خطا داد:

pII 433Hz
Ram 128Mb
HDD 80GB
VGA Trident 9750
اما knoppix به راحتی کار کرد فکر کنم مشکل از gnome باشد!

rezaTavak
چهارشنبه 07 فروردین 1387, 10:21 صبح
Sudo: must be setuid root to do its work


دیروز با این پیام مواجه شدم نمیدانم مشکل چطور بروز کرده بود اما راه حل این بود:
ابتدا با root وارد شدم و سپس


chmod 4111 /usr/local/bin/sudo



البته برای رسیدن به این هدف کلی جستجو کردم مثلا فهمیدم:



adduser ali admin


ali را از نوع admin تعریف میکند.

rezaTavak
دوشنبه 19 فروردین 1387, 10:37 صبح
من چون اولین لینوکسم suse بود و rieserfs را به عنوان پیش فرض داشت من هم همین سیستم فایلی را انتخاب میکردم.

تا اینکه یک روز لینوکسم بالا نیامد.

دیدم نوشته که باید --rebuild-tree را در چک فایل سیستم بکار برم اما بقیه پیام را درست نخواندم و اطلاعاتم بدلیل اینکه هاردم بد سکتور داشت از دست رفت! یعنی باید قبل از :


fsck.reiserfs /dev/hda1 --rebuild-tree

حتما یک backup بگیرید چرا که هارد شما اگر سخت افزاری مشکل داشته باشد این دستور فایل سیستم شما را خراب خواهد کرد!

به نظر شما استفاده از ext2,ext3 مناسبتر نیست؟

rezaTavak
دوشنبه 19 فروردین 1387, 10:43 صبح
چگونه تست کنیم هاردمان خرابی سخت افزاری دارد؟



sudo dd if=/dev/hda of=/dev/null conv=noerror


سرعت هارد هم مشخص خواهد شد. در هاردهای ساتا و اسکازی :




sudo dd if=/dev/sda of=/dev/null conv=noerror

حامد مصافی
دوشنبه 19 فروردین 1387, 23:46 عصر
وقتی wine رو نصب کردید و وقتی پارتیشن های ویندوز رو که پر از exe و dll و ... هستند مانت کردید و همچنین از KDE استفاده می کنید ممکنه با مشکلی که من چند وقت پیش تجربه کردم مواجه بشید.
وقتی سعی می کنید یکی از برنامه های KDE رو اجرا کنید با پیغام زیر مواجه میشین:


cannot find mime type applications/octet-stream

در اینصورت باید در Control Center و قسمت File Associations گره Application رو باز کنید و نوع جدیدی با نام octet-stream بسازید. سپس پسوند های زیر رو به این MimeType اضافه کنید:


*.bin
*.class
*.dms
*.exe
*.lha
*.lzh

rezaTavak
دوشنبه 26 فروردین 1387, 12:22 عصر
آیا VFAT کاملا ایمن در لینوکس باز می‌شود؟

دیشب با یک فایل سیستم vfat در لینوکس کار میکردم دیدم که directory را به صورت file نشان می دهد!

خلاصه هر چی کلنجار رفتم نشد!

رفتم توی ویندوز ۹۸ دیدم درسته و ...

rezaTavak
چهارشنبه 28 فروردین 1387, 11:57 صبح
برای اجرای یک برنامه در صورتیکه run نشده باشد مثلا kppp و اگر شده شماره PID


#!/bin/bash
ProgName=pppd
get_proc=`ps -e -o pid,command | grep $ProgName`
get_it=`echo $get_proc | awk '{ print $1 }'`

if [ $get_it -gt 0 ] ; then
gdialog --yesno "$get_it" 10 10
else
kppp -c d &
fi


gdialog اگر نصب شده باشد در آن می توانید برخی از عناصر گرافیکی را نشان دهید.

rezaTavak
پنج شنبه 29 فروردین 1387, 08:20 صبح
باز هم فرمان dd:

دیروز به دی وی دی تصویری خراب داشتم که اول آن فقط خراب بود آنرا با این فرمان به روی هارد ریختم البته skip را برای ۲۰۰۰۰ بلوک اول زدم که از اول فایل پرش کند!

جالب بود این فرمان dd هم شده اینروزها صدر فرمانهای من.

rezaTavak
دوشنبه 02 اردیبهشت 1387, 12:00 عصر
فرمان شماره ۵۴ در یک مورد به درستی کار نخواهد کرد:

pid که به هر Process در لینوکس داده می شود ۳۲۰۰۰ است اگر بیشتر از این شود دوباره دور می زند و ps بر اساس شماره پروسس مرتب میکند اگر kppp شماره بزرگتر از ps داشته باشد فرمان درست کار نخواهد کرد!

vahid4134
دوشنبه 16 اردیبهشت 1387, 15:07 عصر
بحثهای خیلی خوبی شده بود و از همه بحثها من که بهره زیادی بردم
من هم یه چندتا چیز که حتما خیلی از دوستان بلدن رو یاد گرفتم که به کارم خیلی اومده
یکی اینکه شاید بعضی از شما دوستان اینقدر این ubuntu (من فقط با این توزیع کار کردم و کار می کنم) رو دستکاری کرده باشید که خراب شد دیگه واقعا به هیچ صراطی مستقیم نمیشه.
آخرش دیگه می خواید یکی جدید نصب کنید یا اینکه مثلا دسترسی به اینترنت ندارید و یکی از دوستانتون دسترسی به اینترنت داشته و هر کدوم از بسته ها رو که خواسته دانلود کرده و نصب کرده.
حلاا شما هم می خوایید این بسته ها رو داشته باشید و داخل cashe مربوط به apt-get که توی چند پست قبلی گفته شده بود آدرسش کجاست روی یک سی دی داشته باشید اون وقت می تونید از aptoncd استفاده کنید.
یه چیز دیگه هم که خیلی به کار من اومد چون روی سررورها ما تعداد زیادی رنج ip دارید و هر وقت می خوام یک آیپی جدید اضافه کنم می خوام در یک رنج خاص Ping کنم ببینم کدومش فعاله کدومیش نیست بعد از یه جستجو فهمیدم که باید از fping استفاده کنم مثلا


fping -g 83.98.147.1 83.98.147.100


یه چیز دیگه که همیشه کفرم در می اومد این بود که هر کاری می خواستم بکنم هی باید می نوشتم sudo آخرش فهمیدم اول بنویسم sudo -s همیشه با روت لاگین هستم :لبخند:

rezaTavak
چهارشنبه 25 اردیبهشت 1387, 10:25 صبح
کامپیوتر کی روشن شده است؟



sudo ps -eF | head

ستون STIME تاریخ یا زمان را نشان میدهد.

همچنین برای اینکه بفهمید که یک برنامه اجرا شده است مثلا میخواهم بدانم کی firefox اجرا شده است؟ یا pppd کی اجرا شده است؟



sudo ps -eF | grep pppd
sudo ps -eF | grep firefox

حامد مصافی
پنج شنبه 02 خرداد 1387, 17:00 عصر
یک سی دی دیسک زنده به دستتون رسیده. می خواهید ببینید چه نرم افزار هایی داره. یا حتی در محیط ترمینال باهاش کار کنید. اما بدون بوت یعنی مستقیماً از لینوکس موجود خودتون!
برای مثال knoppix:



mkdir /tmp/knoppix-live
extract_compressed_fs /media/cdrom/KNOPPIX/KNOPPIX /tmp/knoppix-live
mkdir /tmp/knoppix-tree
tar -C /tmp/knoppix-live -cf - . | tar -C /tmp/knoppix-tree -xvpf
mount -t proc none /tmp/knoppix-tree/proc
cp /etc/resolv.conf /tmp/knoppix-tree/resolv.conf
chroot /tmp/knoppix-tree /bin/sh

حالا می تونید در محیط این لینوکس جدید به گردش بپردازید و هر وقت خسته شدید با استفاده از دستور exit خارج بشید. حتی می تونید با استفاده از dpkg و apt بسته های توزیع رو تغییر بدید و توزیع مخصوص خودتون رو ایجاد کنید.

ضمناً به cloop نیاز خواهید داشت

rezaTavak
شنبه 15 تیر 1387, 07:50 صبح
سلام

برای ارتباط با ADSL کارهای زیر را انجام دهید:

۱ - اگر بسته pppoeconf نصب نیست آنرا نصب کنید.
۲ - از متصل بودن کارت شبکه به مودم ADSL مطمئن شده و همچنین تمام سخت افزار باید بدرستی کار کند. در خط فرمان تایپ کنید pppoeconf و سپس مراحل را یکی یکی ادامه دهید.
۳ - خودش در انتها به طور اتوماتیک وصل خواهد شد اما برای قط poff و برای وصل مجدد pon dsl-provider و برای بررسی plog فرمانهایی است که به شما کمک میکند.
۴ - در واقع dsl-provider یک فایل است در مسیر /etc/pppp/peer/ که مشخصات اتصال در آن ذخیره شده است.
۵ - این فایل برای اتصال pppd مهیا شده است.
۶ - می توانید آنرا خودتان تنظیم کنید.
۷ - مثلا فرض کنید IP-Static دارید در آن :

x.x.x.x:y.y.y.y

که برای X آی پی کلاینت و y آی پی سرور تنظیم می شود.

rezaTavak
پنج شنبه 10 مرداد 1387, 12:41 عصر
اگر در خط فرمان اولین کاراکتر فرمان با فاصله شروع شود فرمان درhistory نخواهد آمد!!

ilius.gnu
دوشنبه 28 مرداد 1387, 07:18 صبح
خیلی ممنون. تاپیک خیلی خوب و جالبی شد.
به این تاپیک اوبونتو-ایران هم سر بزنید جالبه: نکته های خط فرمان (http://forum.ubuntu.ir/index.php?topic=3480.0)


راستی اسم کاراکتر ` چیست؟ (کاراکتر زیر ESC در صفحه کلید که با shift کاراکتر ~ تایپ می شود.) (فکر کنم کوتیشن شروع باشد و ' کوتیشن انتهایی یعنی در یک نقل قول اول می آید.)

اسم اون کاراکتر back quote هست. backtick و grave accent که جناب oxygenws فرمودن رو نشنیده بودم، ولی ظاهراً چند تا اسم داره!:چشمک:
http://www.computerhope.com/jargon/b/backquot.htm

برای استفاده از خروجی یک دستور بعنوان یک متغیر، غیر از back quote میشه از دالرساین و پرانتز هم استفاده کرد. یعنی این دو دستور معادلند:

LISTFILES="`ls -1`"
LISTFILES="$(ls -1)"در ضمن موقع ریختن خروجی اون دستور توی متغیر، کارکترهای سرخط با فاصله جایگزین میشن. پس گذاشتن اوپشن 1- برای دستور ls هیچ اثری نداره. پس اون دو دستور معادل با این هست:

LISTFILES="`ls`"اما برای ریختن توی فایل بهتره اوپشن 1- بیاد تا اسم فایلها در خطوط جدا ذخیره بشن.

ls -1 > listfiles.txtولی وقتی محتویات اون فایل رو در متغیر میریزید:

LISTFILES="`cat listfiles.txt`"بازم کاراکتر سرخط با فاصله جایگزین میشه.
پس اگه اسم بعضی فایلها شامل فاصله باشه، ذخیرهٔ لیست فایلها در یک متغیر کار خوبی نیست. اما چه راه بهتری پیشنهاد میشه؟
اگه میخواید توی یک حلقه، کار خاصی روی مسیر فایلها انجام بدید، پیشنهاد من استفاده از پایپ(pipe) و دستور read هست. مثلا این اسکریپ کوچیک، مسیر فایلهای دایرکتوری جاری رو به همراه شماره(اندیس) چاپ میکنه:


N=1
ls -1 | while read LINE ; do
echo "File $N: $LINE"
N=$[N+1]
done(که میتونید توی بدنهٔ while هر کاری با متغیر LINE انجام بدید که همون اسم فایل هست.)
یا در ساده‌ترین حالت(بدون شماره):

ls -1 | while read LINE ; do
echo "File: $LINE" ; doneهمینطور می‌تونید لیست فایلها رو از یک فایل بخونید. فقط بجای ls از cat استفاده می‌کنید:

N=1
cat listfiles.txt | while read LINE ; do
echo "File $N: $LINE"
N=$[N+1]
doneیا با استفاده از redirect کردن. به این صورت:

N=1
while read LINE ; do
echo "File $N: $LINE"
N=$[N+1]
done < listfiles.txt

راستی چرا تگ liinux گذاشتید بجای linux ؟!:چشمک:

rezaTavak
جمعه 29 شهریور 1387, 09:37 صبح
جالبه دستور mplayer -vo aa

پخش برنامه بصورت aa انجام میشه!

asm.coder
شنبه 25 آبان 1387, 20:32 عصر
اگر در خط فرمان اولین کاراکتر فرمان با فاصله شروع شود فرمان درhistory نخواهد آمد!!
امتحان کردم اومد !! :متفکر:

saeedIRHA
یک شنبه 26 آبان 1387, 23:26 عصر
امتحان کردم اومد !! :متفکر:
در بعضی distribution ها اين ترفند قابل استفاده هست

raravaice
شنبه 09 آذر 1387, 13:28 عصر
برای اجرای یک فایل exe تحت mono بدون استفاده از دستور mono کامند زیر کمک خوبیه.


echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
از این پس میشه یه فایل exe رو به صورت :


./MyApp.exe
اجرا کرد!

یه کاربردش هم برای دوستانیه که قصد دارن برای asterisk یه AGI تحت mono بنویسن که در حالت معمول asterisk قادر نیست AGI شما رو با فرمت mono myagi.exe اجرا کنه.

موفق باشید

حامد مصافی
پنج شنبه 19 دی 1387, 10:44 صبح
سلام
اگر با برنامه نویسی kdelib آشنا باشید مفهوم kxmlgui را می دانید. این بخش از kdelib به برنامه نویس این امکان را می دهد تا ظاهر برنامه را در یک فایل xml ذخیره و بازیابی کند، و احتمالاً گزینه Shortcut Settings یا Toolbars Settings را در منوی settings که به طور اتوماتیک توسط kxmlgui ایجاد می شوند دیده اید. توسط این گزینه ها می توانید میانبر ها یا کلید های نوار (های) ابزار را تغییر دهید. اما در حالت عادی نمی توانید گزینه های منو را تغییر دهید. اما می توانید برای تغییر در گزینه های منو فایل xml را (که ذکر گشت) ویرایش کنید.
بدین منظور ابتدا فایل را در مسیر زیر پیدا کنید


~/.kde/share/apps/appname/appnameui.rc
توجه : appname نام برنامه مورد نظر شماست.
در داخل این فایل گره ای به نام MenuBar وجود دارد که فقط یک بار در فایل تعریف شده است که نمایانگر نوار منو است. این گره فرزند هایی با نام Menu دارد که به گزینه های منو (مانند File و Edit و...) اشاره دارد. با جابجایی یک کلید Action از یک Menu به یک Menu ی دیگر می توانید چیدمان برنامه را به دلخواه تغییر دهید.
نکته : این تغییرات فقط برای کاربر جاری خواهد بود، فایل پیش فرض تنطیمات در مسیر /usr/bin/ قرار دارد.
نکته 2 : هر Action توسط برنامه نویس در برنامه و از کلاس KAction تعریف می شود.
نکته 3 : شما در این فایل گزینه های عمومی (مانند Save, Cut, Copy و ...) را نمی بینید. اما می توانید آنها را به یک منوی دیگر اضافه کنید. برای مثال کلید زیر را تحت گره Menu ی Edit اضافه کنید تا گزینه Save به منوی Edit اضافه شود.

<Action name="file_save" />

حامد مصافی
شنبه 05 اردیبهشت 1388, 11:16 صبح
فرض کنید فرمانی را به مقادیر زیادی از پارامتر ها اجرا کرده اید. حالا می خواهید همان فرمان را با همان پارامتر ها اجرا کنید.
راه اول : با کلید Up به دنبال آن بگردید.

راه جالبتر : علامت ! را قبل از نام فرمان و بدون پارامتر ها صادر کنید.

مثال :


!echo

حامد مصافی
یک شنبه 06 اردیبهشت 1388, 12:46 عصر
فرمان زیر را در نظر بگیرید:


$ echo {"one ","two ", "three "}linux
خروجی آن به این شکل خواهد بود:


one linux two linux threelinux

حالا حدس بزنید فرمان زیر چه کاری انجام خواهد داد


cp /etc/fstab{,.bak}

:چشمک:

حامد مصافی
سه شنبه 15 اردیبهشت 1388, 12:27 عصر
بدون شرح!


apt-get install hibernate

raravaice
شنبه 20 تیر 1388, 17:33 عصر
دسترسی به پارتیشن LVM در UBUNTU :





sudo apt-get install lvm2

sudo modprobe dm-mod

sudo vgscan

sudo vgchange -ay VolGroup00

sudo lvs

sudo mkdir /mnt/fcroot

sudo mount /dev/VolGroup00/LogVol00 /mnt/fcroot -o ro,user
ls /mnt/fcroot

rezaTavak
پنج شنبه 21 آبان 1388, 09:14 صبح
شاید شما هم مثل من در برخی سایتهای مفتضح ایرانی مثل سیستم سما (انتخاب واحد دانشگاه) و امثالهم مشکل داشته باشید و مجبور شوید از IE استفاده کنید.

خب اینکار بسادگی با نصب IE4Linux ممکن می‌شود.


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

پس لازمست فایلهای مورد نیاز ویژوال بیسیک اسکریپت در دسترس wine باشند.

ابتدا msvbvm60.dll را در دایرکتوری
~/.wine/drvice_c/windows/system32
کپی کنید و آنرا رجیستر کنید یعنی :

wine regsvr32.exe .wine/drive_c/windows/system32/MSVBVM60.dll

حال بقیه فایلهای مورد را نیز کپی کنید (در ویندوز شاخه سیستم dir vb*.dll بگیرد و مانند فایل بالا عمل کنید.)

همچنین wscript.exe را در شاخه اشاره شده کپی کنید.

از اینجا به بعد IE شما VB را هم پشتیبانی خواهد کرد!

a.gh.n
پنج شنبه 28 آبان 1388, 15:09 عصر
شاید شما هم مثل من در برخی سایتهای مفتضح ایرانی مثل سیستم سما (انتخاب واحد دانشگاه) و امثالهم مشکل داشته باشید و مجبور شوید از IE استفاده کنید.

خب اینکار بسادگی با نصب IE4Linux ممکن می‌شود.


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

پس لازمست فایلهای مورد نیاز ویژوال بیسیک اسکریپت در دسترس wine باشند.

ابتدا msvbvm60.dll را در دایرکتوری
~/.wine/drvice_c/windows/system32
کپی کنید و آنرا رجیستر کنید یعنی :

wine regsvr32.exe .wine/drive_c/windows/system32/MSVBVM60.dll

حال بقیه فایلهای مورد را نیز کپی کنید (در ویندوز شاخه سیستم dir vb*.dll بگیرد و مانند فایل بالا عمل کنید.)

همچنین wscript.exe را در شاخه اشاره شده کپی کنید.

از اینجا به بعد IE شما VB را هم پشتیبانی خواهد کرد!
مرورگر konqueror یه قسمت داره با عنوان browser identification. من با تنظیم اون برای بعضی سایت‌ها (مثل سیستم تغذیه می‌تونم وارد بشم و کارمو انجام بدم.

irlogo
پنج شنبه 28 آبان 1388, 19:36 عصر
من هیجی نفهمیدم کسی کمک می کنه؟

ariashop
پنج شنبه 20 اسفند 1388, 09:36 صبح
به عنوان یک پیشنهاد موسسه آنیسا نماینده انحصاری lpi داره سه دوره ال پی آی رو برگزار می کنه که اگر واقعا دید لینوکس دارید بهتره این سه دوره رو اینجا بگذرونید تا متخصص کامل بشید . البته فعلا دوره اول و دوم برگزار میشه و دوره سوم نیز هنوز آغاز نشده

blue_lotus
شنبه 26 تیر 1389, 00:39 صبح
dmidecodeیکی از دستورات جالبی که تا به امروز دیدم. تمام اطلاعات ریز mainboard رو که تا حالا ندیده بودم میده! از ساپورت رم تا اورکلاک و ...

اطلاعات مربوطه رو از /dev/mem میخونه

blue_lotus
پنج شنبه 14 مرداد 1389, 10:08 صبح
چند روز پیش یاد پلیر های قدیمیه خط فرمان افتادم. گشتم ببینم چه برنامه ای روی لینوکس پیدا میکنم. اول به aplay که مربوط به خود alsa هست برخوردم اما فقط موسیقی های wave رو پخش میکرد!
بعد از کمی جستجو به پلیر قدرتمند mgp123 رسیدم که فایل های mp3 و دسته جمعی هم پخش میکرد.


mpg123 [ options ] fileاگر میخواین همه‌ی فایل های یک پوشه رو براتون اجرا کنه کافیه:
mpg123 pathaddress/*.*

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

blue_lotus
شنبه 16 مرداد 1389, 12:50 عصر
شاید مثل الانه من نیاز پیدا کنید که معادل hexdecimal حروف و ... بدونین.


echo abcd > t
hexdump t

خط اول حروف abcd رو به متغیر t نسبت میدهد. در خط بعدی برنامه‌ی hexdump -که تقریبا در اکثر توزیع های لینوکس پیش فرض نصب هست- میاد معادل hex حروف رو بهمون میده.
از این برنامه برای کارهای دیگه هم استفاده میشه -برای دیباگ برنامه و مشخص کردن آدرس hex برنامه-

raravaice
پنج شنبه 28 مرداد 1389, 13:58 عصر
ایراد :
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

برای رفع ای ایراد میباست از دستور زیر استفاده کرد.


xhost local:user


که در اینجا user همان نام کاربری است که برنامه تحت آن اجرا میشود.
و یا میتوانید از دستور زیر برای تمام user ها استفاده کنید.



xhost local:*


موفق باشید

rezaTavak
سه شنبه 13 مهر 1389, 07:27 صبح
برای اجرای یک دستوردر bash با شماره‌ای خاص (این شماره را می‌توان با دستور history بدست آورد) علامت تعجب ! و سپس شماره خط دستور:


!123

مثلا دستور بالا خط ۱۲۳ تاریخچه را اجرا میکند.

devil00x
سه شنبه 13 مهر 1389, 08:21 صبح
خیلی عالی بود ، لطفا ادامه بدید.

devil00x
پنج شنبه 15 مهر 1389, 08:59 صبح
پیدا کردن مدل cpu


grep "model name" /proc/cpuinfo

blue_lotus
سه شنبه 18 آبان 1389, 15:55 عصر
برای اینکه تمام پروسس های متعلق به خودتون رو ببندید :


kill -9 -1بعد از این کار تمام پروسس ها ( که محیط گرافیکی هم شاملش میشه) بسته میشن و به صفحه‌ی لوگین میرید.

saeedIRHA
جمعه 26 آذر 1389, 19:01 عصر
دوستانی که با Terminal در لینوکس زیاد کار می‌کنن و همیشه چندتا صفحهٔ Terminal رو باز دارن پیشنهاد می‌کنم حتما از برنامهٔ زیر استفاده کنن:
Terminator
http://www.tenshu.net/terminator/

installation in ubuntu
=============


sudo apt-get install terminator

blue_lotus
شنبه 18 دی 1389, 14:14 عصر
تازگیا به برنامه نویسی داخل لینوکس علاقه پیدا کردم که ببینم چطور میشه باهاش کار کرد. همیشه دنبال توضیحات lib ها و چیزای دیگه زبان C و خود لینوکس بودم تا ببینم چطور میشه دیدشون. بعد فهمیدم اینطوری باید عمل کرد:


man stdio

کافیه بعد از کلمه man اسم فایل کتابخونه‌ای رو که میخواین بنویسید تا من‌پیجش رو کامل داخل ترمینال ببینید. اطلاعات جالبی بهتون میده که چه تابعی داخل این کتابخونست و کارش چیه. البته برای هر تابع هم میتونین از من استفاده کنید که شکل کلی و توضیحاتش رو میده مثل:

man printf

بعد هم کتابخونه libc کار گنو هست که توابع زبان سی رو در خودش داره و نیازه. اینطوری میشه بهش دسترسی داشت:


info libc

با اینها نزدیک به ۶۰ تا ۷۰٪ نیازها رفع میشه.

برای دونستن استانداردهای کدنویسی GNU درباره‌ی سوئیچ های خط فرمان و اطلاعاتی راجع به نوشتن برنامه در خط فرمان و استانداردهایی که بقیه رعایت کردن رو هم با تایپ این دستور در خط فرمان ببینید:


info "(standards)user interfaces"

raravaice
یک شنبه 19 دی 1389, 16:20 عصر
اختصاص IP به کاربر های مختلف در لینوکس.
در بعضی شرایط نیاز پیدا میشه که هر User در لینوکس از یک IP برای Application های خود استفاده کنه که این امکان را میشه با دستور زیر ایجاد کرد.


iptables -t nat -A POSTROUTING -m owner --uid-owner user1 -j SNAT --to x.x.x.1



بعد از تنظیمات Firewall هر Application که تحت user1 اجرا شود از x.x.x.1 خروجی خواهد داشت.

موفق باشید

MSK
جمعه 20 اسفند 1389, 17:47 عصر
یک برنامه جالب هم برای کارکردن با ترمینال توی محیط KDE برنامه yakuake (http://kde-apps.org/content/show.php?content=29153) است که یک کنسول مانند کنسول بازی quake در اختیار می گزارد که خیلی مفید است.

چند تا دستور جالب هم که امروز یاد گرفتم برای تکرار دستورات قبلی:

تکرار آخرین دستور:

!!


تکرار آخرین دستور command با همان آرگومنت ها:

!command


اجرای nامین دستور در history:

!n


اجرای nامین دستور از آخر:

!-n


و در آخر هم اجرای دستور با استفاده از آرگومنتهایی که در دستور آخر استفاده کرده اید:

command !*


موفق باشید.

MSK
جمعه 27 اسفند 1389, 19:32 عصر
دستور dict رو من تازه امروز دیدم:خجالت: و واقعا حال کردم:

dict کلمه

توی ۷-۸ تا دیکشنری آنلاین سرچ می کنه و معنای کلمه رو پیدا می کنه.
فقط ایکاش به فارسی هم داشت.:ناراحت:

saeedIRHA
یک شنبه 03 مهر 1390, 05:15 صبح
یک rule ساده برای iptable برای مقابل با حملات Bruteforce SSH:


# SSH Brute Force Protection
iptables -A INPUT -i eth1 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth1 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP



این script رو به فایل etc/rc.local/ اضافه کنید که هربار موقهٔ boot شدن اجرا بشه;
بجای eth1 اسم device رو بذارین که connection‌ هاتون با اون بر قراره مثلا eth0 یا wlan0 و ....

zxmr71
شنبه 26 اسفند 1391, 21:54 عصر
دستور wget واقعا شیرین ترین دستوری هستش که وقتی کانکت میشم بهم حال میده.
چند ماه پیش داشتم برای دانلود کامل سایت هزاردستان اینترنت رو می گشم . اون سایت مقاله های جالبی داره می خواستم کلا دانلود کنم بشینم بخونم .

با سلام
دو تا سوال
۱) محل ذخیره سایتو نگفتی؟۲) چرا روی بعضی از سایتا جواب نمیده؟

FastCode
یک شنبه 27 اسفند 1391, 15:31 عصر
با سلام
دو تا سوال
۱) محل ذخیره سایتو نگفتی؟۲) چرا روی بعضی از سایتا جواب نمیده؟
توی دایرکتوری جاری کل مسیر سایت رو میسازه.
خیلی از سایت ها نیاز به گزینه های اضافه مثل --referer دارند.

ahmad24shargh
شنبه 28 اردیبهشت 1392, 15:49 عصر
من یه اسکریپت دارم که به صورت cronjob هرچند روز یکبار تعدادی از صفحات یه وبسایت رو میگیره و اطلاعات خاصی رو از اون استخراج میکنه.یک نمونه از نمایش صفحات این سایت روی مرورگر :



Last update IP address Port Country Speed Connection time Type Anonymity
31 secs 54.251.150.200 80 flag United States HTTP Low
2 minutes 173.213.113.111 3128 flag United States HTTPS High +KA
2 minutes 94.209.12.29 80 flag Netherlands HTTP High +KA
3 minutes 89.32.230.98 8080 flag Moldova, Republic of HTTPS High +KA
4 minutes 118.96.127.10 3128 flag Indonesia HTTP Low
4 minutes 125.39.68.130 80 flag China HTTPS High +KA
5 minutes 115.127.29.178 3128 flag Bangladesh HTTPS High +KA
5 minutes 218.29.154.54 8000 flag China HTTPS High +KA

اسکریپت ۴ فیلد رو استخراج و پردازش میکنه.فیلد ip مربوط اولین رکورد(54.251.150.200) در فایل html
به صورت زیر است :



.xn4v{display:none}
.CHZv{display:inline}
.WJIS{display:none}
.R1oQ{display:inline}
.Qp8o{display:none}
.KEYK{display:inline}
.R_Ad{display:none}
.XUdT{display:inline}
</style><span class="XUdT">54</span><span style="display:none">61</span><div style="display:none">61</div><div style="display:none">131</div><span style="display:none">177</span><span class="R_Ad">177</span><span></span><div style="display:none">214</div><span></span><span class="XUdT">.</span><span class="R_Ad">18</span><div style="display:none">18</div><span class="xn4v">125</span><span class="R_Ad">136</span><div style="display:none">136</div><span style="display:none">180</span><div style="display:none">180</div><span style="display:none">209</span><span class="xn4v">209</span><div style="display:none">209</div><span style="display:none">218</span><span class="WJIS">218</span><div style="display:none">218</div><span style="display: inline">251</span><span class="27">.</span><span class="Qp8o">6</span><span style="display:none">25</span><span style="display:none">40</span><span class="WJIS">40</span><span class="Qp8o">54</span><div style="display:none">54</div><span class="Qp8o">57</span><span style="display:none">71</span><span class="WJIS">71</span><div style="display:none">71</div><span style="display:none">80</span><span style="display:none">114</span><span class="WJIS">114</span><div style="display:none">114</div><span style="display:none">130</span><div style="display:none">130</div><div style="display:none">134</div><span class="143">150</span><div style="display:none">175</div><span style="display:none">188</span><div style="display:none">188</div><span></span><span></span><span class="122">.</span><span class="WJIS">3</span><span></span><div style="display:none">9</div><span class="Qp8o">152</span><div style="display:none">152</div><span class="30">200</span></span></td>


البته سایر فیلدهای ip دارای الگوهای متغیر دیگری هستند و این کار را کمی مشکل میکند ولی وقتی مرورگر میتواند به راحتی صفحه را رندر کند پس من هم میتوانم.یک تابع کوچک ۴ فیلد مورد نظر من را استخراج میکند(ip-port-country-type) :



function parse_ip_port()
{
maingrepstr="((span|div|style|class=\"[0-9]+\"|display:[ ]?inline\")>\.?[0-9]+\.?[0-9]*<)"
grepstr="$maingrepstr"
unset temparray
temparray=(`grep -En '^\..*' $rand_file_name | cut -d ':' -f 1`)
for i in `seq 0 $((${#temparray[@]}-2))`;
do
unset tempstr
linenum="${temparray[$i]}"
tempstr="`sed -n "${linenum}p" "$rand_file_name" | grep '{display:inline}' | grep -Eo '^\.[^{]+' | cut -c 2- | tr -d '\n'`"
if [ -n "$tempstr" ];then
grepstr="$grepstr|(class=\"$tempstr\">\.?[0-9]+\.?[0-9]*<)"
fi
if [ "${linenum}" -eq "$((${temparray[$i+1]}-1))" ];then
continue
else
offset=$((${temparray[$i+1]}-1))
echo "`sed -n "${linenum},${offset}p" "$rand_file_name" | grep -Eo "$grepstr"| grep -Eo '(^\.?[0-9]+\.?[0-9]*)|(>[\.]?[0-9]+[\.]?[0-9]*<)' | grep -Eo '[0-9]+' | tr '\n' '.' | sed 's/\.$//'`:`sed -n "${linenum},${offset}p" "$rand_file_name" | grep -Eo '^[0-9]+' | head -n 1`:`sed -n "${linenum},${offset}p" "$rand_file_name" | grep -Eo '>.*</span>' | grep -Eo '> .*<' | grep -Eo '[^>].*[^<]' | cut -c 2-`:`sed -n "${linenum},${offset}p" "$rand_file_name" |grep -Eio '<td>(HTTP|HTTPS|socks.*)</td>' | grep -Eo '>[^<]+' | cut -c 2-`" >>$rand_file_pages
grepstr="$maingrepstr"
fi
done
lastindex="$((${#temparray[@]}-1))"
tempstr="`sed -n "${temparray[$lastindex]}p" "$rand_file_name" | grep '{display:inline}' | grep -Eo '^\.[^{]+' | cut -c 2- | tr -d '\n'`"
if [ -n "$tempstr" ];then
grepstr="$grepstr|(class=\"$tempstr\">\.?[0-9]+\.?[0-9]*<)"
fi
echo "`sed -n "${temparray[$lastindex]},$((${temparray[$lastindex]}+25))p" "$rand_file_name" | grep -Eo "$grepstr"| grep -Eo '(^\.?[0-9]+\.?[0-9]*)|(>[\.]?[0-9]+[\.]?[0-9]*<)' | grep -Eo '[0-9]+' | tr '\n' '.' | sed 's/\.$//'`:`sed -n "${temparray[$lastindex]},$((${temparray[$lastindex]}+25))p" "$rand_file_name" | grep -Eo '^[0-9]+' | head -n 1`:`sed -n "${temparray[$lastindex]},$((${temparray[$lastindex]}+25))p" "$rand_file_name" | grep -Eo '>.*</span>' | grep -Eo '> .*<' | grep -Eo '[^>].*[^<]' | cut -c 2-`:`sed -n "${temparray[$lastindex]},$((${temparray[$lastindex]}+25))p" "$rand_file_name" | grep -Eio '<td>(HTTP|HTTPS|socks.*)</td>' | grep -Eo '>[^<]+' | cut -c 2-`" >>$rand_file_pages
return
}

متغیر $rand_file_name فایل html دانلود شده است که باید پردازش شود.نتایج حاصل از پردازش در $rand_file_pages قرار میگیرند.برای امتحان صفحه http://www.hidemyass.com/proxy-list/1 را از طریق قند شکن دانلود کنید و با انتساب ۲ فایل ورودی و خروجی به ۲ متغیر ذکر شده این تابع را آزمایش کنید.
آشنایی با sed,grep و سینتکس regex و چندین خاصیت مهم bash میتواند حاصل این تمرین باشد.میتوانید از awk به جای sed و grep استفاده کنید.در برخی دیگر از صفحات web متغیرهای جاوا اسکریپت جایگزین تعریف استایلهای نظیر


.xn4v{display:none}
میشوند اما پردازش آن نیز ساده است.
میدانم که کد بالا یک کد اسپاگتی است.اما بسیار کوتاه است و معنی و مفهوم آن برای کسی که از regex سر در بیاورد راحت است.
کد هر سایتی به مرور زمان ممکن است تغیییر کند که ممکن است نیاز به تغییراتی در تابع باشد.

ahmad24shargh
شنبه 28 اردیبهشت 1392, 16:29 عصر
من اسکریپتی دارم به صورت یه cronjob با مجوز ریشه اجرا میشه اما لاگین من به صورت یه کاربر معمولیه.میخوام این اسکریپت log فایل خودشو در دسکتاپ کاربر لاگین کرده قرار بده و نه کاربر ریشه.طبیعتا نمیتونم از مقدار متغیرهایی نظیر USER یا USERNAME یا LOGNAME استفاده کنم.راه حل استفاده از دستور who هست.نمیدونم سینتکس دستور درسته یا نه ولی در همه حالاتی که در دو لینوکس فدورا و دبیان 7 امتحان کردم چه با لاگین کاربر عادی یا ریشه درست جواب داده.



current_logged_user="`who | grep -v root | head -n 1 | cut -d " " -f1 | tr -d '\n'`" #${MAIL##*/}
[[ -z "${current_logged_user}" ]] && current_logged_user="$USER"

به جای grep -v root میشه از

grep ' :0 '
استفاده کرد به شرط آنکه کاربر فقط از طریق دسکتاپ لاگین کنه و از محیط ترمینال برای اجرای اسکریپت استفاده نکنه.تمام تلاش من اینه که هر اسکریپتی مینویسم تا حد امکان پرتابل باشه.به خاطر اینه که گاهی به نظر میرسه لقمه رو دور سر میچرخونم.
اگر کسی سینتکس بهتر یا دستور دیگه ای سراغ داره لطفا راهنمایی کنه.

FastCode
شنبه 28 اردیبهشت 1392, 17:07 عصر
به جای `` بهتر هست که از $() استفاده کنید.خطا موقع نوشتن کمتره.

ahmad24shargh
شنبه 28 اردیبهشت 1392, 17:13 عصر
دنیای نرم افزارهای آزاد تا حالا نتونسته دانلود منیجری به قدرتمندی IDM ویندوز بوجود بیاره.
در محیط گرافیکی flareget رقیبی نداره.jdownloader با وجود قدیمی بودنش خیلی خوبه.
در محیط متنی wget بابابزرگ حساب میشه و curl یه دانلود منیجر بسیار حرفه ای تر به شمار میاد اما سریعترین دانلود منیجر بی شک axel هست.
اما تمام این دانلود منیجرها باید بزنن بغل وقتی aria2 میاد وسط.aria2 سریعترین نیست ولی منعطفترین و قدرتمندترین دانلود منیجر تحت خط فرمان هست.از پروتوکولهای مرسوم دانلود پشتیبانی میکنه و چند بندیه و ...
فقط ۲ تا مشکل هست.خیلی از سایتهای دانلودی(http)از مکانیزم کوکی یا ارجاع استفاده میکنند و اگر دانلودری نتونه این دو مکانیزم رو ساپورت کنه نمیتونه از یه سری سایتها دانلود کنه.
برای اولی aria2 آپشن load-cookies رو داره که به صورت عمومی اعمال میشه.برای دومی هم آپشن referer رو داره که البته باید با آپشن parameterized-uri توامان باشه.
من از یه لیست دانلودی استفاده میکنم که کلیه URL ها به همراه آپشن ارجاع و در صورت وجود سایر URI های اون لینک دانلود در اون قرار داره با دستور زیر :


/usr/local/bin/aria2c --input-file=/home/ahmad/Desktop/downlist.txt --log=/home/ahmad/Desktop/aria2.log --log-level=notice --retry-wait=1 --max-tries=0 --max-concurrent-downloads=2 --split=4 --max-connection-per-server=1 --connect-timeout=600 --enable-dht --stop=$((28500-((`date +"%H"`*60*60)+(`date +"%M"`*60)))) --file-allocation=prealloc --parameterized-uri=true --check-certificate=false --check-integrity=true --dir=/big-download --load-cookies=`{ \cp -f $(find "$HOME" -name "cookies.sqlite" 2> /dev/null | grep "mozilla") /tmp;echo /tmp/cookies.sqlite; }`
نکات مربوط به دستور بالا:
آپشن ارجاع در فایل downlist.txt مربوط به هر لینک دانلود قرار داره و آپشن عمومی نیست.
همزمان ۲ فایل دانلود میشن اما در زمان واحد صرفا یک کانکشن به یک سرور خاص مجازه و کانکشنها حداکثر از ۴ بند استفاده میکنند.
من معمولا از یه cronjob برای دانلود استفاده میکنم که در ساعت 1:02 بامداد شروع میشه.زمان پایان دانلود رو خود دانلود منیجر تعیین میکنه.(در آپشن stop).قبلا مقدار این آپشن به صورت ثابت بود اما حالا اون رو متغیر کردم.چون گاهی دانلود به صورت cronjob اجرا نمیشه و با تاخیر به صورت فرمان مستقیم اجرا میشه.در هر حال در ساعت 7:55 باید دانلود قطع بشه.


--stop=$((28500-((`date +"%H"`*60*60)+(`date +"%M"`*60))))
دستور بالا تعداد ثانیه های باقیمانده تا 7:55 دقیقه رو به آپشن stop میفرسته.
من از مرورگر Mozilla FireFox استفاده میکنم.دستور


--load-cookies=`{ \cp -f $(find "$HOME" -name "cookies.sqlite" 2> /dev/null | grep "mozilla") /tmp;echo /tmp/cookies.sqlite; }`
فایل دیتابیس کوکیهای فایرفاکس رو به پوشه /tmp کپی و مسیر فایل رو به آپشن load-cookies میفرسته.
حالا چرا کپی کنیم و از خود فایل استفاده نکنیم؟چون اگر فایرفاکس در حال اجرا باشه فایلهای دیتابیسش رو قفل میکنه

ahmad24shargh
شنبه 28 اردیبهشت 1392, 17:49 عصر
من دو لینوکس پس از ویندوز روی سیستم حقیقی نصب کردم.ابتدا فدورا که سیستم عامل اصلی کامپیوتر من است و سپس دبیان ۷.به محض بوت ویندوز با مشکل به هم ریختن ساعت سیستم مواجه میشدم و در سوییچ کردنهای بعدی بین لینوکس و ویندوز تکرار میشد.راه حل عمومی آن به صورت زیر است‌:
با دستور tzselect ناحیه زمانی مناسب را انتخاب کنید(در صورتیکه قبلا انتخاب نکرده باشید)
ابتدا با اتصال به سرور ntp ساعت سیستم را تنظیم کنید.از دستور ntpdate استفاده کنید.
دستور زیر را اجرا کنید :


hwclock --systohc
در فایل etc/adjtime/ عبارت UTC را به LOCAL تغییر دهید.

FastCode
شنبه 28 اردیبهشت 1392, 18:30 عصر
من دو لینوکس پس از ویندوز روی سیستم حقیقی نصب کردم.ابتدا فدورا که سیستم عامل اصلی کامپیوتر من است و سپس دبیان ۷.به محض بوت ویندوز با مشکل به هم ریختن ساعت سیستم مواجه میشدم و در سوییچ کردنهای بعدی بین لینوکس و ویندوز تکرار میشد.راه حل عمومی آن به صورت زیر است‌:
با دستور tzselect ناحیه زمانی مناسب را انتخاب کنید(در صورتیکه قبلا انتخاب نکرده باشید)
ابتدا با اتصال به سرور ntp ساعت سیستم را تنظیم کنید.از دستور ntpdate استفاده کنید.
دستور زیر را اجرا کنید :


hwclock --systohc
در فایل etc/adjtime/ عبارت UTC را به LOCAL تغییر دهید.
البته به صرفه تر هست که وقتی دو تا لینوکس دارید در ویندوز تنظیم کنید: Hardware clock is in utc.من چون چند سال ویندوز نداشتم یادم نیست از کجا تنظیم میشه.

ahmad24shargh
شنبه 28 اردیبهشت 1392, 18:52 عصر
از آپشنهای عمومی و قدیمی تر به جای آپشنهای اختصاصی و جدیدتر استفاده کنید.از آپشنهای deprecated استفاده نکنید.ورژنهای مختلفی از یک بسته ممکن است در سیستمهای متفاوت نصب باشند.به عنوان یک مثال برای خاموش کردن سیستم در فدورا 18 من از دستور

/usr/sbin/shutdown -P now
استفاده میکردم.اما در دبیان ۷ این دستور جواب نداد و به جای آپشن P از h استفاده کردم که در هر دو سیستم جواب میداد.

اغلب اوقات از مسیر کامل دستور مورد نظر استفاده کنید.مثلا به جای shutdown از usr/sbin/shutdown/ استفاده کنید.زیرا به هر دلیل ممکن است متغیر PATH به درستی تنظیم نشده باشد.به عنوان مثالی دیگر من نرم افزار wxHexEditor را کامپایل و نصب کرده ام.اگر نام آن را به تنهایی در خط فرمان بنویسم اجرا میشود و نیازی به ذکر مسیر نیست ولی در دستور sudo ننوشتن مسیر باعث شکست در اجرای این دستور میشود.

همیشه وجود فاصله در مسیر یا حاصل عبارات را در نظر بگیرید.این مورد میتواند بسیار جدی باشد.

در حاصل عبارات که مورد مقایسه قرار میگیرد یا به یک متغیر منتسب میشود کاراکتر احتمالی نوسطر را با دستور

tr -d '\n'
حذف کنید.وجود این کاراکتر باعث رفتار غیر منتظره اسکریپت میشود.

تا حد امکان از متغیرها به جای ثوابت استفاده کنید.مثلا من در اسکریتی که برای مدیریت کانکشن اینترنتی استفاده میکنم به جای نوشتن ۲ انتساب زیر :

con_uuid=977c7b23-d2de-41c5-9275-12c713964393
my_con_str=802-3-ethernet
که برای اجرای اسکریپت نیاز دارم این دو متغیر را به طریق زیر محاسبه میکنم :

my_real_connection_type=`nmcli -t -f TYPE con 2>/dev/null | grep -Ei "ppp[a-z]*" | head -n 1 | tr -d '\n'`
if [ -z "${my_real_connection_type}" ];then
my_real_connection_type=`nmcli -t -f TYPE con 2>/dev/null | grep -Ei "ppp*" | head -n 1 | tr -d '\n'`
fi
my_con_str=`nmcli -t -f TYPE dev | head -n 1 | tr -d '\n'`
if [ -z "$my_con_str" ];then
echo -e "`date +"%A %d %B %Y %R"`\tFATAL ERROR. variable 'my_con_str' not set correctly" | tee -a "$logfile" 2> /dev/null
exit 3
fi
con_uuid=`nmcli -t -f TYPE,UUID con | grep "${my_real_connection_type:-${my_con_str}}" | head -n 1 | cut -d ':' -f 2 | tr -d '\n'`
if [ -z "$con_uuid" ];then
echo -e "`date +"%A %d %B %Y %R"`\tFATAL ERROR. variable 'con_uuid' not set correctly" | tee -a "$logfile" 2> /dev/null
exit 3
fi
fi

کلیه خطاهای ممکن احتمالی را برسی کنید به خصوص زمانی که به فایل یا منبع خارجی نیاز دارید.من اسکریپتی دارم که کد اصلیش 60-70خطی بیشتر نیست ولی با مکانیزمهایی که گفتم میشه حدود 800 خط !!! اما پرتابل و متحمل خطا میشه.حتما exit code مناسب با خطا رو ست کنید و یه پیغام مناسب رو به خروجی مورد نظر بفرسته.

اگر یه اسکریپت مفصل یا با احتمال خطای زیاد مینویسید تلاش کنید لاگ نویسی رو در اسکریپت تدارک ببینید.

من عادت مستند کردن ندارم.ولی شما حتما خودتون عادت بدید.!!!عیب یابی یه کد حجیم یا پیچیده جوون رو پیر میکنه.(این نکات مربوط به برنامه نویسیه که با یه درجه تخفیف در مورد اسکریپتهای bash کاربرد داره)

تا حد امکان از ویژگیهای درونی Bash بهره بگیرید.مثلا من میخوام نام کاربر رو از متغیر MAIL استخراج کنم:

MAIL=/var/spool/mail/ahmad
میتونم از دستورات خارجی نظیر cut بهره بگیرم یا از یوتیلیتی basename به صورت
user=$(basename $MAIL)
اما استفاده از دستورات خارجی بار پردازشی داره میتونم از خاصیت بسط پارامتر bash بهره بگیریم :
user=${MAIL##*/}

از دستورات عمومی تر استفاده کنید مثلا به جای awk از sed و grep استفاده کنید.

در عبارات شرطی و مقایسه ای تدابیری اتخاذ کنید تا نوع عملوندها با عملگر متناسب باشد.مثلا عملگر eq- انتظار دارد دو عملوندش عدد صحیح باشند.حالا اگر یک عبارت را به جای یکی از عملوندها مینویسید و انتظار دارید خروجی عدد صحیح داشته باشد ممکن است خروجی یک رشته خطا باشد.در این حالت عملکرد اسکریپت نامشخص است.
این چیزایی بود که به نظرم اومد.

FastCode
شنبه 28 اردیبهشت 1392, 19:03 عصر
user=${MAIL##*/}
بلاخره یک چیز جدید پیدا کردم.
ممکنه توضیح بدید این خط چکار میکنه؟
مرسی.

ahmad24shargh
شنبه 28 اردیبهشت 1392, 19:08 عصر
بلاخره یک چیز جدید پیدا کردم.
ممکنه توضیح بدید این خط چکار میکنه؟
مرسی.
اگر شما مستندات bash رو باز کنید یه سرفصل داره به نام Parameter Expansion
ذیل اون :

${parameter#word}
${parameter##word}
Remove matching prefix pattern. The word is expanded to produce a pattern just as in pathname
expansion. If the pattern matches the beginning of the value of parameter, then the result of the
expansion is the expanded value of parameter with the shortest matching pattern (the ``#'' case) or
the longest matching pattern (the ``##'' case) deleted. If parameter is @ or *, the pattern removal
operation is applied to each positional parameter in turn, and the expansion is the resultant list.
If parameter is an array variable subscripted with @ or *, the pattern removal operation is applied
to each member of the array in turn, and the expansion is the resultant list.

ahmad24shargh
شنبه 28 اردیبهشت 1392, 19:15 عصر
بزرگترین مشکل رایج کاربران لینوکس اینه که میخوان سیستم dual-boot یا مولتی بوت داشته باشند بوت صحیح سیستم و دسترسی به تمام سیستم عاملهای موجود بر روی کامپیوتر است.
کاربران ایرانی کامپیوتر را با ویندوز فرا میگیرند و نمیتوانند ناگهانی از ویندوز جدا شوند.تا همین سالهای اخیر بیشتر سخت افزارهای بازار صرفا ویندوزی بودند و درایور یا راهنمایی برای لینوکس نداشتند.
به جهت سازگاری و نیز برخی نرم افزارهای تجاری خاص(و صد البته بازیها) وجود ویندوز بر روی بسیاری از سیستمها حیاتی است.بیشتر وبسایتهای دولتی ایران با طراحی در پیتشان صرفا با مرورگر IE
سازگاری دارند !! و ...
نرم افزارهای ماشین مجازی هم کاربردهای خاص خودشان را دارند.نرم افزار wine هم محدودیتهای زیادی دارد و لینوکس ویندوز نمیشود.
با هرگونه تغییر در ترتیب پارتیشنها یا فرمت کردن آنها یا نصب و حذف سیستم عاملها ترتیب بوت به هم میریزد و ممکن است یک سیستم عامل ار دسترس خارج شود.
کسی که میخواهد کاربر لینوکس شود باید بداند کمی کوشش و تقلا لازم است و بدون سعی و تلاش نمیتوان کاربر لینوکس شد.در لینوکس برخلاف ویندوز همه چیز حاضر و آماده نیست(-)
اما قابلیت سفارشی سازی و قدرت و اختیارات فراوانی نیز وجود دارد(+++...)
شما باید به یک بوت منیجر همه کاره عادت کنید و با آن بتوانید تمام نیازهای خود را تامین کنید.هر سیستم عامل جدیدی که نصب میشود حق ندارد mbr و پارتیشن راه انداز را تغییر دهد و صرفا باید
بوت منیجر خود را بر روی همان پارتیشنی که نصب میشود مستقر نماید.بوت منیجر همه کاره پس از نصب/حذف سیستم عامل با چند خط متنی تنظیم میشود تا سیستم عامل جدید را به لیست خود بیفزاید
یا از آن کم کند.
grub با قابلیتهایی که دارد به بوت منیجر اصلی لینوکس تبدیل شده.انشعاب خاصی از گراب به نام grub4dos که در سیستم عامل وبندوز قابل استفاده است(و لینوکس) از grub legacy منشعب شده ولی
همانند grub2 ماژولار است.و میتواند انواع بسیاری از سیستم عاملهای متداول را مدیریت کند.


GRUB4DOS, the top of boot loader in the world.


در آدرس زیر میتوانید آنرا دانلود کنید(با قند شکن)


http://code.google.com/p/grub4dos-chenall/downloads/list



مستندات :



http://reboot.pro/forum/66-grub4dos/
http://www.rmprepusb.com/tutorials/grub4dos



پیکر بندی هارد دیسک من بدین صورت است:درایو c راه انداز بوده که با فرمت ntfs و سکتور راه انداز آن مربوط به ویندوز xp است اما سیستم عاملی روی آن نصب نیست.ویندوز xp در کامپیوتر من نصب نیست !! اما هر زمان بخواهم با خیال راحت آن را بر روی ویندوز ۸ و ۲ لینوکس فعلی نصب میکنم !! من از grub4dos به عنوان بوت منیجر اصلی بهره میگیرم اما آن را بر روی کامپیوتر نصب نکرده ام !!!
بوت منیجر ویندوز nt5(ویندوزهای 2000,xp و 2003) ntldr نام دارد و بوت منیجر ویستا و 7 و 8 bootmgr نام دارد که همگی در درایو c قرار دارند(ویندوزها بر روی هر پارتیشنی که باشند فرقی نمیکند، بوت منیجر باید بر روی پارتیشن راه انداز مستقر باشد).بوت منیجر لینوکسها grub2 است(عملا بایستی فایلی به نام core.img بارگذاری شود)
سیستم عاملهای ویندوز باید صرفا توسط بوت منیجرشان یا توسط بوت سکتور پارتیشنی که در آن نصبند راه اندازی شوند.لینوکس هم به صورت مستقیم و هم توسط بوت منیجر راه اندازی میشود.البته میتوان توسط بوت سکتور هم آنرا راه اندازی کرد اما بوت سکتور در پارتیشنهای فعلی ext4 من به صورت یک فایل ۵۱۲ بایتی به نام boot.img موجود است(و نه بوت سکتور فیزیکی)
من گفتم که grub4dos را در کامپیوترم نصب نکردم پس چطور از آن استفاده میکنم؟
فایل بوت منیجر grub4dos دارای نام grldr است. من آن را به درایو c کپی کرده ام.کامپیوتر من توسط بوت منیجر xp یعنی فایل ntldr بوت میشود.فایل ntldr را به ontldr تغییر نام دادم و فایل grldr را به ntldr تغییر نام دادم.هر زمان که بخواهم ویندوز xp را بوت کنم صرفا فایل ontldr بارگذاری میشود.
grub4dos دارای یک فایل پیکربندی به نام menu.lst است(البته وجود آن اختیاری است) محتویات این فایل در کامپیوتر من :




#After Installing NVIDIA Edit /etc/modprobe.d/blacklist.conf
#blacklist nouveau
#then recreate initrd(initramfs)
gfxmenu /SPLASH
default 0
timeout 5

title Fedora 18
root (hd0,1)
kernel /boot/grub2/i386-pc/core.img

title Debian 7.0.0
root (hd0,5)
kernel /boot/grub/core.img

#title Fedora 18 Direct boot
#root (hd0,1)
#kernel /boot/vmlinuz-3.8.11-200.fc18.x86_64 root=UUID=0b4def03-4be6-4b34-929e-a27d264b12b2 ro rd.md=0 rd.lvm=0 rd.dm=0 rd.luks=0 vconsole.keymap=us rhgb quiet
#initrd /boot/initramfs-3.8.11-200.fc18.x86_64.img

#title exton-defender-64bit-Fedora
#root (hd0,2)
#kernel /boot/exton-fedora-64bit/isolinux/vmlinuz0 root=live:LABEL=root live_dir=/boot/exton-fedora-64bit/LiveOS rootfstype=auto persistent rw live-config.timezone=Asia/Tehran rd.live.image rd.live.overlay quiet rhgb rd.luks=0 rd.md=0 rd.dm=0
#initrd /boot/exton-fedora-64bit/isolinux/initrd0.img

title Boot Win 8,7,vista
chainloader /bootmgr

title Boot Windows XP's
chainloader /ontldr

title commandline
commandline

title ShutDown
halt


تمام کاری که باید بکنید نوشتن یا بهتر بگویم کپی پیست کردن جند خط در فایل menu.lst است تا سیستم عامل جدید به سلامتی به منوی بوت اضافه یا حذف شود.
من از طرح پارتیشن MBR استفاده میکنم و نه GPT(طرح GUID Partition Table) که توسط ویندوز ویستا به بعد متداول شد به جهت حفظ سازگاری.
باوجود همه مزایایی که پارتیشنهای LVM لینوکس دارند صرفا آنها را با ext4 فرمت کنید فعلا از btrfs برای فرمت پارتیشنهای لینوکس استفاده نکنید به جهت حفظ سازگاری.
لینوکس debian به سخت نصب شدن مشهور است من بدون تست آن در ماشین مجازی سریعا آن را نصب کردم و جالب آنکه نتوانستم بوت منیجر آن را روی هیچ پارتیشنی نصب کنم.در بوت بعدی با نوشتن چند دستور ساده در خط فرمان grub4dos آنرا بوت کردم و تنها پس از بوت بود که توانستم بوت منیجر آنرا نصب کنم.برای نصب آن هم از یک هارد اکسترنال که دارای یک پارتیشن ext4 بود استفاده کردم به این ترتیب که فایل ایزوی dvd نصب را به همراه ۲ فایل مخصوص نصب از روی هارد(hd-media vmlinz & initrd.img) به این پارتیشن کپی کردم و برای بوت آن از grub4dos استفاده کردم با دستور زیر :



title Debian Installer(native_hd_media)
find --set-root /debian-7.0.0-amd64-DVD-1.iso
kernel /vmlinuz priority=low video=vesa:ywrap,mtrr vga=788 --
initrd /initrd.gz



واقعا grub4dos بین تمام boot manager ها همه کاره و آچار فرانسس.

ahmad24shargh
شنبه 28 اردیبهشت 1392, 19:45 عصر
سیستم فایل ext4 عمده ترین سیستم فایل فعلی لینوکسه.یه نقطه ضعف بزرگ توش دیدم.نمیخوام بحث فنی کنم سر هم در نمیارم.
من یه فایل ۴ گیگابایتی کپی کردم به یه پارتیشن ext4.با e4defrag اونو defrag کردم.
بعد از مدتی لازم شد دوباره این فایل رو کپی کنم به اون پارتیشن.موجودی اون پارتیشن رو انتقال دادم به یه پوشه موقتی و اون رو با آپشن O extent- دوباره فرمت کردم.چیزی که توی خروجی دستور e4defrag توصیه شده بود.

extent Instead of using the indirect block scheme for storing the location of data blocks in an inode, use extents instead. This is a much more effi‐cient encoding which speeds up filesystem access, especially for large files.
پس از کپی فایل ۴ گیگابایتی به پارتیشن خالی با کمال تعجب این فایل یک تکه نبود!
اینقدر عجیبه که به پیکربندی سیستم عامل خودم شک دارم.آیا این آپشن مقصره؟
اگه کسی علتشو میدونه لطفا بگه

prpe26
شنبه 28 اردیبهشت 1392, 20:25 عصر
سیستم فایل ext4 عمده ترین سیستم فایل فعلی لینوکسه.یه نقطه ضعف بزرگ توش دیدم.نمیخوام بحث فنی کنم سر هم در نمیارم.
من یه فایل ۴ گیگابایتی کپی کردم به یه پارتیشن ext4.با e4defrag اونو defrag کردم.
بعد از مدتی لازم شد دوباره این فایل رو کپی کنم به اون پارتیشن.موجودی اون پارتیشن رو انتقال دادم به یه پوشه موقتی و اون رو با آپشن O extent- دوباره فرمت کردم.چیزی که توی خروجی دستور e4defrag توصیه شده بود.

extent Instead of using the indirect block scheme for storing the location of data blocks in an inode, use extents instead. This is a much more effi‐cient encoding which speeds up filesystem access, especially for large files.
پس از کپی فایل ۴ گیگابایتی به پارتیشن خالی با کمال تعجب این فایل یک تکه نبود!
اینقدر عجیبه که به پیکربندی سیستم عامل خودم شک دارم.آیا این آپشن مقصره؟
اگه کسی علتشو میدونه لطفا بگه

سیستم فایلهای یونیکس مثل UFS, Ext2,3,4 , ZFS و امثالهم ، نیازی به دفرگ ندارند. دفرگ کردن کارتون رو خراب کرده :)

FastCode
شنبه 28 اردیبهشت 1392, 20:27 عصر
سیستم فایل ext4 عمده ترین سیستم فایل فعلی لینوکسه.یه نقطه ضعف بزرگ توش دیدم.نمیخوام بحث فنی کنم سر هم در نمیارم.
من یه فایل ۴ گیگابایتی کپی کردم به یه پارتیشن ext4.با e4defrag اونو defrag کردم.
بعد از مدتی لازم شد دوباره این فایل رو کپی کنم به اون پارتیشن.موجودی اون پارتیشن رو انتقال دادم به یه پوشه موقتی و اون رو با آپشن O extent- دوباره فرمت کردم.چیزی که توی خروجی دستور e4defrag توصیه شده بود.

extent Instead of using the indirect block scheme for storing the location of data blocks in an inode, use extents instead. This is a much more effi‐cient encoding which speeds up filesystem access, especially for large files.
پس از کپی فایل ۴ گیگابایتی به پارتیشن خالی با کمال تعجب این فایل یک تکه نبود!
اینقدر عجیبه که به پیکربندی سیستم عامل خودم شک دارم.آیا این آپشن مقصره؟
اگه کسی علتشو میدونه لطفا بگه
http://computer-forensics.sans.org/blog/2011/08/22/understanding-ext4-part5-large-extents
پاراگراف دوم

من خودم الان از xfs برای همه چیز و zfs برای فایل های مهم استفاده میکنم.
و فقط برای boot از ext4 استفاده میکنم برای همین الان چیزی دم دست ندارم که باهاش تست کنم.

defrag کلا در لینوکس کار اشتباهی هست.همین ۱۰ ۱۵ روز پیش داشتم یک مقاله میخوندم و به سرم زد که همه ی xfs هام رو defrag کنم.
زمان اجرای iceweasel رو از 1.4 ثانیه رسوند به بالای ۵ توی سیستم من.البته boot رو سریعتر کرد.ولی پشیمونم و فایده نداره.

ahmad24shargh
شنبه 28 اردیبهشت 1392, 21:00 عصر
من تو پستهای قبلی گفتم از بوت منیجر grub4dos استفاده میکنم.این بوت منیجر فایلهای iso رو به یه درایو نگاشت میکنه و از اون به بعد میتونید از اون درایو استفاده کنید.توی بسیاری از Boot Disk ها این خاصیت واقعا مورد نیازه.من میخواستم فایل iso دی وی دی دبیان ۷ رو به همین صورت استفاده کنم.
دستور map که برای این عمل استفاده میشه 2 حالت داره.یا باید فایل مورد نظر یک تکه باشه تا بتونه مستقیما اونو نگاشت کنه.یا با آپشن mem-- کل اونو به حافظه اصلی بار کنه و ...
به خاطر حجم زیادش نمیخواستم اونو به حافظه لود کنم.حتی بعد از defrag هم با اروری از سوی دستور map روبروشدم که تعجب کردم ولی وقتی اون مقاله رو که FastCode عزیز معرفی کرده بود خوندم متوجه قضیه شدم.در هر حال من در مورد درایوهای اصلی نه دیفرگ میکنم نه چک دیسک.لینوکس خودش یه درستی تشخیص میده کی باید پارتیشنها رو چک کنه و خواندن و نوشتن اطلاعات در لینوکس امنیت بسیار بالایی داره.

FastCode
شنبه 28 اردیبهشت 1392, 21:53 عصر
من برای این موارد معمولا از یک پارتیشن جدا استفاده میکنم و image رو با dd میریزم توش و بقیه داستان

ahmad24shargh
جمعه 04 مرداد 1392, 20:20 عصر
من از ویندوز استفاده میکردم تا این که بالاخره تصمیم گرفتم به لینوکس مهاجرت کنم.در کنار ویندوز لینوکس فدورا رو نصب کردم و چند تا دیسترویه دیگه رو هم تست کردم تا اینکه بالاخره ویندوز رو پاک کردم و کاملا به لینوکس عادت کردم.
نصب و تست دیستروهای مختلف بارها منو به تغییر وضعیت پارتیشنها مجبور کرد.از اونجایی که یه کامپیوتر BIOS-Based دارم طبیعتا از طرح Intel-PC یا همون MBR برای پارتیشن بندی به صورت پیشفرض استفاده میکردم.اما مشکلی که mbr ایجاد میکنه اینه که هارد فقط میتونه شامل 4 تا پارتیشن primary باشه و هر دستکاری فقط تو پارتیشنهای logical بی دردسره.این محدودیت به شدت آزاردهنده بود تا اینکه با gdisk طرح پارتیشن رو به pure gpt تغییر دادم(غیر مخرب).2 مگابایت در ابتدی هارد به صورت فرمت نشده با پرچم bios_grub و بقیه پارتیشنها ... بدون اینکه اطلاعات فعلی از دست برند.




Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 17.4kB 2097kB 2080kB bios_grub bios_grub
2 2097kB 841MB 839MB fat32 boot Drive boot, legacy_boot
3 841MB 10.5GB 9664MB ntfs Reserved
4 10.5GB 68.2GB 57.6GB ext4 Fedora
68.2GB 68.2GB 5120B Free Space
5 68.2GB 109GB 40.8GB FreeBSD root
6 109GB 112GB 3221MB FreeBSD home
112GB 112GB 2048B Free Space
7 112GB 133GB 21.0GB xfs Arch root
8 133GB 154GB 21.0GB ntfs Programming & Storage
154GB 154GB 2097kB Free Space
9 154GB 175GB 21.0GB ntfs My Documents
10 175GB 191GB 15.7GB xfs Arch var
11 191GB 200GB 9437MB xfs Arch home
12 200GB 224GB 24.1GB ext4 Debian
13 224GB 250GB 25.7GB ntfs Windows
250GB 250GB 172kB Free Space



من FreeBSD هم نصب دارم که همونطور که میدونید مثل LVM لینوکس یه جور طرح پارتیشن منطقی داره به نام BSD DiskLabel یا همون Slice ها.چیزی که نمیدونستم این بود که باید این BSD Slice ها رو به طور جداگانه با همون gdisk تبدیل کنم به gpt primary partition که پس از مدتی ولگردی تو وب بالاخره متوجه شدم.
پس از تبدیل MBR به GPT هارد دیگه قابلیت بوت نداره.با یه هارد اکسترنال live دوباره گراب رو نصب کردم.با chroot کردن هم فایلهای fstab رو اصلاح کردم.حالا با خیال راحت هر تغییری بخوام تو پارتیشنها ایجاد میکنم.
من یه پرینتر canon دارم که قبلا تو فدورا 18 نصب و استفاده کرده بودم.چون نتونستم فدورا 18 رو به 19 ارتقا بدم ناچارا فدورا 18 رو پاک و 19 رو Fresh Install کردم.اما دیگه به هیچ نحوی نتونستم پرینتر رو استفاده کنم(با وجود موجود بودن درایور و ...) به شدت هم به پرینتر نیاز پیدا کرده بودم تصمیم گرفتم ویندوز 8 رو نصب کنم تا فعلا بتونم از پرینتر استفاده کنم تا بعدا مشکلمو با لینوکس حل کنم.میدونستم ویندوز xp روی gpt نصب نمیشه.با خیال راحت نصب ویندوز 8 رو آغاز کردم اما هیچ رقم نصب نمیشد !!!
با اعصاب خوردی شروع کردم به وبگردی ببینم باید چه کنم.
تا اینکه متوجه شده باید از MBR-Hybrid استفاده کنم.با هموم gdisk طرح MBR-Protective رو تبدیل کرپم.در اینحالت کل هارد شما یه پارتیشن gpt از نوع primary میشه و شما میتونید تا 3 پارتیشن رو به طرح mbr اضافه کنید.
پس از نصب ویندوز 8 کامپیوتر مستقیما با ویندوز بالا میاد.مجددا با رسانه live گراب رو نصب کردم و یه گزینه برای بوت ویندوز به گراب منو اضافه کردم.توی ویندوز دسترسی مستقیم به پارتیشنهای gpt نیست. و کل فضای قبل از اولین پارتیشن mbr-hybrd شده به صورت یک پارتیشن یک تکه gpt نمایش داده میشه(تو Disk Management) اگر پارتیشن gpt در لابلای 3 پارتیشن تبدیل شده موجود باشه به صورت UnAllocated نمایش داده میشه(این وضعیت اسفبار !!! از مایکروسافت بعیده)
من با نرم افزار winhex تو ویندوز هارد رو باز کردم.جالب این بود که طرح کامل پارتیشنها در داخل این نرم افزار نمایش داده میشد و در دسترس بود !!!