.bashrc 保存以前的进程 ID 并且不会在别名命令中更新
.bashrc saves previous process id and does not update in alias commands
我在 .bashrc 中创建了一个别名来终止我的 python service.py &
进程
alias servicestop="kill $(ps -ef | grep -w service.py | grep -v grep | awk '{print }')"
每当我 运行 第一次 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 }')
将 return 之前的 pid,它已经被杀死。
现在请尽可能提出解决方案。
所以每当我想运行servicestop
命令时,我必须先运行source .bashrc
命令,然后运行servicestop
命令让它工作。
请从您的 .bashrc
中删除 servicestop
别名并添加:
servicestop(){
kill $(ps -ef | grep -w service.py | grep -v grep | awk '{print }');
}
在某种程度上,.bashrc 中的函数是 "aliases 2.0":更好
更好:相同的功能;但以要杀死的脚本名称作为参数:
servicestop(){
kill $(ps -ef | grep -w | grep -v servicestop | awk '{print }');
}
像这样使用它:
servicestop service.py
servicestop otherSuperService.py
我在 .bashrc 中创建了一个别名来终止我的 python service.py &
进程
alias servicestop="kill $(ps -ef | grep -w service.py | grep -v grep | awk '{print }')"
每当我 运行 第一次 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 }')
将 return 之前的 pid,它已经被杀死。
现在请尽可能提出解决方案。
所以每当我想运行servicestop
命令时,我必须先运行source .bashrc
命令,然后运行servicestop
命令让它工作。
请从您的 .bashrc
中删除 servicestop
别名并添加:
servicestop(){
kill $(ps -ef | grep -w service.py | grep -v grep | awk '{print }');
}
在某种程度上,.bashrc 中的函数是 "aliases 2.0":更好
更好:相同的功能;但以要杀死的脚本名称作为参数:
servicestop(){
kill $(ps -ef | grep -w | grep -v servicestop | awk '{print }');
}
像这样使用它:
servicestop service.py
servicestop otherSuperService.py