FoxAit
FoxAit
خواندن ۴ دقیقه·۴ سال پیش

کار با پراسس (پروسه) ها در لینوکس

حتما تا به حال کلمه پروسه یا همان پراسس به گوشتان خورده است. پروسه ها تسک هایی مرتبط یا غیر مرتبط به همدیگر هستند. هر برنامه درحال اجرا پروسه ای مربوط به خود را دارد, هر برنامه میتواند چندین پروسه اجرا کند و این پروسه ها میتوانند به هم مرتبط باشند و یا نباشند. یک پروسه میتواند بخشی از حافظه, مموری و ... را به خود اختصاص دهد که کرنل مسئول اختصاص سهم مناسبی از این موارد است.

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

Process in real world
Process in real world



دستور ps

در سیستم عامل لینوکس ما میتوانیم با دستور ps که مخفف Process Status هست, همینطور که از اسمش مشخصه وضعیت پروسه های درحال اجرا رو مشاهده کنیم.

root@host:~# ps PID TTY TIME CMD 6082 pts/0 00:00:00 sudo 6083 pts/0 00:00:00 bash 6227 pts/0 00:00:00 ps

این دستور به تنهایی اطلاعات محدودی نمایش میدهد, میتوان با آپشن all اطلاعات کاملتری به دست آورد.

root@host:~# ps all F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 711 1 20 0 5640 1744 - Ss+ tty1 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux 4 0 4845 666 20 0 886056 83276 - Ssl+ tty7 0:09 /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch 0 1000 6027 6018 20 0 176724 7500 - Ss pts/0 0:00 fish 4 0 6346 6027 20 0 8588 4088 - S pts/0 0:00 sudo -i 4 0 6347 6346 20 0 177868 9104 - Sl pts/0 0:00 -fish 4 0 6473 6347 20 0 9492 1184 - R+ pts/0 0:00 ps all




توضیحی درمورد PID

همه ما دارای یک کد ملی هستیم. پروسه ها هم دارای کد ملی هستن, کد ملی پروسه ها Process ID هستش که به اختصار PID میگویند. با استفاده از PID ما میتوانیم به پروسه مربوطه اشاره کنیم. هنگام قطع پروسه ما از آیدی پروسه استفاده خواهیم کرد.




پروسه های Background

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

root@host:~# nc -nvlp 8000 & listening on [any] 8000 ... root@host:~# ps PID TTY TIME CMD 6346 pts/0 00:00:00 sudo 6347 pts/0 00:00:00 bash 6767 pts/0 00:00:00 nc 6808 pts/0 00:00:00 ps

همانطور که مشاهده میکنید ما ابتدا با ابزار nc یک listener در background اجرا کردیم. سپس با دستور ps مشاهده کردیم که پروسه جدیدی برای nc با آیدی 6767 ایجاد شده است.



دستور kill

ما میتوانیم پروسه های در حال اجرا را ببندیم. این کار رو به کمک kill انجام میدیم.

root@host:~# kill 6767 Job 1, 'nc -nlvp 8000 &' has ended root@host:~# ps PID TTY TIME CMD 6346 pts/0 00:00:00 sudo 6347 pts/0 00:00:00 bash 7039 pts/0 00:00:00 ps

همانطور که مشاهده میکنید با استفاده از دستور kill و PID پروسه مورد نظرمون رو بستیم. بعد با دستور ps چک کردیم که آیا عملیات به درستی انجام شده یا نه که مشاهده میکنیم پروسه ازبین رفته و دیگه در حال اجرا نیست.



خلاصه ماجرا

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


موفق و پیروز باشید.

اگر این مقاله براتون مفید بوده حتما لایک کنید و اگه نظری داشتید حتما در کامنت ها بگید :)

ایمیل بنده:

f0xa1t.qm@gmail.com
امنیتتست نفوذلینوکسlpiclinux
خوب.
شاید از این پست‌ها خوشتان بیاید