প্রসেস দেখা

প্রসেস দেখার সবচেয়ে সাদামাটা কমান্ডটি হল ps। এর সাথে ব্যবহারযোগ্য অনেক অপশন আছে(man ps দিয়ে দেখে নিতে পারেন) তবে শুধু ps দিয়েও আপনি দেখতে পারেন:

me@howtocode-pc:~$ ps
PID TTY TIME CMD
19394 pts/5 00:00:00 bash
19575 pts/5 00:00:00 ps

ফলাফল হিসেবে আমরা দুটো প্রসেস পেয়েছি। প্রথম প্রসেসটার প্রসেস আইডি বা PID হল 19394। TTY হল 'teletype' এর সংক্ষিপ্ত রূপ। এই প্রসেসদুটি টেলিটাইপ কন্ট্রোলিং টার্মিনাল 5 এ কাজ করছে। TTY আমাদের কাছে গুরুত্বপূর্ণ কিছু না। তারপরেই TIME। টাইম বলতে এখানে ওই প্রসেসটি প্রসেসরের কতটা সময় ব্যয় করে তাই নির্দেশ করে। আর শেষে CMD এর ঘরে থাকে কমান্ডটি।

এ বড় সাদামাটা লাগছে। তাইতো? আসুন কিছু অপশন সহ চেষ্টা করি। প্রথমে আমরা 'x' অপশনটি ব্যবহার করবো। অন্য কমান্ডের মত ps কমান্ডের অপশনগুলোর সামনে '-' বা '--' থাকে না।

