成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

10、進程管理,case和函數(shù)學習筆記-創(chuàng)新互聯(lián)

ps:顯示系統(tǒng)當前進程狀態(tài)的命令

站在用戶的角度思考問題,與客戶深入溝通,找到太仆寺網(wǎng)站設計與太仆寺網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設計、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡空間、企業(yè)郵箱。業(yè)務覆蓋太仆寺地區(qū)。

  ps a 所有與終端相關的進程

 ps x 所有與終端無關的進程

 ps u 以用戶為中心顯示進程相關信息

 VSZ:

 虛擬內存集,Virutal menmory Size

 RSS:

 常駐內存集

 STAT:

  R:運行或可運行

  S:可中斷睡眠

  D:不可中斷睡眠

  T:停止

  Z:僵死

  s:session leader 有子進程

  +:前臺進程

  l:多線程進程

  N:低優(yōu)先級進程

  <: 高優(yōu)先級進程

 START:

 啟動時間

 

 TIME:

 累計占用的內存時間

 COMMAND

 []表示內核線程

  ps [option]

   -e 顯示所有進程

   -f 以進程的長格式顯示

   -F 顯示額外信息

   -H 顯示進程的層次信息

     -o                 自定義要顯示的信息

ps axo pid,command

ps aux 常用組合

ps -ef 常用組合

ps -eFH 常用組合

pstree:顯示進程樹

pgrep:

-U Username         僅顯示指定用戶的進程的進程的PID

-G Groupname                 僅顯示指定用戶組的進程的進程的PID

pidof:顯示指定命令所啟動的pid

  pidof command

top:

top - 10:35:59 up 2 days, 16:26,  3 users,  load average: 0.00, 0.00, 0.00

系統(tǒng)當前時間 系統(tǒng)運行時長 登錄的用戶 平均負載:1分鐘,五分鐘,15分鐘

Tasks: 110 total,  1 running, 109 sleeping,  0 stopped,  0 zombie

總進程數(shù) 運行進程數(shù) 休眠進程數(shù) 停止進程數(shù) 僵死進程數(shù)

Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

用戶空間占比 系統(tǒng)占比 nice占比 空閑占比 等待占比 硬中斷占比 軟中斷占比 被占用占比

Mem:  1918400k total,  406832k used,  1511568k free,  153868k buffers

Swap:  2097144k total,     0k used,  2097144k free,   90524k cached

 M: 按內存占用百分比大小排序

 P:按cpu占用百分比大小排序,默認

 T:按累計占有時長進行排序

 1:多CPU時按數(shù)字1可以分開顯示

 l: 是否顯示負載信息

 t:是否顯示cpu和進程的統(tǒng)計信息

 m:是否顯示內存和交互分區(qū)的信息

 q:退出

 k:kill,殺掉進程

 s:改變top刷新頻率

 常用選項:

   -d # :指定刷新時間間隔

   -n # :指定刷新的次數(shù)

   -b :以批次顯示top的刷新

htop

  u:選擇指定用戶的進程

  l: 顯示進程所打開的文件列表

  s:顯示進程執(zhí)行的系統(tǒng)調用

  a:顯示進程的進程的cpu上

  #:快速將光標定位之指定的PID進程上

  quit

vmstst

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

 r  b  swpd  free  buff  cache  si  so   bi   bo  in  cs us sy id wa st

 0  0    0  57460  54564 285520   0   0   30   5  21  14  0  0 99  1

 procs

  r:運行或等待cpu時間片的進程的個數(shù)

  b:被阻塞(通常為等待I/O完成)的進程的長度

 memory

  swpd:從物理內存交互至swap中的數(shù)據(jù)量

  free:未使用的內存大小

  buffer:buffer空間大小,通常與緩存寫操作相關

  cache:cache空間大小,通常與緩存讀操作相關

 swap

  si:swap in 數(shù)據(jù)進入swap中的數(shù)據(jù)量,通常是速率。kb/s

  so:swap out 數(shù)據(jù)離開swap中的數(shù)據(jù)量,通常是速率。kb/s

 io:

  bi:block in:從塊設備讀入的數(shù)據(jù)量,通常是速率,kb/s

  bo:block out:保存至塊設備中的數(shù)據(jù)量,通常是速率,kb/s

  in:中斷發(fā)生頻率。每秒的中斷數(shù)

  cs:context switch 上下文切換,進程切換,通常是速率,kb/s

 cpu:

  us:用戶空間的使用率

  sy:內核空間的使用率

  id:空閑

  wa:等待的

  st:被偷走的

  使用格式

  vmstat [delay [counts]]

   -s:顯示內存統(tǒng)計數(shù)據(jù)

