SOUKPHATHAI


SOUKPHATHAI
 
บ้าน++ເລື່ອງຂອງ process ໃນ Linux++ Fo10ค้นหาสมัครสมาชิก(Register)เข้าสู่ระบบ(Log in)
Welcome to our forums!->BE ACTIVE AND RESPECT OTHERS!

Share
 

 ++ເລື່ອງຂອງ process ໃນ Linux++

Go down 
ผู้ตั้งข้อความ
SOUKPHATHAI
Admin
SOUKPHATHAI

Posts : 160
ເງີນ : 12323
ຄວາມດີ : 0
Join date : 22/03/2010
Age : 29

Character sheet
RAY:

++ເລື່ອງຂອງ process ໃນ Linux++ Empty
ตั้งหัวข้อเรื่อง: ++ເລື່ອງຂອງ process ໃນ Linux++   ++ເລື່ອງຂອງ process ໃນ Linux++ EmptyTue Mar 30, 2010 2:29 am

process


ຄວາມຫມາຍຂອງໂປເຊດງ່າຍ ໆ ກໍຄື "ໂປແກມທີ່ກຳລັງເຮັດວຽກຢູ່" ຫລືຈະອະທິບາຍໃຈຄວາມໃຫ້ເລິກລົງໄປອີກກໍຄື "ໂປແກມທີ່ກຳລັງເຮັດວຽກໃນແອດເດສນັ້ນ ທີ່ກິນຊັບຢາກອນຂອງເຄື່ອງຄືກັນ" ເອົ້າ... ອັນນີ້ອະທິບາຍແບບບໍ່ໄດ້ອ້າງອິງພາສາວິຊາການຫຍັງຫລາຍ ໃນລະບົບ multitasking ຢ່າງພວກ linux ນີ້ ໂປແກມເຮົາສາມາດສັ່ງລັນໄດ້ຫລາຍ ໆ ເທື່ອໃນເວລາດຽວກັນ ເຖິງແມ່ນຈະເປັນໂປແກມຄົນລະຕົວກໍຕາມເຖິງ ໂປແກມທີ່ລັນແຕ່ລະເທື່ອໆນັ້ນ ແມ່ນຈະເປັນຕົວດຽວກັນກໍເອີ້ນວ່າໂປເຊດ ແລະເມື່ອເບີ່ງມາຍັງລະບົບທີ່ເຮັດວຽກແບບ multiuser ຢ່າງເຊັ່ນ UNIX ຫລື Linux ນີ້ ເຮົາສາມາດເຂົ້າມາໃຊ້ງານລະບົບໄດ້ພ້ອມໆກັນຫລາຍໆຄົນບໍ່ໄດ້ລວມ XP ຫລື OS ທີ່ເຮັດວຽກແບບຄົນດຽວເດີ້ນິ ການເຮັດວຽກງານເຂົ້າມາພ້ອມໆ ກັນຫລາຍຄົນຈາກ network ເຊັ່ນ ຍິງເຂົ້າມາເພື່ອ telnet ລະບົບນັ້ນ ແລະເອີ້ນໃຊ້ໂປແກມຫລືຊັບຢາກອນຈາກລະບົບນັ້ນເຊັ່ນ ເຮົາຢູ່ໃນ network ທີ່ມີ UNIX ຢູ່ ເຮົາກໍ telnet ເຂົ້າມາໃຊ້ໂປແກມກວດເຊັກ email ທີ່ຢູ່ໃນ Linux ຊຶ່ງເປັນໂປແກມດຽວກັນກັບທີ່ອີກຄົນໜຶ່ງທີ່ກຳລັງ login ຢູ່ໃຊ້ງານຢູ່ຄືກັນນັ້ນເອງ ນັ້ນສະແດງວ່າໂປແກມດຽວກັນ ແຕ່ເຮັດວຽກກັນຄົນລະໂປເຊດນັ້ນເອງ

