الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقدمة عن أنواع الShell الموجودة فى نظام اللينوكس

مثبّترائج
بدأه Arabian Penguin في 22 يوليو 2005 · 53 رد · 33,451 مشاهدة · في لينوكس نظرة بلاحدود (الطريق إلى احتراف لينوكس)
مشاركة: واتساب X فيسبوك تيليجرام
#26

السلام عليكم

سأوضح شيء مهما وأرجو أن يسامحني الأخ شاهين إذا كان هو قد قاله ولم أعلم به ،

في أنظمة يونكس بشكل عام يهتم جدا بطريقة كتابة الأمر أو اسم الملف ، بحيث أنه يفرق بين الحروف الإنجليزية الكبيرة والصغير، بمعنى أنه لو كان هناك ملف اسمه cat فهذا يختلف عن الملف Cat وبالتالي يمكن وضعهم في فهرس واحد. وكذلك الأوامر فلو كتبت مثلا الأمر ls هكذا LS فلن يعمل ,وسوف تظهر الرسالة التالية:

bash: LS: command not found

ملاحظة أخيرة ومهمة:

لا تهتم أنظمة يونكس بامتداد الملفات مثل نظام ويندوز ، فلو عندك مثلا ملف mp3 وقمت بحذف الامتداد ، فسوف يحتفظ الملف بأيقونته ولو قمت بتنفيذه فإنه سيشغل البرنامج الصوتي المنوط بقراءة مثل هذه الملفات مثل برنامج mpalyer .

*****************

بارك الله فيك يا أخ أحمد شاهين ، جهد جبار مشكور مأجور إن شاء الله.

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#27

أخى برق إضافة لكلامك

توجد خاصية فى كثير من برامج اللينوكس التى تشغل الملفات الصوتية هذه الخاصية تمكنك من البحث وتشغيل الملفات طبقا لمحتواها لا لإمتدادها .

#28

جزاك الله خير اخ شاهين

والله يساعدك ويكون بعونك :)

اتمنى انك تواصل لاني حيل استفدت من دروسك :)

عندي استفسار بالنسبة للامر updatedb .. ما اشتغل عندي رغم اني root يطلع لي command not found

شنو خطاي ؟؟

اخوي برق

مسالة الحروف الصغيرة والكبيرة كنت ابي اسال عنها لكنك ذكرتها :)

هل هي ميزة او عيب او مسالة ترتيب لا اقل ولا اكثر بالنظام ؟

محد جاوبني على سؤالي اللي فوق اخر درس :)

ردوا علي تراني داش حامي وودي اتعلم منكم .. مالي خلق ابرد وامل :D

جزاكم الله كل خير

#29

أشكرك أخى ابن عسكر على اهتمامك

بالنسبة للمشكلة

جرب الأمر whereis مع locate لكى نعرف هب هو موجود أم لا

[root@localhost ahmed]# whereis locate

لو أعطاك نتيجة يبقى الأمر موجود (هو حقيقة ليس أمر من الأوامر المبنية ولكنه برنامج تنفيذى )

وربما يكون أنت كتبت حرف Capital ,ولا حاجة ولو لم يعطك نتيجه سأحاول حل المشكلة معك.

#30

أو ربما أذهب لهذا الموقع وهو ربما يعطيك بعض المعلومات

http://www.geekreview.org/slocate/

#31

السلام عليكم

أخ شاهين

عمل ممتاز و مجهود خارق

استمر

MPSI/MP* - CPR Tanger

#32

أشكرك أخى كابوس على الأهتمام ومراجعة الدروس ورائى فلربما يخطئنى الشيطان فى نقطة معينة فيجعلك الله مرصادا لها .

على فكرة يا جماعة الدروس القادمة مهمة جدا سوف ندخل فى الجد لذلك أرجو منكم ان كان لديكم أى تعليق حتى الآن افادتى اما فى المنتدى أو على الخاص أو على البريد .

وربنا يعيننى على انجاز هذا الأمر .

#33

جزاك الله خير اخوي شاهين والله يجعله في ميزانك ..

هل جميع اصدارات لينكس لها نفس الاوامر .. ام ان بعض الاصدارات لها خصائص تختلف عن الاخرى ؟

بانتظار السلسلة :)

#34

والله يا أخى كما وضحت فى بدايه الدروس أن هناك أوامر مبنية فى الشيل وهذه الأوامر بالتاكيد يجب أن تكون موجودة وهناك أوامر أخرى تضاف وهناك برامج تعمل عن طريق الشيل ولكن معظم التوزيعات حاليا تأتى محملة بأكثر من برنامج Shell والأساسى منها هو Bash وهناك أيضا csh و ksh , pdksh والكثير وكلها تأتى محمله بأوامرها الخاصة بالإضافة الى البرامج والأوامر الأخرى التى تعمل على كل هذه اﻷنواع .