nice,renice

進程:nice

   用來手動調整進程優(yōu)先級,默認nice為0.其默認優(yōu)先級為120

   nice值取值范圍 :-20,19

   nice值對應優(yōu)先級 :100,139

   nice:普通用戶只能調大此值

   對于尚未啟動的程序

nice -n # COMMAND 進程以#的nice值啟動

   對于運行中的進程:

renice # PID 調整指定PID的nice值

ps axo ni command pid 查看進程的nice值

進程間通信(IPC):

  信號:

  kill命令:可以實現(xiàn)向其他進程發(fā)送信息

kill -l 或 man 7 signal 可以查看可以向進程發(fā)送的所有信息

  kill -SIGNAL PID 殺死指定進程(SINGAL可以使數(shù)字代號也可以是信號名稱)

    1) SIGHUP 讓程序重讀配置文件,而不用重啟程序

    2) SIGINT 中斷信號。Ctrl+c即發(fā)送此信號

    9) SIGKILL 殺死進程

    15) SIGTERM 終止進程,比較優(yōu)雅(默認)

    killall -SIGNAL 進程名         殺死指定程序的所有進程

Linux的作業(yè)控制

  前臺作業(yè):占據(jù)著一個終端

  后臺作業(yè):作業(yè)執(zhí)行時不占據(jù)終端,作業(yè)啟動后就釋放終端

  非守護進程類的程序,啟動以后都在前臺工作

     如果已經(jīng)啟動:前臺-->后臺。ctrl+z把前臺作業(yè)送往后臺,作業(yè)被”停止“

 如果尚未啟動:COMMAND &

 退出當前會話,作業(yè)也會終止,因為作業(yè)與當前終端相關,如果把作業(yè)送往后臺后,不期望作業(yè)隨終止結束而停止

      nohup COMMAND &

 如何讓送往后臺的作業(yè)繼續(xù)執(zhí)行:

  fg [[%]作業(yè)號碼]:將作業(yè)調回前臺繼續(xù)進行

  bg [[%]作業(yè)號碼]:讓作業(yè)在后臺繼續(xù)進行

    默認的為最后一個進入后臺的任務

       kill %作業(yè)號碼:終止作業(yè)

 查看作業(yè)號:

   jobs

pmap pid 查看進程的內存占用情況

00007fb60640d000    4K   rw---  /sbin/init

起始地址        空間  權限

bash腳本編程:之case語句

case語句的語法格式:

case expression in

pattern1)

suite1

;;

pattern2)

suite2

;;

...

patternn)

suiten

;;

*)

other_suite

;;

esac

case中各pattern可以使用模式:

a|b a或者b

* 匹配任意長度的任意字符;

? 匹配任意單個字符;

[-] 范圍匹配

練習:寫一個腳本,接受如此格式

script.sh {start|stop|restart|status}

1、如是start,那么創(chuàng)建/var/lock/subsys/script.sh,顯示啟動成功;

2、如果參數(shù)是stop,則刪除/var/lock/subsys/script.sh,顯示停止成功

3、如果restart,則刪除,再創(chuàng)建,顯示成功;

4、如果status, 如果文件存在,則顯示running,否則,顯示stopped

#!/bin/bash

#

myService=`basename $0`

lockFile="/var/lock/subsys/$myService"

[ $# -lt 1 ] && echo "Usage: $myService {start|stop|restart|status}" && exit 4

case $1 in

'start')

    touch $lockFile

    echo "Starting $myService OK"

    ;;

'stop')

    rm -f $lockFile

    echo "Stopping $myService OK"

    ;;

