linux下shell編程示例-獲取進程id


今天初步學習了一下linux下的shell編程,簡單記錄一下測試用例

1.編輯shell腳本文件如下:

#!/bin/bash
echo "hello bash linux"
echo "第0個參數:$0"
echo "第一個參數:$1"
echo "當前子shell進程:$$"

#pidarr=`ps x | awk '{print $1}'`
pidarr=$(ps x | awk '{print $1}')
echo $pidadd
for id in $pidarr
do
echo "$id"
done

2.保存為文件test.bash

3.使文件具有執行屬性,使用以下命令

chmod +x test.bash

 

示例腳本說明:

(1)第一行的#!/bin/bash 為腳本文件的固定格式,表示有bin目錄下的bash來執行

(2) 第8行的pidarr=$(ps x | awk '{print $1}')表示將ps x | awk '{print $1}' 的結果存入變量pidarr中,其中awk命令是個很有用的命令,詳細使用方法可以百度

 

改進程序:

#!/bin/bash
echo $1

pidarr=$(ps x | grep $1 | awk '{print $1}')

arr=($pidarr)
len=${#arr[*]}
if [ $len -ge 4 ]
then
# 循環kill所有名為$1的進程
indx=0
indmax=$[$len-3]
while [ $indx -lt $indmax ]; do
kill -9 ${arr[$idx]}
echo "kill -9 "${arr[$idx]}
indx=$[$idx + 1]
done
else
echo "該進程不存在"
fi

 

示例2:

#!/bin/bash

#==================================================
# name : getpid.sh
# brief : get pid accord to process name
# autor : Monkey.Knight
#==================================================

if [ $# -eq 1 ]
then
PROC_NAME="$1"
echo "server name:"${PROC_NAME}
num=`ps -ef | grep "${PROC_NAME}" | grep -v "grep" | grep -v "bash" | wc -l `
pidvar=`ps x | grep "${PROC_NAME}" | grep -v "grep" | grep -v "bash" | awk '{print $1}'`
echo $num
if [ $num -gt 0 ]
then
echo $pidvar
fi
else
echo "語法錯誤,正確語法如下:"
echo "getpidparam.sh process_name"
fi

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM