杀死任务名称的linux进程

1. 需求

给定任务名称,杀死所有该任务的Linux进程

2. 步骤

  • 上传附录killtask脚本到本地服务器
  • 编辑~/.bashrc,加入
[email protected] ~/ouyangyewei/scripts$ cat ~/.bashrc
# .bashrc

# User specific aliases and functions
alias killtask='sh /home/map/workspaces/bin/killtask'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 执行source ~/.bashrc使其立即生效

3. 使用说明

[email protected] ~/ouyangyewei/scripts$ killtask
==> ERROR: Usage: killtask <task_name>
[email protected] ~/ouyangyewei/scripts$ killtask add_one
==> Linux process about add_one are not exist.
[email protected] ~/ouyangyewei/scripts$ nohup sh loop_plus_one.sh &
[1] 28892
[email protected] ~/ouyangyewei/scripts$ nohup: appending output to ‘nohup.out’

[email protected] ~/ouyangyewei/scripts$ ps -ef | grep loop_plus_one | grep -v grep
map      28892 26740 99 14:38 pts/3    00:00:27 sh loop_plus_one.sh
[email protected] ~/ouyangyewei/scripts$ killtask loop_plus_one
==> ps -ef | grep loop_plus_one | grep -v grep | grep -v /home/map/workspaces/bin/killtask
==> -----------------
 -> map      28892 26740 99 14:38 pts/3    00:00:36 sh loop_plus_one.sh
==> -----------------
==> Kill All Linux Process About loop_plus_one Finished...
[1]+  已杀死               nohup sh loop_plus_one.sh
[email protected] ~/ouyangyewei/scripts$ ps -ef | grep loop_plus_one | grep -v grep
[email protected] ~/ouyangyewei/scripts$
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

4. 附录

killtask脚本:

#!/bin/bash

##########################################
# Author: ouyangyewei
# Desc:   杀死指定任务名称的进程
# Usage:  killtask <task_name>
# Date:   2016-04-27
##########################################

# colour macros
if [[ -t 1 ]]; then
  NORMAL="$( echo -e "\e[0m" )"

  HL_RED="$( echo -e "\e[31;1m" )"
  HL_GREEN="$( echo -e "\e[32;1m" )"
  HL_BLUE="$( echo -e "\e[34;1m" )"
fi

_hl_red()    { echo "$HL_RED""$@""$NORMAL";}
_hl_green()  { echo "$HL_GREEN""$@""$NORMAL";}
_hl_blue()   { echo "$HL_BLUE""$@""$NORMAL";}

# helper functions
_trace() {
  echo $(_hl_blue '  ->') "$@" >&2
}
_notice() {
  echo $(_hl_green '==>') "$@" >&2
}
_fatal() {
  echo $(_hl_red '==> ERROR:') "$@" >&2
  exit 1
}

# ---------------------------------------------------------

if [[ $# -ne 1 ]]; then
  _fatal "Usage: killtask <task_name>"
fi

# check if linux process about <task_name> exist
process=`ps -ef | grep $@ | grep -v grep | grep -v $0`
if [[ -z "$process" ]]; then
  _notice "Linux process about $@ are not exist."
  exit 1
fi

# show all linux process about <task_name>
_notice "ps -ef | grep $@ | grep -v grep | grep -v $0"
_notice "-----------------"
ps -ef | grep $@ | grep -v grep | grep -v $0 | while read process
do
   _trace "${process}"
done

# then kill all linux process about <task_name>
ps -ef | grep $@ | grep -v grep | grep -v $0 | awk '{print $2}' | xargs kill -9
_notice "-----------------"
_notice "Kill All Linux Process About $@ Finished..."
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
1

1. 需求

给定任务名称,杀死所有该任务的Linux进程

2. 步骤

  • 上传附录killtask脚本到本地服务器
  • 编辑~/.bashrc,加入
[email protected] ~/ouyangyewei/scripts$ cat ~/.bashrc
# .bashrc

# User specific aliases and functions
alias killtask='sh /home/map/workspaces/bin/killtask'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 执行source ~/.bashrc使其立即生效

3. 使用说明

[email protected] ~/ouyangyewei/scripts$ killtask
==> ERROR: Usage: killtask <task_name>
[email protected] ~/ouyangyewei/scripts$ killtask add_one
==> Linux process about add_one are not exist.
[email protected] ~/ouyangyewei/scripts$ nohup sh loop_plus_one.sh &
[1] 28892
[email protected] ~/ouyangyewei/scripts$ nohup: appending output to ‘nohup.out’

[email protected] ~/ouyangyewei/scripts$ ps -ef | grep loop_plus_one | grep -v grep
map      28892 26740 99 14:38 pts/3    00:00:27 sh loop_plus_one.sh
[email protected] ~/ouyangyewei/scripts$ killtask loop_plus_one
==> ps -ef | grep loop_plus_one | grep -v grep | grep -v /home/map/workspaces/bin/killtask
==> -----------------
 -> map      28892 26740 99 14:38 pts/3    00:00:36 sh loop_plus_one.sh
==> -----------------
==> Kill All Linux Process About loop_plus_one Finished...
[1]+  已杀死               nohup sh loop_plus_one.sh
[email protected] ~/ouyangyewei/scripts$ ps -ef | grep loop_plus_one | grep -v grep
[email protected] ~/ouyangyewei/scripts$
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

4. 附录

killtask脚本:

#!/bin/bash

##########################################
# Author: ouyangyewei
# Desc:   杀死指定任务名称的进程
# Usage:  killtask <task_name>
# Date:   2016-04-27
##########################################

# colour macros
if [[ -t 1 ]]; then
  NORMAL="$( echo -e "\e[0m" )"

  HL_RED="$( echo -e "\e[31;1m" )"
  HL_GREEN="$( echo -e "\e[32;1m" )"
  HL_BLUE="$( echo -e "\e[34;1m" )"
fi

_hl_red()    { echo "$HL_RED""$@""$NORMAL";}
_hl_green()  { echo "$HL_GREEN""$@""$NORMAL";}
_hl_blue()   { echo "$HL_BLUE""$@""$NORMAL";}

# helper functions
_trace() {
  echo $(_hl_blue '  ->') "$@" >&2
}
_notice() {
  echo $(_hl_green '==>') "$@" >&2
}
_fatal() {
  echo $(_hl_red '==> ERROR:') "$@" >&2
  exit 1
}

# ---------------------------------------------------------

if [[ $# -ne 1 ]]; then
  _fatal "Usage: killtask <task_name>"
fi

# check if linux process about <task_name> exist
process=`ps -ef | grep $@ | grep -v grep | grep -v $0`
if [[ -z "$process" ]]; then
  _notice "Linux process about $@ are not exist."
  exit 1
fi

# show all linux process about <task_name>
_notice "ps -ef | grep $@ | grep -v grep | grep -v $0"
_notice "-----------------"
ps -ef | grep $@ | grep -v grep | grep -v $0 | while read process
do
   _trace "${process}"
done

# then kill all linux process about <task_name>
ps -ef | grep $@ | grep -v grep | grep -v $0 | awk '{print $2}' | xargs kill -9
_notice "-----------------"
_notice "Kill All Linux Process About $@ Finished..."
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

猜你喜欢

转载自blog.csdn.net/florence_/article/details/62069989