2.23實驗記錄

殺死指定用戶所有進程的方法
1.pkill -u user_id
2.killall -u user_id
3.ps列出user的pid然後依次kill掉
ps -ef | grep user_id | awk ‘{ print $2 }’ | sudo xargs kill -9
其中$2指第二列
4.pgrep -u查出用戶的所有pid然後依次kill掉
pgrep -u user_id | sudo xargs kill -9

語句解析
ps -ef | grep aabbcc | grep -v grep | awk ‘{print $2}’ | xargs kill -9
“ps -ef” —— 查看所有進程
“grep aabbcc” ——列出所有含關鍵字"aabbcc"的進程
“grep -v grep”——除去含有關鍵字grep的進程
“awk ‘{print $2}’”——打印第二列
在這裏插入圖片描述
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
“ps aux”——獲取標題
“grep -v PID”——去掉ps aux命令得到的標題,即去掉含PID的行
“sort -rn -k +3”——r表示倒敘排列,n爲以數值大小排序,-k +3表示以第三列內容進行排序
“head”——取前十行數據

python中使用shell命令提示SyntaxError: invalid syntax
轉義的問題,awk中的單引與python衝突,加個\轉義

小守護進程,超過95%cpu使用率則自動殺當前進程佔用cpu最多的,循環直到低於95%

#! /usr/bin/python

import psutil,time,os
while True:
        print(psutil.cpu_percent(1))
        os.system('ps aux|grep -v PID|sort -rn -k +3|awk \'NR==1{print $2}\'')
        while psutil.cpu_percent(1)>0.95:
                os.system('ps aux|grep -v PID|sort -rn -k +3|awk \'NR==1{print $2}\'|xargs kill -9')
        time.sleep(30)

進一步修改,每30秒同時將使用cpu前十的進程寫入logs.txt
os.system除了返回進程信息還會返回一個數字,會報錯(int型不可遍歷),故使用os.popen,不返回數字

#! /usr/bin/python

import psutil,time,os

logsfile=open('logs.txt','w')
logsfile.writelines(os.popen('ps aux|head -1'))
while True:
        print(psutil.cpu_percent(1))
        os.system('ps aux|grep -v PID|sort -rn -k +3|awk \'NR==1{print $2}\'')
        logsfile.writelines(os.popen('ps aux|grep -v PID|sort -rn -k +3|head'))
        while psutil.cpu_percent(1)>0.7:
                os.system('ps aux|grep -v PID|sort -rn -k +3|awk \'NR==1{print $2}\'|xargs kill -9')
        time.sleep(30)

在這裏插入圖片描述
xshell窗口內容全一樣的原因:使用了attach登錄容器
改成用exec登錄容器就可以了

docker exec -it pythongcc /bin/bash

d是後臺運行
在這裏插入圖片描述
在這裏插入圖片描述
超過70自動殺了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章