目前我正在学习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 仍处于打开状态。
我错过了什么?
答案 0 :(得分:1)
由于你愿意用-9
标志杀死,请替换:
kill $e || kill -9 $e
带
kill -9 $e
中所述
当且仅当command1返回非零退出时,才执行command1 || command2
command2 状态。换句话说,成功运行command1或运行command2。
在
的情况下kill $e || kill -9 $e
第一个命令(kill $e
)没有失败(因为pid有效),因此没有执行第二个命令。