'restart')

    rm -f $lockFile

    touch $lockFile

    echo "Restarting $myService OK"

    ;;

'status')

    if [ -f $lockFile ]; then

        echo "$myService is running"

    else

        echo "$myService is stopped"

    fi

    ;;

*)

    echo "Usage: $myService {start|stop|restart|status}"

    exit 3

    ;;

esac

練習:寫一個腳本,能對/etc/目錄進行打包備份,備份位置為/backup/etc-日期.后綴

1、顯示如下菜單給用戶:

xz) xz compress

gzip) gzip compress

bip2) bzip2 compress

2、根據(jù)用戶指定的壓縮工具使用tar打包壓縮;

3、默認為xz;輸入錯誤則需要用戶重新輸入;

#!/bin/bash

#

[ -d /backup ] || mkdir /backup

cat << EOF

Plz choose a compress tool:

xz) xz compress

gzip) gzip compress

bip2) bzip2 compress

EOF

while true; do

 read -p "Your option: " option

 option=${option:-xz}

 case $option in

 xz)

  compressTool='J'

  suffix='xz'

  break ;;

 gzip)

  compressTool='z'

  suffix='gz'

  break ;;

 bzip2)

  compressTool='j'

  suffix='bz2'

  break ;;

 *)

  echo "wrong option." ;;

 esac

done