ໂຄງສ້າງຂອງໂປເຊດນີ້ ຈະຂຽນງ່າຍ ໆ ກໍຄື... ຍົກຕົວຢ່າງຄົນສອງຄົນເຂົ້າມາ login ຢູ່ໃນ Linux ພ້ອມ ໆ ກັນ ແລະໃຊ້ໂປແກມດຽວກັນ ເຊັ່ນ mail, ping ຫລືໂປແກມອີເມລ໌ pine ພວກເຂົາກໍຈະເອີ້ນໃຊ້ໂປແກມດຽວກັນ

[brad $ ] mail myfriend@gmail.com

[jack $ ] mail dev@gmail.com

ແບບນີ້ ໂປແກມ mail ກໍຈະຖືກໂຫລດຈາກດິກ໌ແລະເຂົ້າໄປຢູ່ໃນຫນ່ວຍຄວາມຈຳເມື່ອມັນຖືກໂຫລດເຂົ້າໄປແລ້ວ ມັນກໍຈະຢູ່ຄົນລະຕຳແໜ່ງ ຫລືຄົນລະໂປເຊດ ແຕ່ຂໍ້ມູນທີ່ໃຊ້ສຳລັບໂປແກມນັ້ນກໍຈະຕ່າງກັນອອກໄປ ເຊັ່ນ os ເຮັດວຽກກັບຂໍ້ມູນຄື myfriend@gmail.com ນັ້ນກໍຢູ່ໃນໂປເຊດຂອງພວກເຂົາ ເປັນຂໍ້ມູນທີ່ຢູ່ໃນບະບລັອກຂອງພວກເຂົາ ຢູ່ໃນໂປເຊດທີ່ເປັນໂປແກມຂອງພວກເຂົາທີ່ພວກເຂົາເອີ້ນຂຶ້ນມາເອງ... ສ່ວນ dev ກໍຈະມີອີເມລ໌ dev@gmail.com ທີ່ເປັນຂໍ້ມູນທີ່ຕ່າງກັນ ແຕ່ເປັນຂໍ້ມູນທີ່ເກັບຢູ່ໃນຕົວແປຕົວດຽວກັນໃນໂປແກມທີ່ຊື່ວ່າ mail. ພໍເບີ່ງອອກລະເນາະ ໃນການຂຽນໂປແກມພາສາ C/C++ ມັນຈະຕ້ອງມີການເກັບຂໍ້ມູນຕົວແປໃນໂປແກມ ຕົວແປແບບ char*, int, double ພວກນີ້ແຫລະ ເມື່ອໂປແກມມັນຖືກສັ່ງໃຫ້ເຮັດວຽກ ມັນກໍຖືກໂຫລດເຂົ້າ memory ເທື່ອໜຶ່ງ ຕົວແປໃນໂປແກມກໍຈະຖືກຈອງເພື່ອວຽກຕາມທີ່ຕ້ອງການ ນັ້ນຄືໜຶ່ງໂປເຊດແລ້ວ.... ແລະເມື່ອມັນຖືກໂຫລດເຂົ້າມາອີກເທື່ອໜຶ່ງຄື ຖືກອີກຄົນໜຶ່ງສັ່ງໃຫ້ລັນ ນັ້ນແຫລະ ໂປເຊດອີກຕົວກໍຖືກລັນຂຶ້ນມາ ໂປແກມດຽວກັນ ຈອງຫນ່ວຍຄວາມຈຳໃຫ້ກັບຕົວແປໃນໂປແກມນັ້ນເທົ່າກັນ ແຕ່ຖືກລັນຂຶ້ນມາອີກເທື່ອໜຶ່ງ ຄົນລະຕຳແໜ່ງແອດເດສນັ້ນເອງ....

ຊຶ່ງເມື່ອເປັນເຊັ່ນນີ້ແລ້ວ ແອດເດສໃນສ່ວນນັ້ນ ມັນເກັບໂຄ້ດໂປແກມທີ່ກຳລັງເຮັດວຽກຢູ່ ໃນ memory ສ່ວນນັ້ນຈະບໍ່ສາມາດຖືກຂຽນຂໍ້ມູນລົງໄປໄດ້

ເອົາລ່ະ... ເມື່ອໂປເຊດຖືກລັນ ໃນ Linux ນີ້ຈະມີໝາຍເລກໂປເຊດແຕ່ລະຕົວໃຫ້ກັບແຕ່ລະໂປເຊດດ້ວຍ ເຮົາສາມາດເບິ່ງໄດ້ຈາກການໃຊ້ຄຳສັ່ງ ps -af ຈາກ shell....

