Chinaunix首页 | 论坛 | 博客
  • 博客访问: 466152
  • 博文数量: 65
  • 博客积分: 2645
  • 博客等级: 少校
  • 技术积分: 675
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-08 17:04
文章分类

全部博文(65)

文章存档

2010年(5)

2009年(5)

2008年(14)

2007年(35)

2006年(6)

分类:

2009-11-05 19:53:38


之前在寫割接文檔時經常要寫:

以 aa 用戶 telnet 登錄到 bb 主機,進入 dd 目錄。

執行 ps -ef | grep 程序名 查詢到該進程的ID,讓后執行:

kill 進程ID ... ...


寫久了,自己也覺得煩 :)。

今晚寫了一段 shell 腳本,將 ps 查進程號,與 kill 進程合到了一步:)

今後,文檔可以精簡為:


以 aa 用戶 telnet 登錄到 bb 主機,進入 dd 目錄。

執行:

ps -fu `whoami` | grep -w 程序名 | grep -v $$ | awk '{print "kill " $2}' | sh

... ...

:D

其中主要用到了 "$$"。

寫成shell腳本如下:

#!/usr/bin/env sh

# filename: killsth.sh


# 如果 入參為空, 報錯

if [ -z "$1" ]
then
 echo "kill what??"
 echo "請輸入正確的格式,如: $0 test"
 exit -1
fi

# 變量 $$ 為該shell腳本執行時的 進程ID.

# 運行時, ps、grep、awk 的父進程ID為該腳本的進程ID

# ps 的 -f 參數會顯示父進程ID

# 故通過 grep -v $$ 可以過濾掉:此shell腳本運行的進程、ps 的進程、grep 的進程

ps -fu `whoami` | grep -w $1 | grep -v $$ | awk '{print "kill " $2}' | sh


阅读(1483) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~