ولو فيه أمر أو برامج لا يوجد عندك تسطيع تنزيله من النت وحجمه بيكون صغير جدا .

على العموم لما ننتهى من موضوع الأوامر اﻷاساسية يوف ننتقل الى تصنيف وشرح مزايا وانواع ال Shell

#35

سوف أدخل قريبا ببرمجة الصدفة إن شاء الله ، ودروس الأخ شاهين خير مقدمة لها ، لذلك فهي مهمة جدا

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#36

ضغط وفك ضغط الملفات

سأحاول بإذن الله تعالى تقديم بعض الأساسيات فى موضوع ضغط وفك ضغط الملفات والأرشيفات وستكون فاتحة جيدة لك فى أمر مهم جدا .

أولا يجب أن نتطرق الى ما هى الأرشيفات وكيف أقوم بعملها ؟

كلمة أرشيف تعنى مجموعة من الملفات والمجلدات موجودة مع بعضها البعض فى مكان واحد . ويتم التعامل معها على أنها ملف واحد !

كيفية عمل الأرشيف Archive :

لعمل أرشيف من الملفات أو المجلدات أو الأثنين معا بإستخدام الأمر tar وهو يعنى Tape ARchive .

وهذا البرنامج له جذور عميقة فى الحاسب الآلى قبل ظهور ال Hard disks أو Floppy drives أو CD-ROM's فكانت البرامج أو Software عموما يوزع ويخزن على الشرائط المغناطيسية وكان من أول البرامج التى تم استخدامها على الحاسب لقراءة المعلومات المخزنة على هذه الشرائط هو قارىء الأشرطة أو Tape reader وتم تطوير البرنامج بمرور الوقت وتم استخدام البرنامج فى عمل الPackaging أو التعبئة للبرامج المستخدمة على اللينوكس ( لاحظ أن معظم التوزيعات مثل Redhat و Fedora و Mandrake تستخدم برنامج rpm وهناك توزيعات أخرى لديها نظام تعبئة Packaging خاص بها مثل deb الموجود فى ال Debian ) .

يمكنك عمل أرشيف من النوع tar عن طريق الأمر tar :

مثال

سنقوم الآن بعمل مجلد سنسميه مثلا arabteam وقم بعمل 3 ملفات بداخله وسمها file1 ,file2 ,file3 هكذا :

[ahmed@localhost ahmed]$ mkdir arabteam
[ahmed@localhost ahmed]$ cd arabteam
[ahmed@localhost arabteam]$ touch file1 file2 file3
[ahmed@localhost arabteam]$

قم بعمل مجلد داخل المجلد arabteam وسميه Sub_arabteam ويجب أن تلاحظ أن هذا المجلد يعتبر مجلد فرعى من المجلد الرئيسى .

وقم أيضا بعمل ثلاث ملفات جديدة file21 ,file22 ,file23 داخل المجلد الفرعى sub_arabteam .

[ahmed@localhost arabteam]$ mkdir sub_arabteam
[ahmed@localhost arabteam]$ cd sub_arabteam
[ahmed@localhost sub_arabteam]$ touch file21 file22 file23
[ahmed@localhost sub_arabteam]$

أكتب الأمر tree متبوعا arabteam لكى ترى الشجرة التكوينة للمجلد arabteam :

[ahmed@localhost sub_arabteam]$ cd ../..
[ahmed@localhost ahmed]$ tree arabteam
arabteam
|-- file1
|-- file2
|-- file3
`-- sub_arabteam
    |-- file21
    |-- file22
    `-- file23

1 directory, 6 files
[ahmed@localhost ahmed]$

تلاحظ أن المجلد arabteam يحتوى على ٦ ملفات و مجلد فرعى واحد .

نرجع الى موضوعنا فنحن نريد عمل أرشيف وليكن عمل أرشيف من المجلد arabteam .

حسنا قم بكتابة الأمر tar متبوعا بالخيار c- ( وهو يعنى create) وكذلك الخيار f- ( وهو يعنى file) ثم أسم الأرشيف وليكن arabteam.tar وفى النهاية اسم المجلد المراد عمل الأرشيف منه هكذا :

[ahmed@localhost ahmed]$ tar -cf arabteam.tar arabteam
[ahmed@localhost ahmed]$

وهكذا قد تم عمل الأرشيف ولو أردت أن ترى ما يحدث أثناء عمل الأرشيف استخدم الخيار v- هكذا :

