Bash脚本杀死端口

时间:2017-06-11 12:10:58

标签: linux bash shell port

目前我正在学习SSH创建和监听服务器。但我仍然倾向于做错了很多,之后我的港口仍然开放。所以我正在编写一个bash脚本来杀死它,但我有一个我无法解决的错误。

脚本:

#!/bin/bash
pid=$(lsof -i:22 -t);set -f;a=(${pid})
for e in ${a[@]}
do
    echo $e
    kill $e || kill -9 $e
done

行为

@ echo $e shell提供正确的 PID

但是当我运行脚本时执行lsoif -i:22 -t时, PID 仍处于打开状态。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

由于你愿意用-9标志杀死,请替换:

kill $e || kill -9 $e

kill -9 $e

正如nixCraft Logical OR

中所述
command1 || command2
     当且仅当command1返回非零退出时,才执行

command2   状态。换句话说,成功运行command1或运行command2。

的情况下
kill $e || kill -9 $e

第一个命令(kill $e)没有失败(因为pid有效),因此没有执行第二个命令。