tar ${compressTool}cf /backup/etc-`date +%F-%H-%M-%S`.tar.$suffix /etc/*

練習:寫一個腳本,完成如下功能

說明:此腳本能夠為指定網(wǎng)卡創(chuàng)建別名,指定地址;使用格式:mkethalias.sh -v|--verbose -i|--interface ethX

1、-i選項用于指定網(wǎng)卡;

2、如果網(wǎng)卡存在:在命令行,請用戶指定一個別名;

3、讓用戶指定IP和掩碼;

4、用戶可以同時使用-v或--verbose選項:如果使用了,則在配置完成后,顯示配置結果;否則,則不予顯示;

#!/bin/bash

#

debug=0

while [ $# -ge 1 ]; do

 case $1 in

 -i|--interface)

  ethcard="$2"

  shift 2 ;;

 -v|--verbose)

  debug=1

  shift

  ;;

 *)

  echo "Wrong options or arguments."

  echo "Usage: `basename $0` [-v|--verbose] -i|--interface Interface"

  shift $#

  ;;

 esac

done

# echo "Interface: $ethcard , Verbose Flag: $debug "

! ifconfig $ethcard &> /dev/null && echo "No this interface..." && exit 3

read -p "Enter an alias: " ethAlias

read -p "Enter IP: " ipAddr

read -p "Mask: " netMask

ifconfig $ethAlias $ipAddr netmask $netMask

[ $debug -eq 1 ] && ifconfig $ethAlias

bash腳本編程之函數(shù)

可被調用:函數(shù)有函數(shù)名

函數(shù)出現(xiàn)的地方,會自動被替換成函數(shù)定義的代碼

函數(shù)定義

語法:

FuncName() {

函數(shù)體

}

function FuncName {

函數(shù)體

}

函數(shù)有兩種返回值:

正常返回的數(shù)據(jù):

函數(shù)中的打印語句,如echo或print

函數(shù)中命令的執(zhí)行結果

執(zhí)行狀態(tài)返回值:

取決于函數(shù)中執(zhí)行的最后一條語句

自定義:return N

函數(shù)可以接受參數(shù):

在函數(shù)體可以使用類似腳本調用位置參數(shù)一樣的參數(shù)

$1, $2, ...

$#

$*, $@

練習:寫一個腳本,完成如下功能

1、顯示如下菜單

disk) show disk info

mem) show memory info

cpu) show cpuinfo

2、顯示用戶選定的內容;

#!/bin/bash

#

ShowMenu() {

cat << EOF

disk) show disk info

mem) show memory info

cpu) show cpuinfo

EOF

}

main() {

ShowMenu

read -p "Plz choose an option: " option

case $option in

disk)

 df -h

 ;;

mem)

 free -m

 ;;

cpu)

 cat /proc/cpuinfo

 ;;

*)

 echo "Wrong option"

esac

}

main

如果在函數(shù)中使用變量:變量作用域

在函數(shù)中使用了在主程序中聲明的變量,重新賦值會直接修改主程序中的變量;

如果不期望函數(shù)與主程序中的變量沖突,函數(shù)中使用變量都用local修飾;即使用局部變量;

在函數(shù)中使用了在主程序中沒有聲明的變量,在函數(shù)執(zhí)行結束后即被撤消,無論是否使用local修飾符;

如果想把腳本的全部位置參數(shù),統(tǒng)統(tǒng)傳遞給腳本中某函數(shù)使用,怎么辦?

使用$*傳遞

練習:寫一個腳本,判定172.16.0.0網(wǎng)絡內有哪些主機在線,在線的用綠色顯示,不在線的用紅色顯示;要求,編程中使用函數(shù);

#!/bin/bash

Ping(){

    ipAddr=172.16.$1.$2

    ping -c 1 -w 1 $ipAddr >> /dev/null

    if [ $? -eq 0 ];then

        echo -e "\033[32m$ipAddr\033[0m"

    else

        echo -e "\033[31m$ipAddr\033[0m"

    fi

}

for i in `seq 0 255`;do

    for j in `seq 1 254`;do

        Ping $i $j

    done

done

練習:寫一個腳本,完成如下功能(使用函數(shù)):

1、提示用戶輸入一個可執(zhí)行命令;

2、獲取這個命令所依賴的所有庫文件(使用ldd命令);

3、復制命令至/mnt/sysroot/對應的目錄中

解釋:假設,如果復制的是cat命令,其可執(zhí)行程序的路徑是/bin/cat,那么就要將/bin/cat復制到/mnt/sysroot/bin/目錄中,如果復制的是useradd命令,而useradd的可執(zhí)行文件路徑為/usr/sbin/useradd,那么就要將其復制到/mnt/sysroot/usr/sbin/目錄中;

4、復制各庫文件至/mnt/sysroot/對應的目錄中,其要求命令;

#!/bin/bash

#

target=/mnt/sysroot

clearCmd() {

 if which $cmd &> /dev/null; then

    cmdPath=`which --skip-alias $cmd`

 else

    echo "No such command"

    return 5

 fi

}

cmdCopy() {

    cmdDir=`dirname $1`

    [ -d ${target}${cmdDir} ] || mkdir -p ${target}${cmdDir}

    [ -f ${target}${1} ] || cp $1 ${target}${cmdDir}

}

libCopy() {

    for lib in `ldd $1 | grep -o "/[^[:space:]]\{1,\}"`; do

        libDir=`dirname $lib`

        [ -d ${target}${libDir} ] || mkdir -p ${target}${libDir}

        [ -f ${target}${lib} ] || cp $lib ${target}${libDir}

    done

}

while true; do

 read -p "Enter a command: " cmd

 if [ "$cmd" == 'quit' ] ;then

    echo "quit"

    exit 0

 fi

 clearCmd $cmd

 [ $? -eq 5 ] && continue

 cmdCopy $cmdPath

 libCopy $cmdPath

done

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文標題:10、進程管理,case和函數(shù)學習筆記-創(chuàng)新互聯(lián)
鏈接地址:http://jinyejixie.com/article16/gphdg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計網(wǎng)站策劃、網(wǎng)站改版定制網(wǎng)站、商城網(wǎng)站、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
美姑县| 蓬莱市| 台中市| 皋兰县| 邳州市| 兴城市| 永和县| 新民市| 香港| 重庆市| 农安县| 西乌珠穆沁旗| 米易县| 陆川县| 米易县| 静海县| 凭祥市| 贺兰县| 西峡县| 灵璧县| 湾仔区| 定南县| 汉中市| 乌拉特中旗| 台中市| 梅州市| 芒康县| 永年县| 新安县| 田阳县| 红河县| 阜康市| 城市| 巴林右旗| 鱼台县| 佳木斯市| 湛江市| 昭觉县| 长垣县| 灌云县| 抚顺县|