我在 .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
命令来实现工作。
最佳答案
请从您的 .bashrc
中删除 servicestop
别名并添加:
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
关于linux - .bashrc 保存以前的进程 ID 并且不会在别名命令中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49509919/