$ ps -af
UID PID PPID C STIME TTY TIME CMD
nus 6180 6118 0 23:42 pts /1 00:00:00. /p1
nus 6181 6180 0 23:42 pts /1 00:00:00. /p1
nus 6184 6118 0 23:42 pts /1 00:00:00 ps -af

ໂປເຊດແຕ່ລະຕົວທີ່ເຮັດວຽກນັ້ນຈະໄດ້ໝາຍເລກທີ່ບໍ່ຊ້ຳກັນເລີຍ ຊຶ່ງຈະຢູ່ລະຫວ່າງ 2-32768 ແລະເມື່ອມັນເຮັດວຽກສຳເລັດແລ້ວ ມັນກໍຈະຫາຍໄປ ແລະເມື່ອສັ່ງເຮັດວຽກນັ້ນງານນີ້ໃໝ່ ມັນກໍຈະເກີດຂຶ້ນອີກເທື່ອພ້ອມກັບໝາຍເລກທີ່ບໍ່ຊ້ຳກັນກັບຕົວທີ່ລັນຢູ່ອີກ ແບບນີ້ໄປເລື່ອຍໆ

ຕາລາງໂປເຊສ

ເຮົາສາມາດເປີດເບິ່ງໂປເຊດທີ່ລັນຢູ່ໃນລະບົບ Linux ໄດ້ ໂດຍໃຊ້ຄຳສັ່ງ ps ຊຶ່ງຈະສະແດງລາຍລະອຽດແລະລາຍການທັງໝົດອອກມາໃຫ້ເບິ່ງ ມາເບິ່ງຕົວຢ່າງກັນເລີຍ

root@nus-laptop:/home/nus# ps
PID TTY TIME CMD
6528 pts /1 00:00:00 su
6529 pts /1 00:00:00 bash
6578 pts /1 00:00:00 gedit
6580 pts /1 00:00:00 gconfd -2
6954 pts /1 00:00:00 xmms
6959 pts /1 00:00:00 ps

ຈາກຕົວຢ່າງ ເປັນການໃຊ້ຄຳສັ່ງ ps ລ້າໆຊຶ່ງຈະສະແດງໂປເຊດທີ່ລັນຢູ່ເທິງ Terminal ນີ້ ແຕ່ຖ້າເຮົາເຕີມ -af ຊຶ່ງໝາຍເຖິງ all ແລະ full ກໍຈະໄດ້ລາຍລະອຽດຫລາຍຂຶ້ນ ດັ່ງນີ້

root@nus-laptop:/home/nus# ps -af
UID PID PPID C STIME TTY TIME CMD
root 6528 6118 0 Jul21 pts /1 00:00:00 su
root 6529 6528 0 Jul21 pts /1 00:00:00 bash
root 6578 6529 0 Jul21 pts /1 00:00:00 gedit
root 6580 1 0 Jul21 pts /1 00:00:00 /usr/lib/gconfd -2 11
root 6954 6529 2 00:10 pts /1 00:00:00 xmms
root 6962 6529 0 00:10 pts /1 00:00:00 ps -af

ຈາກຂ້າງເທີງບໍ່ຈຳເປັນແລ້ວວ່າໃນໜ້າຈໍຂອງທ່ານຈະຕ້ອງຄືກັນສະເໝີໄປ ການໃຊ້ຄຳສັ່ງທີ່ວ່ານີ້ຈະສະແດງລາຍການໂປແກມທີ່ກຳລັງເຮັດວຽກຢູ່ ດັ່ງຕົວຢ່າງ ໂປແກມ xmms ເຮັດວຽກຢູ່ຢ່າງເຫັນໄດ້ແຈ້ງເລີຍ ນີ້... ເຮົາກວດເບິ່ງໄດ້ແບບນີ້ ເບິ່ງເລີຍວ່າມັນມີໂປເຊດໝາຍເລກໃດ... ດັ່ງນີ້

