lon*_*nix 3 scripting bash kill ubuntu xargs
用于终止某个端口上的服务器的脚本:
\n#!/bin/bash\n\nPORT="$1"\nSIGNAL="$2"\n\nif [ "${SIGNAL}" != "" ]; then SIGNAL=" -${SIGNAL}"; fi\n\nlsof -i:"${PORT}" |\\\n grep -e "localhost:${PORT}" -e TCP -e LISTEN |\\\n tr -s \' \' |\\\n cut -d\' \' -f2 |\\\n tee /dev/tty |\\\n xargs --no-run-if-empty kill "$SIGNAL"\nRun Code Online (Sandbox Code Playgroud)\n作品:killbyport 4242
但如果我想做一个kill -9我会做的:killbyport 4242 9,\n并且错误:
kill: (-9): No such process\nRun Code Online (Sandbox Code Playgroud)\n和xargs不合作kill\xe2\x80\x93 我该如何修复它?
(PS:我想修复这个脚本,而不是将其更改为其他内容。它几乎可以工作了。)
\nG-M*_*ca' 12
问题是您\xe2\x80\x99 明确添加了一个空格SIGNAL:
SIGNAL=" -${SIGNAL}"\nRun Code Online (Sandbox Code Playgroud)\n然后在引号中引用它:
杀死“$信号”\n由于
kill看到一个不以破折号开头的参数\n(因为它以空格开头,然后是破折号),因此 \n\xe2\x80\x99t 不被视为一个选项,\n而是作为一个普通的在这种情况下,参数 \xe2\x80\x94 为 a\xc2\xa0PID。\xc2\xa0\nA\xc2\xa0 快速解决方法是不将空格添加到SIGNAL:\nSIGNAL="-${SIGNAL}"\nRun Code Online (Sandbox Code Playgroud)\n但\xe2\x80\x99t在为空时起作用是没有意义的SIGNAL。\xc2\xa0\n参见但是如果\xe2\x80\xa6呢?.\xc2\xa0\n第一个示例 ( ignorecase) 几乎完全符合您的情况。
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |