مدیریت
پروسه های پس
زمینه و پیش
زمینه
در
صورتی که از لینوکس
در محیط شبکه
ای و با
استفاده از یک
ترمینال متنی
استفاده میکنید،
پوسته فرمان
تنها چیزی است
که میتوانید
از آن استفاده
کنید و از محیطهای
گرافیکی خبری
نخواهد بود.
در صورتی که نیاز
داشته باشید
در آن واحد با
چندین برنامه
کار کنید، این
مسئله بسیار
محدود کننده
خواهد بود.
با اینکه
پوسته فرمان
محیطی گرافیکی
برای اجرای
برنامه ها
ندارد، ولی
قابلیتی دارد
که با استفاده
از آن میتوانید
برنامه های
فعال را بین
پس زمینه و پیش
زمینه جابجا
نمایید. با این
وسیله میتوانید
تعداد زیادی
برنامه را در یک
زمان درحال
اجرا داشته
باشید و بین
آنها حرکت کنید.
راههای
گوناگونی برای
قرار دادن یک
برنامه در پس
زمینه وجود
دارد. قبلا
اشاره کردیم
که با اجرای
برنامه ای که
به آخر آن یک
کاراکتر
آمپرسند (&)
اضافه شده
است، در پس زمینه
قرار میگیرد.
روش دیگر
استفاده از
دستور at برای اجرای
برنامه ها
بصورتی که به
پوسته متصل
نباشند ، است.
برای
توقف اجرای یک
فرمان و قرار
دادن آن در پس
زمینه، از کلیدهای
Ctrl+z
استفاده کنید.
پس از اینکه
اجرای دستور
متوقف شد، با
استفاده از
دستور fg میتوانید
آنرا به پیش زمینه
آورده،
استفاده کنید
و یا با دستور bg آنرا
در پس زمینه
بکار بگیرید.
شروع
پروسه های پس
زمینه
در
صورتی که
برنامه هایی
دارید که مایلید
در هنگام کار
کردن شما در
پس زمینه اجرا
شوند، پس از
دستور ، یک
علامت
آمپرسند (&) در
پایان آن
اضافه کنید.
برای مثال :
$ find /usr -print > /home/Alan/usrfiles &
این
دستور تمام فایلهای
موجود در دایرکتوری
usr لینوکس
شما را در فایلی
به نام usrfiles ذخیره میکند.
علامت
آمپرساند
باعث میشود که
این فرمان در
پس زمینه اجرا
شود. برای دیدن
اینکه چه
برنامه هایی
در پس زمینه
در حال اجرا
هستند، از
دستور jobs استفاده
کنید:
$ jobs
[1]- Stopped mc
[2]+ Stopped vi
[3] Running find /usr -print >usrfiles &
همانطور
که در خروجی
فرمان بالا
مشاهده میکنید،
سه برنامه mc ، vi و
دستور find در حال
اجرا در پس زمینه
هستند. علامت
مثبت در کنار
برنامه دوم نشان
میدهد که این
آخرین پروسه ای
است که درحالت
پس زمینه اجرا
شده است و
علامت منفی
نشاندهنده
پروسه ای است
که قبل از آخرین
پروسه، در پس
زمینه قرار
داده شده است.
بعلت اینکه
برنامه های
اول و دوم برای
کارکرد به
خروجی ترمینال
نیاز دارند تا
زمانی که در
حالت پیش زمینه
اجرا شوند،
متوقف باقی
خواهند ماند.
ولی برنامه find که به
خروجی ترمینال
نیازی ندارد،
در حال اجرا میباشد.
|
استفاده
از فرامین پس
زمینه و پیش
زمینه
در
ادامه مثالی
که در بالا
ذکر شد، برای
برگرداندن
برنامه vi به پیش
زمینه میتوانید
از دستور زیر
استفاده کنید:
$ fg %2
با این
دستور،
برنامه vi مجددا
روی پوسته
فرمان نمایش
داده خواهد
شد. با فشردن
کلیدهای Ctrl+z میتوانید
مجددا آنرا به
پس زمینه
بفرستید.
|
همانطوری
که دیدید برای
نمایش یک
برنامه پس زمینه
از علامت درصد
و شماره آن که
در دستور jobs مشخص
شده بود
استفاده شد.
علاوه بر
شماره، میتوانید
بجای آن نام برنامه
و یا قسمتی از
نام برنامه که
ابتدای آن
علامت سوال
قرار داده شده
استفاده کنید.
این کار هنگامی
که دو برنامه
مشابه به
همراه دو فایل
متفاوت باز
هستند، به شما
کمک خواهد
کرد. برای
روشن شدن مطلب
به مثال زیر
توجه کنید :
$ jobs
[2] Stopped vi
[3]- Stopped mc
[4]+ Stopped vi ./mytext
$ fg %?my
با
تایپ دستور fg %?my برنامه
vi که در
حال ویرایش فایل
mytext است،
در پوسته
فرمان نمایش
داده خواهد
شد.
پیکربندی
پوسته فرمان
برای
اینکه بتوانید
بطور موثرتری
از پوسته
فرمان خود
استفاده کنید،
میتوانید
آنرا بنا به
خواسته خود
تنظیم کنید.
برای این
منظور باید فایلهای
پیکربندی
پوسته فرمان
خود را ویرایش
کنید.
تعدادی
فایل پیکربندی
وجود دارد که
نحوه رفتار
پوسته فرمان
شما را تعیین
میکند. برخی
از این فایلها
برای تمام
کاربران و
پوسته ها
مشترک بوده و
برخی مخصوص یک
کاربر خاص
هستند. فایلهای
پیکربندی زیر
فایلهایی
هستند که هر
کاربر پوسته
فرمان در لینوکس
از آنها
استفاده میکند
:
برای
تغییر فایلهای
etc/profile و etc/bashrc باید
با کاربر ریشه
وارد سیستم
شده باشید. هر
کاربر میتواند
اطلاعات
موجود در فایلهای
bash_profile، bashrc و bash_logout موجود
در دایرکتوری
های خود را تغییر
دهد.
در
قسمت زیر با
برخی تنظیمات
فایلهای پیکربندی
پوسته فرمان
آشنا میشوید.
در بیشتر
موارد، تغییرات
در فایل bashrc موجود
در دایرکتوری
خانگی صورت میگیرد.
هرچند در صورتی
که شما یک مدیر
سیستم باشید،
ممکن است این
تنظیمات را
برای کل
کاربران خود
اعمال کنید.
تنظیم
اعلان فرمان
اعلان
فرمان شما از
تعدادی
کاراکتر تشکیل
شده است که هر
گاه که به نمایش
در می آید،
معنی آن این
است که پوسته
فرمان آماده
دریافت فرمان
جدید است.
محتویات
اعلان فرمان
در متغییر محیطی
PS1 قرار
دارد. در صورتی
که پوسته
فرمان شما به
ورودی بیشتری
نیاز داشته
باشد، از مقادیر
PS2، PS3 و PS4 نیز
استفاده
خواهد شد.
هنگامی
که سیستم لینوکس
شما نصب میشود،
اعلان فرمان
طوری تنظیم میشود
که حاوی
اطلاعات زیر
باشد: نام
کاربری شما،
نام کامپیوتر
شما و نام دایرکتوری
که اکنون در
آن قرار دارید.
این اطلاعات
در میان دو براکت
قرار گرفته و
در انتهای آن
برای کاربران
عادی یک علامت
دلار ($) و برای
کاربر ریشه
علامت پوند (#)
قرار دارد. در
زیر مثالی از یک
اعلان فرمان
را میبینید:
[alan@Memphis alan]$
این
امکان وجود
دارد تا
اطلاعات
مختلفی را به
اعلان
فرمانتان
اضافه کنید. این
اطلاعات میتواند
شامل شماره
ترمینال، تاریخ،
زمان و
اطلاعات دیگر
باشد. برای
مثال :
export PS1=”[\t\w]\$]” اعلان
فرمان را به
صورت زیر
نشان
میدهد: [20:25:40
/var/spool/mail]$ |
برای
ایجاد تغییرات
دائمی در
اعلان فرمان،
باید مقدار PS1 را به
فایل bashrc موجود در
دایرکتوری
خانگی خود
اضافه کنید. معمولا
این مقدار
قبلا وجود
دارد و کافی
است آنرا تغییر
دهید.
تنظیم
اسامی مستعار
در لینوکس
این امکان
وجود دارد تا
برای آسانی بیشتر،
اسامی مستعاری
را بجای فرمان
اصلی تعیین کنید.
برای اضافه
کردن اسامی
مستعار باید
از دستور alias
استفاده کنید.
به مثالهای زیر
توجه کنید:
$ alias p='pwd; ls -CF'
$ alias rm='rm -i'
در
مثال نخست حرف
p دستور pwd را
اجرا کرده و
پس از آن
دستور ls -CF اجرا
خواهد شد که
محتویات دایرکتوری
جاری را چاپ
خواهد کرد. در
مثال دوم،
دستور rm طوری تنظیم
شده است تا
فقط با گزینه i اجرا
شود.
در
صورتی که
دستور alias را به تنهایی
تایپ کنید، لیستی
از اسامی
مستعاری که
تنظیم کرده اید
نمایش داده میشود.
توجه داشته
باشید که اسامی
مستعار در یک
فایل پیکربندی
ذخیره شده و
با بستن پوسته
فرمان از بین
نمی روند.
کار
کردن با سیستم
فایل لینوکس
سیستم
فایل لینوکس
ساختاری است
که اطلاعات
شما را در
کامپیوتر ذخیره
میکند. فایلها
در یک ساختار
درختی از دایرکتوری
ها ذخیره میشوند.
هر دایرکتوری
میتواند حاوی
فایلها و دایرکتوری
های دیگری
باشد. در صورتی
که بخواهید
ساختار سیستم
فایل لینوکس
را دقیق تر
توصیف کنید،
آن بیشتر شبیه
یک درخت
وارونه است.
در بالاترین
نقطه، دایرکتوری
ریشه قرار
دارد که بوسیله
یک اسلش تنها
نشان داده میشود.
در زیر آن دایرکتوری
های عمومی و سیستمی
سیستم عامل لینوکس
قرار میگیرند.
مانند bin، dev،
home و tmp . هر
کدام از این
دایرکتوری ها
محتوی دایرکتوری
های دیگری
هستند. تصویر ۲ ساختار
درختی سیستم
فایل لینوکس
را نشان میدهد.
تصویر
۲ ساختار
سیستم فایل لینوکس
برخی
از دایرکتوری
های مهم سیستم
فایل لینوکس
در زیر توضیح
داده شده اند.
ساختار
سیستم فایل در
داس و ویندوز
با ساختار آن
در لینوکس
متفاوت هستند.
با وجودی که
شباهت هایی نیز
در این میان دیده
میشود ولی
تفاوت های
عمده به شرح زیر
هستند:
ایجاد
فایلها و دایرکتوری
ها
به
عنوان یک
کاربر لینوکس
، همانطور که
در بالا اشاره
کردم، بیشتر
فایلها و دایرکتوری
های خود را در
دایرکتوری
خانگی خود ایجاد
و ذخیره خواهید
کرد. در اینجا
با چند دستور
که در این زمینه
مفید هستند
آشنا میشوید:
خوب
اکنون به کمی
تمرین برای
بکارگیری این
دستورات می
پردازیم. در
صورتی که در
حالت گرافیکی
هستید،
همانطور که
قبلا گفته شد،
یک پنجره ترمینال
باز کنید.
۱.
برای حرکت به
دایرکتوری
خانگی خود از
هرجا ، کافی
است دستور cd را تایپ
کنید.
۲.
برای حصول اطمینان
از قرارگیری
در دایرکتوری
خانگی خود،
دستور pwd را تایپ کنید:
$ pwd
/home/alan
۳.
با استفاده از
دستور mkdir یک دایرکتوری
به نام test ایجاد
کنید:
$ mkdir test
۴. مجوزهای
دایرکتوری ایجاد
شده را با
استفاده از
دستور ls بررسی کنید:
$ ls -ld test
drwxrwxr-x 3 alan alan 4096 May 17 20:14 test
خروجی
فرمان نشان میدهد
که test یک
دایرکتوری
بوده و مالک
آن کاربری به
نام alan است که به
گروه alan تعلق
داشته و آخرین
بار در ۱۷
ام می در ساعت ۲۰:۱۴
دقیقه تغییر
کرده است.
تصور کنید میخواهید
مجوزهای این
دایرکتوری را
طوری تنظیم
کمنید که
افراد دیگری
که از این
کامپیوتر
استفاده میکنند
نتواننند
محتویات دایرکتوری
شما را دیده و
استفاده کنند.
در این مورد بیشتر
توضیح خواهم
داد.
۵. اکنون
دستور زیر را
تایپ کنید:
$ chmod 700 test
این
دستور به شما
تمام مجوزهای
استفاده و تغییر
دایرکتوری را
میدهد در حالی
که به دیگران
اجازه حتی
مشاهده محتویات
این دایرکتوری
نیز داده
نخواهد شد.
اگر مجددا
دستور ls که در بالا
تایپ کردید را
بکار ببرید، این
بار مجوزها
بصورت drwx------ نمایش
داده خواهد
شد.
۶.
در این مرحله
با استفاده از
دستور cd به دایرکتوری
test وارد
شوید:
$ cd test
هنگامی
که نیاز داشتید
تا بدانید دایرکتوری
خانگی شما در
چه مسیری قرار
دارد میتوانید
از یکی از دو
راه زیر
استفاده کنید
:
با
تایپ یکی از
موارد بالا
مقابل اعلان
فرمان ، مسیر
دایرکتوری
خانگی شما نمایش
داده میشود:
$ ~
/home/alan
برای
نمایش دایرکتوری
خانگی یک
کاربر دیگر
کافی است به
صورت زیر عمل
کنید:
$ ~chris
/home/chris
در
حرکت بین دایرکتوری
ها و کارکردن
در آنها فرامین
دیگری نیز
وجود دارند که بسیار
مفید هستند:
$ cp /usr/local/mygame .
دستور
بالا فایل mygame را به
مسیر جاری (که
دایرکتوری
خانگی تان
بود) کپی میکند.
$ mv mygame ..
دستور
بالا فایل mygame را به
مسیر بالاتر
دایرکتوری
خانگی تان (دایرکتوری
home) منتقل
میکند.
استفاده
از کاراکترهای
ویژه و
عملگرهای خط
فرمان
برای
استفاده
کارآمد تر از
پوسته فرمان ،
کاراکترهای
مخصوصی وجود
دارند که به
کاراکترهای ویژه
و عملگرها
موسوم هستند.
با کاراکترهای
مخصوص میتوانید
در تایپ کامل
نام یک یا چند
فایل صرفه جویی
کرده و با
استفاده از
عملگرها
اطلاعاتی را
از یک فایل یا
دستور به یک
دستور یا فایل
دیگر هدایت کنید.
استفاده
از کاراکترهای
ویژه مخصوص
نام فایلها
برای
کم کردن مقدار
تایپ و انتخاب
آسانتر دسته ای
از فایلها ،
پوسته فرمان
به شما امکان
استفاده از کاراکترهای
ویژه را میدهد.
کاراکترهای ویژه
ای که از آنها
میتوانید بین
نام فایلها
استفاده کنید
عبارتند از :
برای
تمرین بکارگیری
این
کاراکترها به یک
دایرکتوری
خالی (مانند
دایرکتوری test که
قبلا ایجاد
کردید) رفته و
با استفاده از
دستور زیر
دسته ای از فایلهای
خالی را ایجاد
کنید :
$ touch apple banana
grape grapefruit watermelon
حال
برای درک بهتر
چگونگی
عملکرد
کاراکترهای ویژه
از دستور ls
استفاده میکنیم.
به خروجی هر
فرمان توجه کنید
:
$ ls a*
apple
$ ls g*
grape
grapefruit
$ ls g*t
grapefruit
$ ls *e*
apple grape grapefruit watermelon
$ ls *n*
banana watermelon
مثال
نخست هر فایلی
را که با
کاراکتر a شروع میشود
را نمایش میدهد.
مثال بعدی
تمام فایلهایی
را که با g شروع میشوند
نمایش میدهد.
در مثال بعدی
فایلهایی که
با g
شروع شده و به t ختم میشوند
نمایش داده میشوند
و در دو مثال
بعدی فایلهایی
که حاوی e و n
هستند نمایش
داده میشوند.
به
چند مثال هم
در مورد
کاراکتر
علامت سوال توجه کنید:
$ ls ????e
apple grape
$ ls g???e*
grape grapefruit
در
مثال اول فایلهایی
که دارای ۵
حرف بوده و
حرف آخر آنها e است
نمایش داده میشوند.
در مثال دوم
فایلهایی که
با g
شروع شده و
کاراکتر پنجم
آنها e است را نمایش
میدهد.
حال
مثالهایی در
مورد براکتها :
$ ls [abw]*
allpe banana watermelon
$ ls [agw]*[ne]
apple grape watermelon
در
مثال نخست
تمام فایلهایی
که با a، b
و w
شروع میشوند
نمایش داده میشود.در
مثال دوم تمام
فایلهایی که
با a، g و w شروع شده و
به n یا
e
ختم میشوند،
نمایش داده میشوند.
استفاده
از کاراکترهای
ویژه مخصوص
هدایت فایلها
دستورات
ورودی خود را
از ورودی
استاندارد دریافت
کرده و روی
خروجی
استاندارد
نمایش میدهند.
با استفاده از
لوله بندی که
قبلا شرح داده
شد، میتوانستیم
خروجی یک
دستور را به
ورودی دستور دیگر
متصل کنیم. با
فایلها میتوانید
از کاراکترهای
کوچکتر از (>) و
بزرگتر از (<)
برای هدایت
داده ها از/به
فایلها
استفاده کنید.
این کاراکترها
عبارتند از:
برای
درک بهتر به
مثالهای زیر
توجه کنید:
$ mail root <
~/.bashrc
$ nroff -man
/usr/share/man/man1/chmod.1* > /tmp/chmod
$ echo “I finished
the project on $(date)” >> ~/projects
در
مثال نخست
محتویات فایل
.bashrc در دایرکتوری
خانگی، در یک
پیام پست
الکترونیک به
کاربر root کامپیوتر
ارسال میشود.
در مثال دوم،
صفحه کمک
دستور chmod با
استفاده از
دستور nroff فرمت بندی
شده و خروجی
به فایل tmp/chmod ارسال
میشود. مثال
آخر نیز باعث
خواهد شد تا
خط زیر به فایل
projects که در
دایرکتوری
خانگی کاربر
وجود دارد،
اضافه شود:
I finished the project on Sun May 25 14:25:36 IRST 2003
درک
مجوزهای فایلها
(File Permissions)
پس
از اینکه مدتی
با لینوکس کار
کردید،
مطمئنا به پیامهایی
مانند Permission Denied برخورد
خواهید کرد.
مجوزهای فایلها
و دایرکتوری
ها در لینوکس
به این علت ایجاد
شده اند که از
دسترسی
کاربران به فایلها
و اطلاعات
خصوصی
کاربران دیگر
جلوگیری به
عمل آورده و
از فایلهای سیستمی
در مقابل آسیب
دیدگی حفاظت
کنند. به این
علت به هر فایل
۹ بیت
اضافه میشود
که معرف چگونگی
دسترسی شما و
دیگران به آن
فایل خواهد
بود. این بیتها
بصورت rwxrwxrwx نمایش
داده میشوند.
نخستین سه بیت
تعیین کننده
دسترسی مالک
فایل است. سه بیت
بعدی برای
گروه مالک و
سه بیت بعدی
برای تعیین
نحوه دسترسی دیگران
است. r
نشانگر
خواندن، w نشانگر
نوشتن و x نشانگر
اجازه اجرا
هستند. در
صورتی که بجای
یکی از این
حروف علامت دش
(-) نمایش داده
شود، به این
معنی است که این
اجازه غیر
فعال است. برای
نمایش مجوزهای
هر فایل یا دایرکتوری
میتوانید از
دستور ls -ld استفاده
کنید. به مثال
زیر توجه کنید
:
$ ls -ld ch3 test
-rw-rw-r-- 3 alan alan
4096 May 22 15:11 ch3
drwxr-xr-x 3 alan alan 4096 May 17 20:14 test
خط
نخست فایلی را
نشان میدهد که
دارای مجوز
خواندن و
نوشتن برای
مالک و گروه
است. سایر
کاربران فقط
اجازه خواندن
فایل را دارا
هستند. این به
این معنی است
که آنها میتوانند
فایل را ببیندن
ولی هیچ تغییری
نمی توانند در
آن اعمال
کنند. خط دوم یک
دایرکتوری
است. دقت کنید
که مجوزها با
حرف d
که به معنی دایرکتوری
است آغاز شده
است. مالک دایرکتوری
دارای اجازه
خواندن،
نوشتن و اجرا
است. در نتیجه
تنها مالک میتواند
فایلها را در
این دایرکتوری
اضافه کرده،
تغییر داده و
پاک کند. بقیه
کاربران تنها
اجازه خواندن
دارند. یعنی میتوانند
به این دایرکتوری
وارد شده و
محتویات آنرا
ببینند.
در
صورتی که شما
مالک یک فایل
باشید، میتوانید
مجوزهای آنرا
مطابق نیاز
خودتان تنظیم
کنید. این کار
بوسیله دستور chmod امکان
پذیر است. برای
هریک از
مجوزهای
خواندن،
نوشتن و اجرا
عددی در نظر
گرفته شده
است. خواندن ۴، نوشتن ۲ و اجرا ۱.
بنابراین برای
اینکه تمام
مجوزها را به
خودتان بدهید،
مقدار سه بیت
نخست باید ۷
تعیین شود. (۴+۲+۱).
برای گروه و
سایرین نیز میتوانید
بنا به نیازشان
مجوز تعیین کنید.
مجوزها بین ۷ (مجوز کامل)
و ۰ (هیچ
مجوزی!) متغییر
هستند. برای
روشن شدن بهتر
مطلب به
مثالهای زیر
توجه کنید :
$ chmod 777 files = rwxrwxrwx
$ chmod 755 files = rwxr-xr-x
$ chmod 644 files = rw-r--r--
$ chmod 000 files = --------
هنگامی
که یک فایل ایجاد
میکنید، مجوز
پیش گزیده آن ۶۴۴ خواهد
بود. در مورد
دایرکتوری این
مجوز ۷۵۵
است. این مقادیر
پیش گزیده
توسط دستور umask تعیین
میشود.برای
نمایش مقدار umask دستور
زیر را تایپ
کنید:
$ umask
022
کافی
است اعدادی که
در دستور umask مشاهده
میکنید، از ۷ کم کنید. با
این کار مقادیر
پیش گزیده را
برای دایرکتوری
مشاهده خواهید
کرد. در مورد
فایلها باید این
اعداد را از ۶ کم کنید. زیرا
در مورد فایلها
به طور پیش گزیده
مجوز اجرا (با
مقدار ۱) غیر
فعال است.
$
chmod -R 777 /tmp/test |
|
انتقال،
کپی و پاک
کردن فایلها
کپی،
انتقال و پاک
کردن فایلها
بسیار آسان
است. برای
انتقال یک فایل
باید از دستور
mv
استفاده کنید.
برای کپی کردن
فایلها دستور cp وجود
دارد و برای
پاک کردن فایلها
نیز دستور rm قابل
استفاده است.
به مثالهای زیر
توجه کنید:
$ mv abc def
$ mv abc ~
$ cp abc def
$ cp abc ~
$ rm abc
$ rm *
دستور
نخست نام فایل
abc را به def تغییر
میدهد. دستور
دوم این فایل
را به دایرکتوری
خانگی کاربر (~) منتقل
میکند. دستور
سوم، فایل abc را به
فایل def کپی کرده و
دستور چهارم
آنرا در دایرکتوری
خانگی کاربر
کپی میکند. دستور
پنجم فایل abc را پاک
میکند در حالی
که دستور ششم
تمام محتویات
دایرکتوری
جاری را پاک
خواهد کرد.
|