iT邦幫忙

2022 iThome 鐵人賽

DAY 21
2

學會快捷鍵之後,接著我們要更深入一點,開始處理電腦效能的問題。

在視窗化的系統,當電腦慢的時候,我們通常會開啟「工作管理員」或者打開 mac 的「活動監視器」來查看是哪一個工作佔據了我們的資源。

這邊所謂的「程式」,在 linux 的世界內,叫做進程(process)。概略地說,就是紀錄每個任務什麼時候可以使用系統的資源(CPU、記憶體⋯⋯等),又會在什麼時候任務結束並歸還資源。

要查看現有的進程,我們可以使用 ps

NAME
       ps - report a snapshot of the current processes.

這邊的 man 說明非常詳盡,建議各位花時間深入閱讀。

剛連線時使用 ps 會看到

ps

  PID TTY          TIME CMD
27774 pts/1    00:00:00 bash
27805 pts/1    00:00:00 ps

這邊會看到我們這個終端裝置底下運作中的進程

對 linux 來說,這個作業系統一開始的設計,就是假設會給多人同時使用的一種作業系統,所以會對不同終端所呼叫的指令進行區隔。

如果我們輸入 ps x 可以看到不隸屬任何終端裝置(TTY,TeleTYpes)底下運作的指令

x      Lift the BSD-style "must have a tty" restriction,

使用時會看到

ps x

  PID TTY      STAT   TIME COMMAND
 6101 ?        Ssl    8:15 MailHog
 6609 ?        R    256853:37 /usr/bin/php8.0 -S 0.0.0.0:80 /var/www/html/server.php
24384 ?        S      0:00 sshd: ec2-user@pts/0
24387 ?        S      0:00 sshd: ec2-user@notty
24388 ?        Ss     0:00 /usr/libexec/openssh/sftp-server
24405 pts/0    Ss+    0:00 -bash
27752 ?        S      0:00 sshd: ec2-user@pts/1
27756 ?        S      0:00 sshd: ec2-user@notty
27757 ?        Ss     0:00 /usr/libexec/openssh/sftp-server
27774 pts/1    Ss     0:00 -bash
29084 ?        R      0:00 /usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80
29085 pts/1    R+     0:00 ps x

這樣可以看到更多進程。

如果要看到所有進程,可以使用 ps -e

如果想看到更詳盡的進程資訊,很常見的指令是 ps aux

a      Lift the BSD-style "only yourself" restriction,
u      Display user-oriented format.

這會列出所有用戶,所有終端的進程。通常會多到閱讀不太方便,所以可以搭配 less 使用

ps aux | less

如果要看進程呼叫的父子關係,可以用 ps axjf,會畫出樹狀結構

j      BSD job control format.
f      ASCII art process hierarchy (forest).

可以看到,單單一個 ps 指令,可以研究的學問很深呢!

今天有關進程的部分,我們就分享到這邊,各位明天見!


上一篇
Day 20:善用 history :!!、!+數字、!+字串
下一篇
Day 22:進一步討論進程管理:top、kill、killall
系列文
林姓商人與指令操作的秘密—談 Linux command line interface30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言