在 shell 函数中将端口号传递给 lsof
Passing a port number to lsof in a shell function
我在我的 bash 配置文件中写了一个别名,以帮助我杀死未完全关闭的流氓 rails 服务器进程。这个别名很好用。
alias kill3000="lsof -i tcp: 3000 -t | xargs kill -9 | echo 'killed processes on port 3000'"
我想让它更通用,适用于在其他端口上工作的框架。我试图做一个类似的函数,所以我可以将端口号作为变量传递,但是我得到了一个错误。我写的函数是这样的...
function killproc (){
"lsof -i tcp: -t | xargs kill -9 | echo 'killed processes on port '"
}
但是,当我 运行 "killproc 3000" 时,出现以下错误:
lsof: unacceptable port specification in: -i tcp:
我很难理解这个问题,感谢您的帮助。
可能涉及双引号。
试试这个:
function killproc (){
lsof -i tcp:"" -t | xargs kill -9
lsof -i tcp:"" -t 2>/dev/null >/dev/null || printf "killed processes on port %s\n" ""
}
仅当找不到更多进程侦听指定的端口时才会打印该消息。
如果遇到问题,请按照@shellter 的说明进行操作。
运行 使用 set -vx ; killproc 300 ; set +vx
进行测试并编辑问题以添加生成的输出。
我在我的 bash 配置文件中写了一个别名,以帮助我杀死未完全关闭的流氓 rails 服务器进程。这个别名很好用。
alias kill3000="lsof -i tcp: 3000 -t | xargs kill -9 | echo 'killed processes on port 3000'"
我想让它更通用,适用于在其他端口上工作的框架。我试图做一个类似的函数,所以我可以将端口号作为变量传递,但是我得到了一个错误。我写的函数是这样的...
function killproc (){
"lsof -i tcp: -t | xargs kill -9 | echo 'killed processes on port '"
}
但是,当我 运行 "killproc 3000" 时,出现以下错误:
lsof: unacceptable port specification in: -i tcp:
我很难理解这个问题,感谢您的帮助。
可能涉及双引号。
试试这个:
function killproc (){
lsof -i tcp:"" -t | xargs kill -9
lsof -i tcp:"" -t 2>/dev/null >/dev/null || printf "killed processes on port %s\n" ""
}
仅当找不到更多进程侦听指定的端口时才会打印该消息。
如果遇到问题,请按照@shellter 的说明进行操作。
运行 使用 set -vx ; killproc 300 ; set +vx
进行测试并编辑问题以添加生成的输出。