UID PID PPID C STIME TTY TIME CMD
root 6954 6529 2 00:10 pts /1 00:00:00 xmms

ການທີ່ເຮົາຈະຮູ້ວ່າໂປແກມນັ້ນຄືໂປແກມຫຍັງ ໃຜເປັນຄົນລັນ ໃຫ້ທ່ານເບິ່ງດ້ານເທິງຊຶ່ງ
UID ກໍຄືຜູ້ລັນ ຫລືຜູ້ເປັນເຈົ້າຂອງ ແລະ PID ກໍຄືໝາຍເລກໂປເຊດ (ທີ່ວ່າບໍ່ຊ້ຳກັນເວົ້າຜ່ານມາ) ແລະ TTY ກໍຄື Terminal ທີ່ສັ່ງມັນ ຢ່າງໂປແກມ xmms ນັ້ນລັນມາຈາກ pts /1 ບາງທ່ານກໍອາດຈະເຫັນເປັນ tty /1, tty /2 ນັ້ນສະແດງວ່າລັນມາຈາກ terminal ໝາຍເລກນັ້ນ ນັ້ນເອງ

ການສັ່ງທຳລາຍໂປເຊດນັ້ນເຮັດໄດ້ບໍ່ຢາກໃຫ້ທ່ານໃຊ້ຄຳສັ່ງ kill ແລ້ວຕາມດ້ວຍໝາຍເລກໂປເຊດນັ້ນ ເຊ່ນ

root@nus-laptop:/home/nus# kill 6954
[2] + Killed xmms

ໂປເຊດໃນລະບົບ

ເອົາລ່ະ ເຮົາມາເບິ່ງໂປເຊດໃນລະບົບກັນນຳ... ເຮົາຈະໃຊ້ຄຳສັ່ງ ps -ax ໃນການເປີດເບິ່ງ ດັ່ງນີ້

root@nus-laptop:/home/nus# ps -ax
PID TTY STAT TIME COMMAND
1? Ss 0:01 /sbin/init
2? S 0:00 [migration /0]
3? SN 0:00 [ksoftirqd /0]
4? S 0:00 [watchdog /0]
5? S < 0:00 [events /0]
6? S < 0:00 [khelper]
7? S < 0:00 [kthread]
30? S < 0:00 [kblockd /0]
31? S < 0:00 [kacpid]
32? S < 0:00 [kacpi_notify]
123? S < 0:00 [kseriod]
3603? S < 0:01 [ipw2200/0]
4119 tty4 Ss+ 0:00 /sbin/getty 38400 tty4
4120 tty5 Ss+ 0:00 /sbin/getty 38400 tty5
4124 tty2 Ss+ 0:00 /sbin/getty 38400 tty2
4125 tty3 Ss+ 0:00 /sbin/getty 38400 tty3
4126 tty1 Ss+ 0:00 /sbin/getty 38400 tty1
4127 tty6 Ss+ 0:00 /sbin/getty 38400 tty6
5075? S < 0:00 [kondemand /0]
5083? Ss 0:00 /usr/sbin/netdaemon
5094? Ss 0:00 /usr/sbin/vsftpd
5154? Ss 0:00 /usr/sbin/hcid -x -s
5171? S < 0:00 [krfcommd]
5215? Ss 0:00 /usr/sbin/atd
5230? Ss 0:00 /usr/sbin/cron
5284? Ss 0:00 /usr/sbin/apache2 -k start
5364? S 0:00 /usr/sbin/apache2 -k start
5365? S 0:00 /usr/sbin/apache2 -k start
5497? Ss 0:00 gnome-volume-manager --sm-client-id default4
5499? S 0:00 /usr/lib/gnome-vfs -2.0/gnome-vfs-daemon
5501? S 0:00 update-notifier
5507? S 0:00 nm-applet --sm-disable
5508? S 0:00 gnome-cups-icon --sm-client-id default3
5509? Ss 0:00 gnome-power-manager
5678? S 0:00 /usr/lib/nautilus-cd-burner/mapping-daemon
5696? Ss 0:01 gnome-screensaver
5750? S 1:39 gedit
6115? Sl 0:01 gnome-terminal
6117? S 0:00 gnome-pty-helper
6118 pts /1 Ss 0:00 bash
6528 pts /1 S 0:00 su
6529 pts /1 S 0:00 bash
6578 pts /1 S 0:00 gedit
6954 pts /1 Sl 0:00 xmms
6995 pts /1 R+ 0:00 ps -ax

