我在.bashrc中创建了一个别名来杀死我的python service.py &
进程
alias servicestop="kill $(ps -ef | grep -w service.py | grep -v grep | awk '{print $2}')"
每当我第一次运行servicestop
命令时,它都会终止进程。
但是每当我开始处理python service.py &
并执行命令servicestop
时,它都会给出错误。
经过研究,我发现了以下事项。
当我第一次运行python service.py &
进程时。其进程ID为512
。
并且,命令servicestop
终止该进程(512)。
现在我运行第二次进程python service.py &
。它的进程ID是546.(肯定会有所不同)。
当我运行命令servicestop
时。它会给出以下错误:
-bash: kill: (512) - No such process
这意味着$(ps -ef | grep -w service.py | grep -v grep | awk '{print $2}')
将返回之前已被杀死的pid。
现在请建议解决方案。
所以每当我想运行servicestop
命令时,我必须首先运行source .bashrc
命令,然后运行servicestop
命令使其工作。
答案 0 :(得分:3)
请从servicestop
删除.bashrc
别名,然后添加:
servicestop(){
kill $(ps -ef | grep -w service.py | grep -v grep | awk '{print $2}');
}
在某种程度上,.bashrc中的函数是“别名2.0”:更好
更好:同样的功能;但要将要杀死的脚本名称作为参数:
servicestop(){
kill $(ps -ef | grep -w $1 | grep -v servicestop | awk '{print $2}');
}
使用它:
servicestop service.py
servicestop otherSuperService.py