#如何自动化杀掉一个进程
#!/bin/bash
#使用ps -ef和grep来查找名为cc的进程,如果找到则杀掉它
使用awk提取第二列(进程ID)
PID=$(ps -ef | grep [c]c | awk ‘{print $2}’)
检查是否成功提取到了进程ID
if [ -z “$PID” ]; then
# 如果没有找到进程ID,说明没有cc进程在运行
echo “无此进程”
else
# 如果找到了进程ID,则杀掉该进程
echo “正在杀掉进程:
P
I
D
"
k
i
l
l
"
PID" kill "
PID"kill"PID”
# 等待一段时间确保进程已经被杀掉,然后再次检查
sleep 2
if ps -ef | grep -q [c]c; then
echo "进程仍未被杀掉"
else
echo "进程已被成功杀掉"
fi
fi
这里的关键点如下:
#!/bin/bash:这是一个shebang,它告诉系统用哪个解释器来执行这个脚本,这里是bash。
PID=$(pgrep cc):这行代码使用pgrep命令来查找名为cc的进程ID。pgrep会返回所有匹配进程ID的列表,如果cc进程正在运行,它的进程ID会被存储在变量PID中。
if [ -z “$PID” ]; then … else … fi:这是一个条件判断语句。-z测试用来检查变量PID是否为空。如果PID为空(即没有找到cc进程),则执行then后面的代码块;否则执行else后面的代码块。
echo “无此进程”:如果cc进程不存在,输出“无此进程”。
echo “正在杀掉进程: P I D " 和 k i l l " PID" 和 kill " PID"和kill"PID”:如果找到了cc进程,首先输出一条消息说明正在杀掉该进程,并显示进程ID。然后使用kill命令发送终止信号给该进程,从而结束它。
需要注意的是,kill命令默认发送的是TERM信号,它会给进程一个机会来正常退出。如果进程没有响应,你可能需要使用更强烈的信号(如KILL信号)来强制结束它。这可以通过kill -9 "$PID"来实现,但应谨慎使用,因为它不会给进程任何清理资源的机会。
另外,如果系统中存在多个名为cc的进程,pgrep cc会返回所有这些进程的ID,而kill "$PID"只会杀掉列表中的第一个进程。如果你需要杀掉所有匹配的进程,你可能需要使用pkill cc或者kill $(pgrep cc)。
注意:shell脚本中空格必须的,否则执行就会出错。if [ -z “$PID” ]; 这里[]里面每次输入都需要空格