me@howtocode-pc:~$ps x
PID TTY STAT TIME COMMAND
2191 ? Sl 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
2193 ? Ss 0:00 init --user
2269 ? Ss 0:00 ssh-agent -s
2291 ? Ss 0:00 dbus-daemon --fork --session --address=unix:abstract=/tmp/dbus-CNdywYjuei
2298 ? Ss 0:00 upstart-event-bridge
2311 ? S 0:00 upstart-file-bridge --daemon --user
2313 ? S 0:00 upstart-dbus-bridge --daemon --system --user --bus-name system
2315 ? S 0:00 upstart-dbus-bridge --daemon --session --user --bus-name session
2317 ? Ssl 0:06 /usr/bin/ibus-daemon --daemonize --xim
2331 ? Ssl 0:01 /usr/lib/gnome-settings-daemon/gnome-settings-daemon
2336 ? Sl 0:00 /usr/lib/gvfs/gvfsd
2341 ? Ssl 0:00 /usr/lib/at-spi2-core/at-spi-bus-launcher --launch-immediately
2342 ? Ssl 0:00 gnome-session --session=gnome
2352 ? Sl 0:00 /usr/lib/ibus/ibus-dconf
2356 ? Sl 0:00 /usr/lib/gvfs/gvfsd-fuse /run/user/1001/gvfs -f -o big_writes
2358 ? Sl 0:00 /usr/lib/ibus/ibus-ui-gtk3
2361 ? S 0:00 /bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-addres
2368 ? Sl 0:02 /usr/lib/ibus/ibus-x11 --kill-daemon
2372 ? Sl 0:00 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
2428 ? S<l 0:00 /usr/bin/pulseaudio --start --log-target=syslog
2431 ? Sl 0:00 /usr/lib/dconf/dconf-service
2434 ? Sl 0:01 /usr/lib/ibus/ibus-engine-simple
2444 ? S 0:00 syndaemon -i 1.0 -t -K -R
2450 ? Sl 0:00 /usr/lib/gnome-settings-daemon/gsd-printer
2455 ? Sl 1:42 /usr/bin/gnome-shell
2882 ? Sl 0:00 /usr/lib/gnome-shell/gnome-shell-calendar-server
2888 ? Sl 0:00 /usr/lib/evolution/evolution-source-registry
2892 ? Sl 0:00 /usr/lib/gvfs/gvfsd-metadata
2897 ? SLl 0:02 /usr/lib/gnome-online-accounts/goa-daemon
2902 ? Sl 0:00 /usr/lib/telepathy/mission-control-5
2907 ? Sl 0:00 /usr/lib/evolution/evolution-calendar-factory
2912 ? Sl 0:00 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
2928 ? Sl 0:00 /usr/lib/gvfs/gvfs-goa-volume-monitor
2933 ? Sl 0:00 /usr/lib/gvfs/gvfs-mtp-volume-monitor
2939 ? Sl 0:00 /usr/lib/gvfs/gvfs-afc-volume-monitor
2944 ? Sl 0:00 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
2949 ? Sl 0:02 /usr/bin/nautilus --no-default-window
2957 ? Sl 0:16 /usr/lib/tracker/tracker-store
2958 ? SNl 0:34 /usr/lib/tracker/tracker-miner-fs
2962 ? Sl 0:00 tilda
2965 ? Sl 0:08 cairo-dock
2986 ? Sl 0:10 yakuake
2996 ? Sl 0:00 /usr/lib/telepathy/telepathy-logger
2998 ? S 0:00 /usr/lib/x86_64-linux-gnu/gconf/gconfd-2
3011 ? S 0:00 gnome-pty-helper
3012 pts/10 Ss+ 0:00 /bin/bash
3068 ? S 0:00 python /usr/lib/x86_64-linux-gnu/cairo-dock/cairo-dock-launcher-API-daemon
3100 ? Sl 0:00 /usr/lib/gvfs/gvfsd-burn --spawner :1.4 /org/gtk/gvfs/exec_spaw/0
3133 ? Sl 0:00 /usr/lib/gvfs/gvfsd-trash --spawner :1.4 /org/gtk/gvfs/exec_spaw/1
3227 ? Sl 0:00 /usr/lib/gvfs/gvfsd-computer --spawner :1.4 /org/gtk/gvfs/exec_spaw/2
3238 ? Ss 0:00 kdeinit4: kdeinit4 Running...
3241 ? S 0:00 kdeinit4: klauncher [kdeinit] --fd=8
3244 ? Sl 0:00 kdeinit4: kded4 [kdeinit]
3580 ? Sl 0:01 zeitgeist-datahub
3585 ? Sl 0:00 /usr/bin/zeitgeist-daemon
3646 ? Sl 0:00 /usr/lib/x86_64-linux-gnu/zeitgeist-fts
3653 ? S 0:00 /bin/cat
3657 ? Sl 0:00 /usr/lib/gvfs/gvfsd-http --spawner :1.4 /org/gtk/gvfs/exec_spaw/3
3667 ? Sl 0:00 /usr/bin/kglobalaccel
3685 pts/12 Ss+ 0:00 /usr/bin/tmux
3690 ? Ss 0:01 /usr/bin/tmux
3691 pts/13 Ss 0:00 -bash
3698 ? Sl 0:00 /usr/bin/knotify4
4057 ? Sl 0:00 update-notifier
5200 ? Sl 0:00 /usr/lib/x86_64-linux-gnu/deja-dup/deja-dup-monitor
10038 ? Sl 0:00 /usr/bin/kactivitymanagerd
16237 ? Sl 0:04 okular /home/me/sherlock.pdf --icon okular -caption Okular
18203 pts/13 S+ 0:05 emacs -nw 1.7.2.viewprocess.md
18808 pts/15 Ss 0:00 -bash
18837 pts/15 Sl+ 0:01 cmus
19394 pts/5 Ss 0:00 /bin/bash --noediting -i
21797 pts/5 R+ 0:00 ps x

আমরা লম্বা একটা লিস্ট পেয়েছি প্রসেসের। তারসাথে STAT নামের নতুন একটা ঘর যোগ হয়েছে। 'x' অপশন দিয়ে আমরা বলেছি যেকোনো কন্ট্রোলিং টার্মিনাল থেকে চালু প্রোগ্রাম দেখাতে। STAT যেটি কিনা 'state' এর সংক্ষিপ্তরূপ প্রসেসটির বর্তমান অবস্থা সম্পর্কে গুরুত্বপূর্ণ তথ্য দেয় সংক্ষিপ্ত ভাবে। আসুন এই অক্ষরগুলোর অর্থ জেনে নেয়া যাক:

নির্দেশক

অর্থ

R

Running Process। অর্থাৎ যে প্রসেস এখনো কাজ করছে প্রসেসরে বা এখন কাজ করতে প্রস্তুত।

S

Sleeping Process। যে প্রসেসটা এখন কাজ না করে অপেক্ষা করছে কিছু একটা ঘটার। সেটা যেকোনো ধরনের সংকেত হতে পারে। কোনো বাটন চাপা বা কোনো নেটওয়ার্ক প্যাকেট পাওয়া।

D

Uninterruptible Sleep। এমন স্লিপিং প্রসেস যা কোনোরকম ইনপুট বা আউটপুটের জন্য অপেক্ষা করছে এবং যাকে বন্ধ করা যায় না। যেমন ডিস্ক ড্রাইভ।

T

Stopped Process। যে প্রসেসকে বন্ধ করতে বলা হয়েছে। আমরা পরে এ নিয়ে বিস্তারিত জানবো।

Z

Zombie Process। এগুলো এমনসব চাইল্ড প্রসেস যা বন্ধ করা হয়েছে কিন্তু তার প্যারেন্ট প্রসেস এখনো তাকে মুছে ফেলেনি।

<

অতিগুরুত্বপূর্ণ প্রসেস। এমন প্রসেস যাকে প্রসেসরে বেশি সময় নিতে সুযোগ দেয়া হয়।(প্রসেসের ক্ষেত্রে niceness বলে একটি টার্ম আছে। এধরনের প্রসেসকে less nice বলা হয় কারন এরা নিজেরা বেশি সময় ব্যবহার করে এবং অন্যদের সময় কম দেয়।)

N

একটি কম গুরুত্বপূর্ণ বা nice process। গুরুত্বপূর্ণ প্রসেসগুলোর পর এরা প্রসেসরে সময় পায়।

আরো তথ্যসমৃদ্ধ প্রসেস লিস্ট আমরা দেখতে পারি এভাবে:

me@howtocode-pc:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 33832 3160 ? Ss 11:29 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S 11:29 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 11:29 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 11:29 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 11:29 0:01 [rcu_sched]
root 8 0.0 0.0 0 0 ? S 11:29 0:01 [rcuos/0]
root 9 0.0 0.0 0 0 ? S 11:29 0:00 [rcuos/1]
root 10 0.0 0.0 0 0 ? S 11:29 0:00 [rcuos/2]
root 11 0.0 0.0 0 0 ? S 11:29 0:00 [rcuos/3]
root 12 0.0 0.0 0 0 ? S 11:29 0:00 [rcu_bh]
root 13 0.0 0.0 0 0 ? S 11:29 0:00 [rcuob/0]
root 14 0.0 0.0 0 0 ? S 11:29 0:00 [rcuob/1]
....

আমরা পুরো লিস্টটি এখানে দিইনি। এখানে আমরা USER নামে ঘরে দেখতে পারছি কোন ইউজার এই প্রসেসটি চালু করেছে। %CPU এবং %MEM নির্দেশ করছে শতকরা কতটুকু প্রসেসর ও মেমরি প্রসেসটি খরচ করছে। VSZ ভার্চুয়াল মেমরির পরিমান দেখাচ্ছে। RSS দেখাচ্ছে Resident Set Size অর্থাৎ RAM এ কতটুকু জায়গা প্রসেসটি নিচ্ছে(এটি কিলোবাইটে প্রকাশ করা হচ্ছে।)। START দিয়ে বোঝানো হচ্ছে কখন প্রসেসটি চালু করা হয়েছে।

ডায়নামিক্যালি প্রসেস দেখা

ps কমান্ডটি আমরা যখন ব্যবহার করি ঠিক সেই মুহুর্তের প্রসেসের একটি চিত্র আমরা দেখতে পাই। আমরা যদি চাই এটা ডায়নামিক্যালি দেখতে তাহলে top কমান্ডটি ব্যবহার করতে হবে:

