gpt4 book ai didi

linux - .bashrc 保存以前的进程 ID 并且不会在别名命令中更新

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:50 24 4
gpt4 key购买 nike

我在 .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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com