shell:查看一个端口是否被占用

 后台运行进程

nohup ./main > /dev/null 2>&1 &

查看后台正在运行的脚本

jobs -l

查找占用端口的进程

使用netstat

(1)安装

yum -y install net-tools
apt install net-tools

(2)查看

# Linux
netstat -tulnp | grep 443
# macOS
netstat -an | grep 443
# Windows
netstat -ano | findstr 443
 
  • -t = --tcp 显示tcp的端口
  • -u = --udp 显示udp的端口(tcp和udp是不同的协议,它们端口相同并不会冲突)
  • -l = --listening 显示处于监听状态的连接(即状态为LISTENING的连接,否则会显示已建立的连接,状态为ESTABLISHED)
  • -n = --numeric 显示数字地址(ip用数字显示,否则会显示域名,主机名等,就比如127.0.0.1,如果没有-n它就不会显示成127.0.0.1,可以自己试试)
  • -p = --program 显示程序PID及名称
  • -a = --all 相当于设置了前面所有选项(并且还不止,因为我这里没有列出它的全部选项)

使用ss

ss应该是socket statistics的意思,中文可以叫“socket统计数据”。它是系统自带的

ss -lnp | grep 443
# 加个column -t可以让它显示的更紧凑一点(-t表示以table形式显示)
ss -lnp | grep 443 | column -t

使用lsof

lsof 的ls是list,o是open,f是files,即list open files的意思

(1)安装

yum -y install lsof

(2)使用

一般情况下都是用-i指定要查看的端口

lsof -i:443

但这样会比较慢,因为它会自动转换端口为端口名和转换ip为域名/主机名。

使用以下方式可以快一点

已知道进程名,如何找出相应进程

ps -aux|grep ./main  | grep -v grep
ps -aux | grep ./auto_startup.sh | grep -v grep

已经知道进程id,如何找出相应进程名称

根据端口号kill对应的应用进程的脚本

port=8080
#根据端口号查询对应的pid
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');

#杀掉对应的进程,如果pid不存在,则不执行
if [  -n  "$pid"  ];  then
    kill  -9  $pid;
fi

查看一个文件夹下有多少个目录:

ls -lR|grep ".jpg"|wc -l

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值