使用方式:mykill <进程名或pid>
1234
,则会被当成是pid。mykill会直接询问你是否要kill到这个进程。qq
,则mykill会自动匹配包含这个字符串的进程。如果包含这个字符串的进程只有一个,那么mykill会询问是否kill掉这个进程。如果包含这个字符串的进程有多个,则会打印一个进程列表。>> mykill 10150 #参数为pid
kill 10150 /Applications/QQ.app/Contents/MacOS/QQ? [y/n]
>> mykill qq #参数为进程名,只match到一个结果
kill 10150 /Applications/QQ.app/Contents/MacOS/QQ? [y/n]
>> mykill sh #参数为进程名,match到多个结果
22340 brambles /bin/bash
10180 brambles -zsh
22341 brambles /bin/bash
43369 brambles -zsh
43262 brambles /bin/bash
7747 brambles -zsh
matched 6 processes!
>> mykill abc #没有match到结果
no thing matched!
=====================以下是脚本代码====================
将一下代码保存到一个文件里面,并给文件执行权限就行了。
#!/bin/bash
if [[ $1 =~ ^[0-9]+$ ]]
then
p_l=$(ps aux | awk -v pid="$1" 'NR > 1 && $2 == pid {print $2, $1, $11}')
else
p_l=$(ps aux | awk -v pname="$1" 'NR > 1 && tolower($11) ~ tolower(pname) {print $2, $1, $11}')
fi
l_n=$(echo "${p_l}" | grep -v ^\s*$ |wc -l)
l_n=$(echo ${l_n})
if [ ${l_n} == 0 ]
then
echo "no thing matched!"
elif [ ${l_n} == 1 ]
then
p_pid=$(echo "${p_l}"| awk '{print $1}')
p_name=$(echo "${p_l}"| awk '{print $3}')
read -p "kill ${p_pid} ${p_name}? [y/n]" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
kill -9 ${p_pid}
fi
echo
else
echo "${p_l}"
echo "matched ${l_n} processes!"
fi
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.