me@howtocode-pc:~$ top
top - 12:43:00 up 1:13, 3 users, load average: 0.07, 0.19, 0.27
Tasks: 178 total, 2 running, 176 sleeping, 0 stopped, 0 zombie
%Cpu(s): 12.7 us, 3.0 sy, 4.6 ni, 75.2 id, 4.6 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 3915312 total, 2698912 used, 1216400 free, 283676 buffers
KiB Swap: 2097148 total, 0 used, 2097148 free. 1458552 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8 root 20 0 0 0 0 R 6.1 0.0 0:01.50 rcuos/0
2455 me 20 0 1477500 168964 33464 S 6.1 4.3 2:32.69 gnome-shell
29407 me 20 0 29404 1516 1064 R 6.1 0.0 0:00.01 top
1 root 20 0 33832 3160 1472 S 0.0 0.1 0:02.02 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 0:01.64 rcu_sched
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuos/1
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuos/2
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuos/3
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/1
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/2
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/3
17 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
18 root rt 0 0 0 0 S 0.0 0.0 0:00.02 watchdog/0
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
24 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
25 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/u9:0
26 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
27 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff
28 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khubd

কমান্ডটি দিলে টপ প্রোগ্রামটি চালু হবে। এর প্রথম অংশে সিস্টেম সম্পর্কিত বেশ কিছু গুরুত্বপূর্ণ তথ্য দেবে। আর দ্বিতীয় অংশে প্রসেসের লিস্ট। এটি প্রতি তিনসেকেন্ডে একবার আপডেট হয়। এবার আমরা কমান্ডটির বিভিন্ন অংশের অর্থ জেনে নিই:

সারি

অংশ

অর্থ

1

top

প্রোগ্রামের নাম।

1

12:43:00

বর্তমান সময়।

1

up 1:13

কম্পিউটার কতক্ষণ চালু আছে বা আপটাইম।

1

3 users

কতজন ইউজার লগড-ইন আছে।

1

load average:

কতগুলো প্রসেস কাজ করার জন্য প্রস্তুত। এখানে তিনটি সংখ্যা আছে প্রথমটি দিয়ে গত ৬০সেকেন্ডের লোড এভারেজ এবং পরের দুটি দিয়ে যথাক্রমে ৫মিনিট ও ১৫মিনিটের লোড এভারেজ জানায়।

2

Tasks:

এখানে বিভিন্নধরনের প্রসেসের মোট সংখ্যা দেখায়।

3

Cpu(s):

এই সারিতে প্রসেসর সম্পর্কিত বিভিন্ন গুরুত্বপূর্ণ তথ্য দেখায়।

3

12.7 us

শতকরা কতটুকু প্রসেসর কার্নেলছাড়া অন্যসব ইউজার দ্বারা ব্যবহৃত হচ্ছে।

3

3.0 sy

শতকরা কতটুকু প্রসেসর কার্নেল বা সিস্টেম ব্যবহার করছে।

3

4.6 ni

নাইস প্রসেস দ্বারা ব্যবহৃত প্রসেসরের শতকরা অংশ।

3

75.2 id

শতকরা কতটুকু প্রসেসর অলস পড়ে আছে বা ব্যবহৃত হচ্ছে না।

3

4.6 wa

শতকরা কতটুকু ইনপুট বা আউটটপুটের অপেক্ষায় আছে।

3

0.0 hi

হার্ডওয়্যার ইন্টারাপশনজনিত ব্যবহৃত প্রসেসর।

3

0.1 si

সফ্টওয়্যার ইন্টারাপশনজনিত ব্যবহৃত প্রসেসর।

3

0.0 st

হাইপারভাইজরে ব্যবহৃত সময়।

4

Mem:

ব্যবহৃত মেমরি।

5

Swap:

ব্যবহৃত সোয়াপ বা ভার্চুয়াল মেমরি।

top এর বেশ কয়েকটি কীবোর্ড কমান্ড আছে। এটি বন্ধ করতে 'q' চাপুন।