[ahmed@localhost ahmed]$ tar -cvf arabteam.tar arabteam
arabteam/
arabteam/file1
arabteam/file2
arabteam/file3
arabteam/sub_arabteam/
arabteam/sub_arabteam/file21
arabteam/sub_arabteam/file22
arabteam/sub_arabteam/file23
[ahmed@localhost ahmed]$

فهو يقوم بإطلاعك على ما يقوم بإضافته من مجلدات و ملفات أثناء عمل الأرشيف .

ولو كنت تريد أضافة عدد معين فقط من الملفات ولا تريد إضافة ملفات أخرى موجودة داخل أحد المجلدات الفرعية أو تحت المجلد الرئيسى :

استخدم الخيار cwf ولا حظ أن الترتيب مهم يعنى cwf لا تساوى fwc :

[ahmed@localhost ahmed]$ tar -cwf arabteam.tar arabteam
add `arabteam'?y
add `arabteam/file1'?n
add `arabteam/file2'?n
add `arabteam/file3'?y
add `arabteam/sub_arabteam'?y
add `arabteam/sub_arabteam/file21'?y
add `arabteam/sub_arabteam/file22'?n
add `arabteam/sub_arabteam/file23'?y
[ahmed@localhost ahmed]$

ماذا لو أردت عرض أحد الأرشفة يعنى لو أردت عرض ما يحتويه أرشيف ما :

أستخدم الخيار tf- هكذا :

ولاحظ أيضا الترتيب فى الخيارات مهم .

[ahmed@localhost ahmed]$ tar -tf  arabteam.tar
arabteam/
arabteam/file3
arabteam/sub_arabteam/
arabteam/sub_arabteam/file21
arabteam/sub_arabteam/file23
[ahmed@localhost ahmed]$

بذلم نكون أنتهينا من طريقة عمل وعرض محتويات الأرشيف ننتقل الآن الى الخطوة العكسية وهى كيفية استخراج محتويات الأرشيف.

أولا لكى تستخرج محتويات أرشيف ما استخدم الخيار -x مع الخيار v- وكذلك الخيار f- لكى يصبح الخيار كله xvf- ( ملحوظة : دائما اجعل الخيار f هو الأخير اذا اتى معه خيار آخر ) :

[ahmed@localhost ahmed]$ tar -xvf arabteam.tar
arabteam/
arabteam/file3
arabteam/sub_arabteam/
arabteam/sub_arabteam/file21
arabteam/sub_arabteam/file23
[ahmed@localhost ahmed]$

ولو أردت استخراج ملف واحد أو عدد قليل من الملفات الموجودة فى الأرشيف استخدم الخيار w مع الخيارات السابقة :