ໂອ......... ເຕັມເລີຍ ເຫັນແລ້ວມາເບິ່ງບ່ອນນີ້ເລີຍ ໂປເຊດທຳອິດຄືຫຍັງ ເບິ່ງດີໆມັນກໍຄື /sbin/init ເປັນໂປເຊດໝາຍເລກ 1 ທ່ານອາດຈະບອກວ່າອ້າວເປັນຫຍັງເຫັນບອກວ່າໂປເຊດມັນເລີ່ມຕົ້ນທີ່ 2 ບໍ່ແມ່ນຫວານັ້ນແຫລະ ບັກເລກ 1 ນັ້ນມັນສະຫງວນໄວ້ໃຫ້ກັບໂປເຊດທຳອິດຂອງລະບົບນັ້ນກໍຄື ໂປເຊດແມ່ (Parent Process) ຊຶ່ງກໍຄືບັກ init ນັ້ນເອງ ເມື່ອ Linux ເລີ່ມເຮັດວຽກ ໂປເຊດ init ໝາຍເລກ 1 ກໍເລີ່ມແລ່ນ ມັນເປັນໂປເຊດແມ່ ແລະມັນກໍຈະພາໃຫ້ໂປແກມອື່ນ ໆ ລັນຂຶ້ນມາອີກ ເປັນໂປເຊດລູກໆ ຫລານໆ (Child Process) ເມື່ອຮອດບ່ອນນັ້ນຕົວ init ເອງນັ້ນແຫລ່ະຊິກາຍເປັນໂປເຊດປູ່ໆ ທວດໆ ໄປແລ້ວ.... ແລະເບິ່ງຕໍ່ມາມັນກໍຈະໄລ່ມາເລື່ອຍໆ ຈົນມາເຖິງບັນທັດທີ່ເປັນ Termial ຫລືເປັນ Shell ຢ່າງຕອນທີ່ກຳລັງລັນຕົວ Terminal ນີ້ຢູ່ ກໍມີໂປເຊດປາກົດຂຶ້ນ ຫລືຢ່າງຕອນທີ່ກຳລັງໃຊ້ຄຳສັ່ງ ps -ax ຢູ່ ມັນກໍສະແດງອອກມາດ້ວຍ ຊຶ່ງເປັນຄຳສັ່ງໃນບັນທັດສຸດທ້າຍ... ລອງເບິ່ງຕົວຢ່າງດ້ານເທິງປະກອບດ້ວຍເພື່ອຄວາມເຂົ້າໃຈຫາອັນມາຫມາຍໄວ້ກະໄດ້ເພື່ອຄວາມເຂົ້າໃຈ....


ເອ່ຮູ້ສືກວ່າຊ່ວງນີ້ຂ້າພະເຈົ້າຈະມີແຕ່ເລື່ອງ process ແຫະເອົາລະຫວັງວ່າມັນຈະເປັນປະໂຫຍດຕໍ່ໃຜບໍ່ຄົນໃດ໋ກໍ່ຄົນຫນື່ງ
ຖ້າມັນຜິດພາດປະການໃດ໋ກໍ່ຂໍໂທດນຳຫລາຍໆຄວາມຮູ້ຊ່ຳຂີ້ເລື່ອຍຂອງຂ້າພະເຈົ້າມັນກໍ່ມີແຕ່ເທົ່ານີ້
ເອົາເປັນວ່າເປັນແນວໃດ໋ກໍ່ບອກມາເລີຍກໍ່ໄດ້
ขึ้นไปข้างบน Go down
http://soukphathai.forumlo.com
 
++ເລື່ອງຂອງ process ໃນ Linux++
ขึ้นไปข้างบน 
หน้า 1 จาก 1

Permissions in this forum:คุณไม่สามารถพิมพ์ตอบ
SOUKPHATHAI :: DEVELOPER ZONE :: Unix-Linux-
ไปที่: