iT邦幫忙

2022 iThome 鐵人賽

DAY 23
2
Software Development

林姓商人與指令操作的秘密—談 Linux command line interface系列 第 23

Day 23:利用指令組合自動關閉進程:awk、xargs

  • 分享至 

  • xImage
  •  

知道怎麼看系統資源之後,以及關閉我們不需要的進程之後

如果可以透過指令,自動幫我們關閉指令,不用自己手動輸入進程的 id,那該有多方便呀。

今天,搭配前面教學的內容,我們就來教大家怎麼做到這件事情!

首先,我們要先學 awk 這個指令

NAME
       gawk - pattern scanning and processing language

這其實是一個很單純的語言,跟所有程式語言一樣,可以用來讀取內容、處理、輸出。

首先,我們複習一下前面我們學過的內容:ps aux 可以列出不同用戶不同終端機的進程。

接著,透過 grep,我們可以找到我們想要的進程內容

ps aux | grep php

ec2-user  6609 34.3  3.0 239736 30668 ?        R     2021 258440:07 /usr/bin/php8.0 -S 0.0.0.0:80 /var/www/html/server.php
ec2-user 12808 43.0  4.0 111520 40712 ?        R    13:32   0:00 /usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80
ec2-user 12820  0.0  0.0 119420   916 pts/0    S+   13:33   0:00 grep --color=auto php

這邊我們可以看到,第二排的資料,就是我們之前要手動輸入的進程 id

接著,我們利用 awk 幫我們抓出第二排的資料

ps aux | grep php | awk '{print $2}'

6609
12808
12820

這樣!我們就取得所有的進程 id 囉!

最後,我們利用 xargs 這個指令,幫我們將前面的輸出轉換成
kill 可以讀取的內容

NAME
       xargs - build and execute command lines from standard input

用法如下

ps aux | grep php | awk '{print $2}' | xargs kill

這樣!我們就成功地將 awk 取出的進程 id 送到 kill 的參數內,讓他協助我們終止不需要的進程囉!

awk 作為一種語言,當然不只有 awk '{print $2}' 這麼簡單的使用方法,詳細資料可以看 man awk 或者網路搜尋看看。

相信各位讀者看到這裡,一定可以想到更多有趣的使用方式。

今天有關 awk 的用法就介紹到這邊,各位明天見!


上一篇
Day 22:進一步討論進程管理:top、kill、killall
下一篇
Day 24:環境變數的操作:printenv、export、source
系列文
林姓商人與指令操作的秘密—談 Linux command line interface30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言