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自动杀了

发布了5 篇原创文章 · 获赞 2 · 访问量 2672

猜你喜欢

转载自blog.csdn.net/weixin_43621813/article/details/104470133
今日推荐