您的位置:首页 > 运维架构 > Shell

练习---shell脚本查看系统所有进程

2014-09-12 17:27 441 查看
#!/bin/bash

#process_info : show the process information on current system as form in "HTML"

#1 获取系统当前时间

#2 查询系统当前所有进程,通过ps aux获取,

#3 规范化输出每个用户当前的进程,及每个进程的当前状况

#output html page to view directly on brower

TITLE="系统程序运行情况明细"

Pro_info=

#报告系统当前时间

report_uptime () {

    echo $(uptime)

    return

}

#把系统信息存到临时文件,方便以后操作

get_process_info_temp () {

    rm processinfo.*

    mktemp  processinfo.XXX

    Pro_info=processinfo.*

    ps auxh  | sort -k2n > $Pro_info

}

#将创建的临时文件删除

rm_process_info_temp () {

    rm processinfo.*

    return

}

#统计总的进程数量

count_whole_process () {

    cat $Pro_info |  wc -l

}

#对tty项进行解析

type_on_tty () {

    if [ "?" == $1 ] ; then

        echo "无终端进程"

    else

        echo "终端号:$1"

    fi

    return

}

#对stat项进行解析

type_on_stat () {

    case $1 in

    S*)    echo "睡眠状态(可中断)"

        ;;

    D*)    echo "睡眠状态(不可中断)"

        ;;

    R*)    echo "运行状态"

        ;;

    T*)    echo "僵尸状态"

        ;;

    X*)    echo "死亡状态"

        ;;

    Z*)    echo "死进程(结束时没有接受父进程处理)"

        ;;

    W*)    echo "页面状态"

        ;;

    *)    echo "状态未知"

        ;;

    esac

}

#输出每个进程的相关信息到HTML当中

report_process_info () {

    local count=1;

    while read user pid cpu men vsz rss tty stat start time command ; do

    echo "<PRE>"

    cat <<- EOF

        NO.$count

        -------------------------------------

        Command :    $command

        Username:    $user

        PID    :    $pid

        CPU(%)  :    $cpu

        Men(%)    :    $men

        Vsz    :    $vsz

        Rss    :    $rss

        Tty    :    $(type_on_tty $tty)

        Stat    :    $(type_on_stat $stat)

        Start    :    $start

        Time    :    $time    

        

        -------------------------------------

    EOF

    echo "</PRE>"

    count=$((count+1))

done  < <(cat $Pro_info)

}

write_html_page () {

cat << _EOF_

<HTML>

<META http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <HEAD>

        <TITLE>$TITLE</TITLE>

    </HEAD>

        <BODY>

        <CENTER><h1>$TITLE</h1></CENTER>

        <P>$TIMESTAMP</P>

        $(report_uptime)

        <P>当前系统总进程数量为: $(count_whole_process)</P>

        

        $(report_process_info)

        </BODY>

</HTML>

_EOF_

    return

}

########################################################

#################实际操作流程############################

#获取系统进程信息

get_process_info_temp

#生成相关HTML页面

write_html_page > process.html

#删除临时文件

rm_process_info_temp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: