为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

自动杀超时终端、僵尸进程的shell程序.doc

2017-11-29 7页 doc 23KB 10阅读

用户头像

is_105949

暂无简介

举报
自动杀超时终端、僵尸进程的shell程序.doc自动杀超时终端、僵尸进程的shell程序.doc ### shell程序名:chk_tty ### 功能一、找出非正常退出而导致系统内出现僵尸进程,这种进程有时会不 停地向CPU提出请求,导致CPU空闲率总为0; ### 功能二、找出超时登录的终端; TTY=`tty |awk -F '/' '{print $3}'` N=0 cat /dev/null >> chk_tty.log while [ 1 ] do TIME=`date '+%Y%m%d-%H:%M:%S'` echo $TIME sar -...
自动杀超时终端、僵尸进程的shell程序.doc
自动杀超时终端、僵尸进程的shell程序.doc ### shell程序名:chk_tty ### 功能一、找出非正常退出而导致系统内出现僵尸进程,这种进程有时会不 停地向CPU提出请求,导致CPU空闲率总为0; ### 功能二、找出超时登录的终端; TTY=`tty |awk -F '/' '{print $3}'` N=0 cat /dev/null >> chk_tty.log while [ 1 ] do TIME=`date '+%Y%m%d-%H:%M:%S'` echo $TIME sar -u 1 2 #非正常退出检查 TTYN_A=`who |grep ttyp |awk -F ' ' '{print $2}'|sort|uniq|wc -l| \ awk -F ' ' '{print $1}'` TTYN_B=`ps -ef|grep ttyp|grep -v tty0|grep -v tty1| \ grep -v login -c -p|awk -F ' ' '{print $6}'| \ sort|uniq|wc -l|awk -F ' ' '{print $1}'` echo TTYN_A=$TTYN_A TTYN_B=$TTYN_B cat /dev/null >tmp_tty.sh if [ $TTYN_A != $TTYN_B ] then ps -ef | grep ttyp|awk -F ' ' '{printf sh chkttysh %s\n,$6}'| \ sort|uniq |grep -v $TTY$>tmp_tty.sh sh tmp_tty.sh; #rm tmp_tty.sh fi # 超时登录检查 sleep 5 cat /dev/null >tmp_outtime.sh who -u|grep ttyp|grep -v ^root|grep -v ^cbps| \ grep -v rewrite|grep -v ' \. '|grep :|sed s/://g| \ awk -F ' ' '{if ($6>40) printf killout %s %s 40\n,$2,$7; }' >tmp_outtime.sh sleep 1 sh tmp_outtime.sh; #rm tmp_outtime.sh sar -u 1 2 echo sleep 199;sleep 199 done ### shell程序名:chkttysh ### 功能:对chk_tty检出的进程判断,符合即杀出; TY=$1 FLAG=`ps -f -t $TTY | grep login -c -p|wc -l|awk -F ' ' '{print $1}'` if [ $FLAG -lt 1 ] then TODAY=`date '+%Y%m%d-'` USER=`ps -f -t $TTY|grep ttyp|awk -F ' ' '{print $1}'` USER_ID=`ps -f -t $TTY|grep ttyp|awk -F ' ' '{print $2}'` USERTIME=`ps -f -t $TTY|grep ttyp|awk -F ' ' '{print $5}'|cut -b1-8` SYSCALL=`sar -c 1 2|grep Average|awk -F ' ' '{print $2}'` if [ x$USERTIME != $USERTIME -a $SYSCALL -gt 50000 ] then grep $TODAY /etc/term.log|grep $TTY|grep $USER|grep $USER_ID STR_FLAG=`grep $TODAY chk_tty.log|grep $TTY|grep $USER|grep $USER_ID$` echo $TODAY $USER ID=$USER_ID $USERTIME $TTY SYSCALL=$SYSCALL if [ x$STR_FLAG = x ] then echo |x$STR_FLAG| |x| grep $TODAY /etc/term.log|grep $TTY|grep $USER|grep $USER_ID >> chk_tty.log fi # 杀出,此功能要慎重使用,如错杀进程,会导致系统崩溃 if [ $USER_ID -gt 100 ] then grep $TODAY /etc/term.log|grep $TTY|grep $USER|grep $USER_ID echo kill -9 $USER_ID kill -9 $USER_ID fi echo $TTY is Death processes ! Killed ! >tmp_chkttysh.txt wrtty tmp_chkttysh.txt; sleep 1 echo >tmp_chkttysh.txt n=5 while [ $n -gt 0 ] do wrtty tmp_chkttysh.txt; sleep 1 n=`expr $n - 1` done fi rm tmp_chkttysh.txt fi ### shell程序名:killout ### 功能:杀终端 if [ $# -lt 3 ] then echo format: killout ttyp ID OUT_M exit fi TTY=$1 ID_A=$2 OUT_M=$3 TIME=`date '+%Y%m%d-%T '` # 确保所杀进程正确,避免误杀造成系统崩溃 ID_B=`ps -f -t $TTY | grep login -c -p$ |awk -F ' ' '{print $2}'` N_line=`ps -f -t $TTY |wc -l|awk -F ' ' '{print $1}'` # 如果传递来的进程号与 ps 命令查到的进程号不杀出; # 如果指定终端进程少于 3 个不杀出; # 如果传送来的进程号是空值不杀出; # 如果传送业的进程号小于 100 不杀出; #if [ $ID_A != $ID_B -o $N_line -lt 3 -o x$ID_A = x -o $ID_A -lt 100 ] if [ $ID_A != $ID_B -o $N_line -lt 3 -o x$ID_A = x ] then echo $TIME >>killout.err echo ID_A=$ID_A ID_B=$ID_B N_line=$N_line >>killout.err who -u |grep $tty >> killout.err ps -f -t $TTY >> killout.err sleep 1 exit fi echo >/dev/$TTY echo >/dev/$TTY echo >/dev/$TTY echo >/dev/$TTY echo \r 中 心 通 告 >/dev/$TTY echo >/dev/$TTY echo \r$TTY 用户: >/dev/$TTY echo >/dev/$TTY echo \r 因此终端空闲时间超过 $OUT_M 分钟,所以被强制退出,登录记录如下!!! >/dev/$TTY echo >/dev/$TTY echo \r 监测时间:$TIME >/dev/$TTY echo \r w -x |grep $TTY >/dev/$TTY echo >/dev/$TTY echo 要显示正在进行的操作请按 CTRL+R 进行屏幕刷新 >/dev/$TTY echo >/dev/$TTY echo $TIME\c >>outtime.log w -x |grep $TTY >>outtime.log onstat -u |grep $TTY |awk -F ' ' '{print $3}'|sed s/^/onmode -z / >tmp_sessid.sh sh tmp_sessid.sh kill -9 $ID_A ### shell程序名:wrtty ### 功能:与sco5.0下wall,好处是只显示自己希望显示的。 if [ $# -lt 3 ] then echo format: killout ttyp ID OUT_M exit fi TTY=$1 ID_A=$2 OUT_M=$3 TIME=`date '+%Y%m%d-%T '` # 确保所杀进程正确,避免误杀造成系统崩溃 ID_B=`ps -f -t $TTY | grep login -c -p$ |awk -F ' ' '{print $2}'` N_line=`ps -f -t $TTY |wc -l|awk -F ' ' '{print $1}'` # 如果传递来的进程号与 ps 命令查到的进程号不杀出; # 如果指定终端进程少于 3 个不杀出; # 如果传送来的进程号是空值不杀出; # 如果传送业的进程号小于 100 不杀出; #if [ $ID_A != $ID_B -o $N_line -lt 3 -o x$ID_A = x -o $ID_A -lt 100 ] if [ $ID_A != $ID_B -o $N_line -lt 3 -o x$ID_A = x ] then echo $TIME >>killout.err echo ID_A=$ID_A ID_B=$ID_B N_line=$N_line >>killout.err who -u |grep $tty >> killout.err ps -f -t $TTY >> killout.err sleep 1 exit fi echo >/dev/$TTY echo >/dev/$TTY echo >/dev/$TTY echo >/dev/$TTY echo \r 中 心 通 告 >/dev/$TTY echo >/dev/$TTY echo \r$TTY 用户: >/dev/$TTY echo >/dev/$TTY echo \r 因此终端空闲时间超过 $OUT_M 分钟,所以被强制退出,登录记录如下!!! >/dev/$TTY echo >/dev/$TTY echo \r 监测时间:$TIME >/dev/$TTY echo \r w -x |grep $TTY >/dev/$TTY echo >/dev/$TTY echo 要显示正在进行的操作请按 CTRL+R 进行屏幕刷新 >/dev/$TTY echo >/dev/$TTY echo $TIME\c >>outtime.log w -x |grep $TTY >>outtime.log onstat -u |grep $TTY |awk -F ' ' '{print $3}'|sed s/^/onmode -z / >tmp_sessid.sh sh tmp_sessid.sh kill -9 $ID_A
/
本文档为【自动杀超时终端、僵尸进程的shell程序.doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索