[ahmed@localhost ahmed]$ tar -xvwf arabteam.tar
extract `arabteam'?y
arabteam/
extract `arabteam/file3'?y
arabteam/file3
extract `arabteam/sub_arabteam'?y
arabteam/sub_arabteam/
extract `arabteam/sub_arabteam/file21'?n
extract `arabteam/sub_arabteam/file23'?y
arabteam/sub_arabteam/file23
[ahmed@localhost ahmed]$

ولو كان هذا مملا وكنت تعرف الملف الذى تريد استخراجه فقط فلا تقلق اتبع التالى :

مثلا لو أنك تريد استخراج الملف file23 الموجود داخل المجلد الفرعى sub_arabteam فقم بكتابة الأمر tar متبوعا بالخيار xf- متبوعا باسم الأرشيف متبوعا بمسار الملف الذى تريد استخراجه :

[ahmed@localhost ahmed]$ tar -xf arabteam.tar arabteam/sub_arabteam/file23
[ahmed@localhost ahmed]$

Cpio Archive

أمر cpio يستطيع نسخ الملفات من أو الى أرشيف تم عمله باستخدام برنامج tar أو ارشيف جديد من النوع cpio .

لكن هناك ميزة فى cpio وهى أنه متوافق مع ال tar يعنى يقوم بنفس وظائف الtar بالإضافة الى وظائف أخرى خاصة به ولكن نادر جدا لو رأيت برنامج أو ملفات أرشيفية معموله بهذا البرنامج Cpio لذلك اذا أردت المزيد عنه اقرأ الhelp أو ال man pages الخاصة به .

ضغط الملفات باستخدام gzip

أمر gzip لضغط الملفات هذا الأمر ليس لتوفير المساحة فقط ولكن بضمه مع ال tar يصبحان أكثر هيئات تعبئة وضغط برامج اللينوكس .

بالتأكيد أو ربما دخلت يوما ما الى ألأنترنت لكى تبحث عن برنامج ما وبالتأكيــــــــــــــــــــد وجدته وقمت بتنزيله على جهازك وفى النهايه وجدت أن الملف ينتهى بالإمتداد tar.gz. أو tgz. أو ربما وأنت تبحث فى جهازك وجدت الكثير من الوثائق Documentations الموجودة على جهازك مضغوطة بهذه الضيغة ( لاحظ أن gzip يقوم بضغط الملفات من النوع text بنسبة تتراوح بين 60-70 % ) .

ويجب أن نشير الى نقطة مهمة قبل أن نبدأ باستخدام gzip وهى أنه يمكنك أن تضغط ملفات عادية أو تقوم بضغط الأرشيفات من النوع tar .

أولا لكى نضغط أرشيف من النوع tar :

أكتب الأمر gzip متبوعا بإسم الأرشيف :

[ahmed@localhost ahmed]$ gzip arabteam.tar
[ahmed@localhost ahmed]$

ولو قمت بعمل list للمجلد ahmed ستجد بداخله الملف المضغوط الجديد

[ahmed@localhost ahmed]$ ls
arabteam/        CppEssentials.pdf  fstab@       tmp/
arabteam.tar.gz  Desktop/           messege.txt
[ahmed@localhost ahmed]$

لكن أين الأرشيف arabteam.tar ؟؟؟

الأجابة هى أن الأمر gzip يقوم بحذف الملف الأصلى بعد ضغطه .

تلاحظ من النتيجة السابقة أن الأمر gzip قام بضغط الأرشيف السابق لكنه وضع له الإمتداد gz. فأصبح أسم الملف الجديد arabteam.tar.gz لكن ليس gz. هو الإمتداد الوحيد فقط لكن هناك gzip. ولكن ال Default أو الإمتداد الإعتيادى هو gz.

أما بالنسبة لضغط الملفات غير الأرشيفات أستخدم الأمر gzip متبوعا بإسم الملف :

gzip  filename

ويمكنك أيضا تحديد مستوى ضغط الملف كالآتى :

[ahmed@localhost ahmed]$ gzip -9 arabteam.tar
[ahmed@localhost ahmed]$

حيث ٩ هو مستوى الضغط وسأحاول تغطيه هذه النقطة لاحقا .

هناك خيارا آخرا لكى تغير به الإمتداد للملف المضغوط فكما قلنا سابقا أن الملف المضغوط يخرج بالإمتداد gz. فلو أردنا أن يخرج بالإمتداد gzip. مثلا فماذا نفعل ؟

فقط استخدم الخيار S- وهو يعنى ال suffix متبوعا بالإمتداد المطلوب هكذا :

[ahmed@localhost ahmed]$ gzip -S .gzip arabteam.tar
[ahmed@localhost ahmed]$ ls
arabteam/          CppEssentials.pdf  fstab@       tmp/
arabteam.tar.gzip  Desktop/           messege.txt
[ahmed@localhost ahmed]$

وهناك خيار آخر يجب علي أن أذكره وهو الخيار l- وهو يعنى list ويستخدم لعرض حجم الملفات المضغوطة وغير المضغوطة :

[ahmed@localhost ahmed]$ gzip -l arabteam.tar.gzip
compressed  uncompr. ratio uncompressed_name
      214     10240  98.2% arabteam.tar.gzip
[ahmed@localhost ahmed]$

وهناك أيضا الخيار tv- وهو يتأكد من أن الملف المضغوط فى حالة سليمة أم لا فإن لم يجد أى خطأ فإنه يعطيك ok

[ahmed@localhost ahmed]$ gzip -tv arabteam.tar.gzip
arabteam.tar.gzip:       OK
[ahmed@localhost ahmed]$

فى الدرس القادم بإذن الله تعالى سنتكلم عن كيفية فك ضغط الملفات المضغوطة وعن سبل آخرى لضغط الملفات .

سبحان الله وبحمده سبحان الله العظيم
#37

بارك الله فيك اخوي :)

#38

أخوانى الكرام :

أعتذر عن الأنقطاع عن تقديم الدروس وعن الظهور فى المنتدى الفترة القادمة بإذن الله وذلك لأننى مشغول فى عملا كبيرا خاصا بى ثم أننى سأقوم بعمل مجموعة دروس مكتملة تتكلم عن مواضيع متقدمة فى اللينوكس عموما .

ادعو الله أن يوفقنى لما يحبه ويرضاه .

والى اللقاء بإذن الله تعالى .

#39

السلام عليكم

طال غيابك أخي شاهين

أرجو أن يكون المانع خيرا

MPSI/MP* - CPR Tanger

#40

شكرا جزيلا

سؤال للجميع

انا الان ادرك الفرق بين ال kernal

shell

terminal

لكن ما ذا عن واجهة المستخدم gui بانواعها kde . gnome

اين موقعها من تلك المكونات؟

#41

الله يعطيك الف الف الف الف الف الف عافيه

والله درس راااااااااااائع

الله يعطيك الف عافيه

استغفر الله العظيم عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

شبكة ومنتديات القلعه

#42

أولا أعتذر عن الإنقطاع الفترة الأخيرة و عن التوقف فى تقديم هذه الدروس ولكن الآن الحمد لله رب العالمين فقد مضت الظروف السابقة على خير والحمد لله .

Environment Variable

عندما تقوم بالدخول الى اللينوكس يقوم بحفظ عدد من المتغيرات التى تخص النظام ( نظام التشغيل) وتسمى هذه المتغيرات Environment Variable .

ولرؤيه هذه المتغيرات اكتب الأمر env .

ستلاحظ أنه يعرض كثير من القيم وهذه القيم أو المعلومات وهى كثيره كما ترى لكن لا تقلق فلا يهمك منها كمستخدم عادى الا المتغير PATH و HOSTNAME والأول يعتبر الأهم حيث أنه يحدد ال Search path وال Search path يعنى المسارات والمجلدات التى يبحث فيها اللينوكس وبالتحديد برنامج ال Shell عندما تقوم أنت أو يقوم المستخدم بكتابة أمر ما .

ننتقل الآن الى نقطة مهمة جدا وهى الموضوع الرئيسيى لنا فى هذا الدرس بإذن الله ألا وهى ( العمليات الجاريه وكيفيه انهائها ) .

بما أن اللينوكس من الأنظمه التى تسمح بتعدد المستخدمين وتعدد المهام أيضا بمعنى أنك يمكنك تشغيل أكثر من مهمه فى وقت واحد وبالتالى يكون لديك عدد أو مجموعه من العمليات أو المهام يقوم الجهاز بتنفيذها .

إن كانت هذه البرامج تؤدى عملها بشكل جيد فهذا خير وبركة ولكن ماذا لو خرج برنامج ما أو عمليه ما عن مسارها الطبيعى أو أردت أنت انهاءه بطريقه غير تقليديه !

أولا :

يمكنك معرفه العمليات التى تجرى أو تعمل على الجهاز من خلال الأمر ps وهو اختصار لجمله process status ستجد أن السطر الأول يحتوى على التالى :

linux:~ # ps

  PID TTY          TIME CMD

 7445 pts/0    00:00:00 bash
 7451 pts/0    00:00:00 ps
linux:~ #

ستجد أن السطر الأول يحتوى على :

PID TTY          TIME CMD

أولا :

PID مهم جدا وهو اختصار Process ID وهو عبارة عن رقم العملية وهو رقم وحيد لكل عملية وسوف تعرف أهميه هذا الرقم بعد ذلك عندما نستخدم الأمر kill .

TTY وهو يوضح أو يعرض لك التيرمينال التى تستخدمها العملية والتى تعمل من خلالها ( وسوف نتطرق لهذا فى الدروس المتقدمة اذا شاء رب العالمين ) .

TIME وهذا العمود يوضح لك كميه الوقت الذى أخذته العمليه من النظام . وستلاحظ أن العمليات الموجوده لم تأخذ أى وقت !!!

CMD أو Command يحتوى على أسم العمليه أو البرنامج الذى يعمل وفى الغالب يكون موجودا به الأوامر التى تم كتابتها فى سطر الأوامر .

وفى غالب الأحيان عندما تقوم بكتابة أمر أو تشغيل برنامج يقوم هذا البرنامج بتشغيل بعض العمليات الأخرى الخاصة به ولذلك ستلاحظ أن هناك عمليات أو برامج تجرى وأنت لم تقم بفتحها ( بخلاف العمليات الخاصه بالنظام ) .

ملحوظة

لو قمت بالدخول الى حساب المستخدم root سوف ترى قائمة بكل العمليات التى تجرى على النظام ككل وذلك لأن المستخدم الرئيسى root يملك كل الصلاحيات .

من الخيارات المهمة مع الأمر ps الخيار u- وهو يقوم بإضافه بعض المعلومات الإضافيه للمستخدم الحالى .

فمثلا جرب الآتى :

linux:~ # ps -u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      5889  0.0  0.2   1892   744 tty1     Ss+  21:01   0:00 /sbin/mingetty
root      5890  0.0  0.2   1892   744 tty2     Ss+  21:01   0:00 /sbin/mingetty
root      5891  0.0  0.2   1892   744 tty3     Ss+  21:01   0:00 /sbin/mingetty
root      5892  0.0  0.2   1892   744 tty4     Ss+  21:01   0:00 /sbin/mingetty
root      5893  0.0  0.2   1892   744 tty5     Ss+  21:01   0:00 /sbin/mingetty
root      5894  0.0  0.2   1892   744 tty6     Ss+  21:01   0:00 /sbin/mingetty
root      6454  0.1  0.7   3000  1852 pts/0    Ss   21:14   0:00 bash
root      6464  0.0  0.3   2676   920 pts/0    R+   21:15   0:00 ps -u
linux:~ #

ربما لاحظت الفرق فمثلا ستجد أنه أضاف عمودا يسمى CPU% والذى يوضح النسبه المئوية التى تستخدمها العملية من سرعة الجهاز الكلية . وكذلك هناك العمود MEM% والذى يوضح النسبة المئوية للذاكرة المستخدمة بواسطة هذه العملية يبالنسبة للعمليات الأخرى .

لو أردت أن ترى كل العمليات التى تجرى على النظام استخدم الخيار A- .

ومثال على ذلك:

linux:~ # ps -A
  PID TTY          TIME CMD
    1 ?        00:00:01 init
    2 ?        00:00:00 ksoftirqd/0
    3 ?        00:00:00 events/0
    4 ?        00:00:00 khelper
    9 ?        00:00:00 kthread
   19 ?        00:00:00 kacpid
   97 ?        00:00:00 kblockd/0
  137 ?        00:00:00 pdflush
  138 ?        00:00:00 pdflush
  140 ?        00:00:00 aio/0
  139 ?        00:00:00 kswapd0
  733 ?        00:00:00 kseriod
 1193 ?        00:00:00 reiserfs/0
 2174 ?        00:00:00 khubd
 2191 ?        00:00:00 khsfd/modem
 2196 ?        00:00:00 hsfdcpd
 2374 ?        00:00:00 udevd
 2395 ?        00:00:00 khpsbpkt
 3360 ?        00:00:00 dbus-daemon-1
 3681 ?        00:00:00 klogd
 3688 ?        00:00:00 syslog-ng
 4067 ?        00:00:00 hwscand
 4419 ?        00:00:00 netdaemon
 4749 ?        00:00:00 resmgrd
 5462 ?        00:00:00 sshd
 5651 ?        00:00:00 acpid
 5842 ?        00:00:00 powersaved
 5863 ?        00:00:00 kdm
 5889 tty1     00:00:00 mingetty
 5890 tty2     00:00:00 mingetty
 5891 tty3     00:00:00 mingetty
 5892 tty4     00:00:00 mingetty
 5893 tty5     00:00:00 mingetty
 5894 tty6     00:00:00 mingetty
 6117 ?        00:00:14 X
 6121 ?        00:00:00 kdm
 6140 ?        00:00:00 gnome-session
 6190 ?        00:00:00 gpg-agent
 6196 ?        00:00:00 scim-launcher
 6198 ?        00:00:00 scim-launcher
 6201 ?        00:00:00 dbus-daemon-1
 6202 ?        00:00:00 dbus-launch
 6212 ?        00:00:00 scim-helper-man
 6213 ?        00:00:00 scim-panel-gtk
 6216 ?        00:00:00 gconfd-2
 6219 ?        00:00:00 gnome-keyring-d
 6221 ?        00:00:00 esd
 6225 ?        00:00:00 bonobo-activati
 6227 ?        00:00:00 gnome-settings-
 6230 ?        00:00:00 gnome-smproxy
 6238 ?        00:00:00 netapplet
 6241 ?        00:00:00 resapplet
 6242 ?        00:00:01 susewatcher
 6244 ?        00:00:02 suseplugger
 6251 ?        00:00:00 metacity
 6270 ?        00:00:00 dcopserver
 6267 ?        00:00:00 kdeinit
 6275 ?        00:00:00 klauncher
 6277 ?        00:00:00 gnome-panel
 6279 ?        00:00:01 nautilus
 6281 ?        00:00:00 kded
 6297 ?        00:00:01 wnck-applet
 6315 ?        00:00:00 gnome-vfs-daemo
 6327 ?        00:00:00 mapping-daemon
 6329 ?        00:00:00 notification-ar
 6331 ?        00:00:00 mixer_applet2
 6333 ?        00:00:00 clock-applet
 6361 ?        00:00:00 soffice
 6370 ?        00:00:34 soffice.bin
 6379 ?        00:00:06 gnome-backgroun
 6452 ?        00:00:02 gnome-terminal
 6453 ?        00:00:00 gnome-pty-helpe
 6454 pts/0    00:00:00 bash
 6543 pts/0    00:00:00 ps
linux:~ #

هناك نقطة يجب أن أشير اليها وهى أن العملية التى تأخذ الID رقم 1 هى البرنامج init وهو الذى يقوم بتشغيل

كل العمليات ولو قمت بأنهاء عمل init سوف يتحطم النظام ( أو باللغه الأنجليزية System Crash ) .

الآن وبعد أن عرفنا وتعلمنا كيغفية عرض العمليات الجارية على الحاسب نأتى الى النقطة الأهم فى موضوعنا اليوم وهى كيفية انهاء أى عملية .

الأمر kill :

يقوم بإنهاء العمليات التى لا يمكن ايقافها عن طريق وسائل أخرى ( الوسائل التقليدية) .

خطوات انهاء عمليه ما :

1 – تأكد أن العملية أو البرنامج الذى تريد انهاءه يتم انهاءه بالطريقة التقليدية وهى Ctrl+C للبرامج التى تعمل من التيرمينال أو close من البرامج التى تعمل بالواجهة الرسومية أو بال Frames .

2 – إن لم ينتهى البرنامج أو العملية بالطريقة السابقة أدخل الى أى console وادخل الى حساب المستخدم root .

3 – اكتب الأمر ps - A لكى تتعرف على PID وهو رقم العملية التى تريد ايقافها .

4 – اكتب الأمر kill متبوعا بال PID وتأكد من أنك قد كتبت ال PID للعملية المراد ايقافها بصورة صحيحة هكذا :

linux:~ # ps -A
  PID TTY          TIME CMD
    1 ?        00:00:01 init
    2 ?        00:00:00 ksoftirqd/0
    3 ?        00:00:00 events/0
    4 ?        00:00:00 khelper
    9 ?        00:00:00 kthread
   19 ?        00:00:00 kacpid
   97 ?        00:00:00 kblockd/0
  137 ?        00:00:00 pdflush
  138 ?        00:00:00 pdflush
  140 ?        00:00:00 aio/0
  139 ?        00:00:00 kswapd0
  733 ?        00:00:00 kseriod
 1193 ?        00:00:00 reiserfs/0
 2174 ?        00:00:00 khubd
 2191 ?        00:00:00 khsfd/modem
 2196 ?        00:00:00 hsfdcpd
 2374 ?        00:00:00 udevd
 2395 ?        00:00:00 khpsbpkt
 3360 ?        00:00:00 dbus-daemon-1
 3681 ?        00:00:00 klogd
 3688 ?        00:00:00 syslog-ng
 4067 ?        00:00:00 hwscand
 4419 ?        00:00:00 netdaemon
 4749 ?        00:00:00 resmgrd
 5462 ?        00:00:00 sshd
 5651 ?        00:00:00 acpid
 5842 ?        00:00:00 powersaved
 5863 ?        00:00:00 kdm
 5889 tty1     00:00:00 mingetty
 5890 tty2     00:00:00 mingetty
 5891 tty3     00:00:00 mingetty
 5892 tty4     00:00:00 mingetty
 5893 tty5     00:00:00 mingetty
 5894 tty6     00:00:00 mingetty
 6117 ?        00:00:22 X
 6121 ?        00:00:00 kdm
 6140 ?        00:00:00 gnome-session
 6190 ?        00:00:00 gpg-agent
 6196 ?        00:00:00 scim-launcher
 6198 ?        00:00:00 scim-launcher
 6201 ?        00:00:00 dbus-daemon-1
 6202 ?        00:00:00 dbus-launch
 6212 ?        00:00:00 scim-helper-man
 6213 ?        00:00:00 scim-panel-gtk
 6216 ?        00:00:00 gconfd-2
 6219 ?        00:00:00 gnome-keyring-d
 6221 ?        00:00:00 esd
 6225 ?        00:00:00 bonobo-activati
 6227 ?        00:00:01 gnome-settings-
 6230 ?        00:00:00 gnome-smproxy
 6238 ?        00:00:00 netapplet
 6241 ?        00:00:00 resapplet
 6242 ?        00:00:01 susewatcher
 6244 ?        00:00:02 suseplugger
 6251 ?        00:00:01 metacity
 6270 ?        00:00:00 dcopserver
 6267 ?        00:00:00 kdeinit
 6275 ?        00:00:00 klauncher
 6277 ?        00:00:01 gnome-panel
 6279 ?        00:00:01 nautilus
 6281 ?        00:00:01 kded
 6297 ?        00:00:02 wnck-applet
 6315 ?        00:00:00 gnome-vfs-daemo
 6327 ?        00:00:00 mapping-daemon
 6329 ?        00:00:00 notification-ar
 6331 ?        00:00:00 mixer_applet2
 6333 ?        00:00:00 clock-applet
 6361 ?        00:00:00 soffice
 6370 ?        00:00:51 soffice.bin
 6379 ?        00:00:06 gnome-backgroun
 6452 ?        00:00:04 gnome-terminal
 6453 ?        00:00:00 gnome-pty-helpe
 6454 pts/0    00:00:00 bash
 6650 pts/0    00:00:00 ps
linux:~ #

فلو قلنا أننا نريد أن ننهى عمل العملية gnome-terminal والتى رقمها هو 6452 ولاحظ أن هذا البرنامج هو التيرمينال التى أفتحها حاليا والتى كتبت فيها الأوامر السابقة .

linux:~ # kill   6452

ما هى النتيجة !!! تم غلق النافذة التى كانت مفتوحة أمامى وأنا الآن بصدد فتحها من جديد !!

والآن جرب ما سبق لكن مع عملية أخرى أخترها أنت وجرب الأمر بنفسك .

5 – وللتأكد من العملية قد تم الغاؤها أو ايقافها أكتب الأمر ps -u متبوعا برقم العملية التى قمت بإلغاءها قبل ذلك فإن أعطاك شيئا فهذا معناه أن العملية لم تقف ولذلك انتقل الى الخطوة رقم 6 وإن لم يعطيك فهذا معناه أن العملية قد أوقفت بالفعل .

6 – اكتب الخيار 9 - مع الأمر kill متبوعا برقم العملية المراد انهائها :

linux:~ # kill -9 6452

وبعد كتابة الأمر السابق قم بإختبار العملية كما فى الخطوة رقم 5 فإن وجدت العملية مازالت موجودة انتقل الى الخطوة رقم 8.

7 - ربما فى بعض الأحيان تجد أن العملية التى حاولت سابقا الغاؤها وقمت بالفعل بالخطوات السابقة قد ظهرت ب PID جديد وربما يحدث ذلك الأمر بسبب أن هذه العملية أو أن هذا البرنامج قد تم تشغيله من قبل برامج أخرى وفى هذه الحالة لديك خيار وحيد وهو أن نقوم بإيقاف العملية الرئيسية :

8 – استخدم الخيار l- مع الأمر ps لكى تتعرف على PPID وهو عبارة عن ال PID للعملية الرئيسية وهى اختصار لى Parent Process ID ويمكنك عن طريق هذا الرقم ايقاف العملية الرئيسية باستخدام الأمر kill متبوعا بال PPID .

9 – اذا كنت قد نلت مرادك وقمت بإيقاف العملية أخرج من حساب المستخدم root الذى دخلت اليه فى البداية . ولو لم تنتهى العملية بالطرق السابقة انصحك بعمل reboot للجهاز !!

ولاحظ أن هناك عمليات لا يمكن انهاءها الا من حساب المستخدم root ومنها عمليات النظام مثل العملية init والتى يقون ال PID لها 1 وللعلم أيضا حتى لو كنت root لا يمكنك الغاء أو ايقاف init بإستخدام الأمر kill !

اقتباس
والى لقاء آخر بإذن الله
#43

عودة حميدة اخوي هشام ..

وجزاك الله خير على اكمالك الشرح ..

انا استخدم طريقة سريعة لانهاء البرنامج اللي يرفض الانهاء بالطريقة العادية هي بالضغط على :

 Ctrl + Alt + Esc

بعدها يتحول شكل المؤشر الى شكل جمجمة .. اضغط على البرنامج وخلاص ..

عندي سؤال :

هل بمقدوري انهاء اكثر من برنامج في سطر واحد ؟

شكر الله لك :)

#44

نعم يا أخى الكريم يمكنك انهاء أكثر من عملية فى خطوة واحدة وذلك بكتابة الPID متتالية بعد الأمر kill

kill  PID PID PID
#45

أخوانى الكرام

السلام عليكم

أرجو منكم أن تتفهموا سبب أنقطاعى عن تقديم هذه الدروس فى الفترة الحالية وذلك بسبب انشغالى بعض الشىء .

ولكنى ساحاول بإذن الله تقديم دروس ومواضيع متقدمة فى اللينوكس وال Shell كما وعدتكم سابقا .

أرجو فقط الدعاء لى حتى يوفقنى الله . ولكم جزيل الشكر

#46

كتب الله لك الأجر والثواب

جزاك الله كل خير على المعلومات القيمة... لن ننساك بإذن الله من صالح الدعاء

الله يزوجك على السريع

أنا الآن أدرس مقالك وسأزعجك بالأسئلة قريبا إن شاء الله

#47

أنا تحت أمرك يا أخى الكريم .

وبارك الله فيكم .

#48

ماشاء الله

يعطيك الف عافيه قريت الدرس كله والصراحه تمتعت وكونت ارشيف عندي من معلواتك

جزاك الله خير وأرجوا الأستمرار

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#49

تسلم اخى ع الموضوع المميز

مع التحية

#50

..

مليش خبرة أوي في اللينكس ..

بس بجد ربنا يكرمك .. مجهود تستحق الشكر عليه :)

تحياتي ..

:)

System Administrator

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…