基本方法
| 命令 | | 示例 |
|-|-|-|
| `lsof -i :端口号` | 使用 `lsof`(list open files)命令列出打开指定端口的进程 | `sudo lsof -i :8080` |
| `netstat -tlnp | grep 端口号` | 使用 `netstat` 命令查看指定端口的进程 | `sudo netstat -tlnp | grep 8080` |
| `ss -tlnp | grep 端口号` | 使用 `ss`(socket statistics)命令查看指定端口的进程 | `sudo ss -tlnp | grep 8080` |
| `fuser 端口号/tcp` | 使用 `fuser` 命令查看指定端口的进程 | `sudo fuser 8080/tcp` |
| `ps -ef | grep 进程名` | 使用 `ps` 命令结合 `grep` 查找指定进程的详细信息 | `sudo ps -ef | grep nginx` |
| `ls -l /proc/$(sudo lsof -t -i:端口号) | grep exe` | 使用 `/proc` 文件系统查看指定端口的进程 | `sudo ls -l /proc/$(sudo lsof -t -i:8080) | grep exe` |
高级技巧
1. 使用 `nmap` 进行端口扫描:
bash
sudo apt-get update
sudo apt-get install nmap
bash
nmap <目标IP>
bash
nmap -p 22,80,443 <目标IP>
bash
nmap -p T:22,80,443 <目标IP>
bash
nmap -p
2. 使用 `iptables` 或 `firewalld` 进行端口监控和安全设置:
bash
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -j DROP
bash
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
实际应用案例
1. 检查Web服务器端口:
bash
sudo netstat -tlnp | grep 80
sudo netstat -tlnp | grep 443
bash
sudo ss -tlnp | grep 80
sudo ss -tlnp | grep 443
2. 查找并终止占用端口的进程:
bash
sudo lsof -i :8080
假设PID为12345
sudo kill -9 12345
3. 使用脚本自动化查找端口对应的进程PID:
bash
!/bin/bash
if [ -z "$1" ]; then
echo "Usage: $0exit 1
fi
PORT=$1
NETSTAT_RESULT=$(sudo netstat -tunlp | grep $PORT | awk '{print $7}' | cut -d'/' -f1)
LSOF_RESULT=$(sudo lsof -i :$PORT | awk '{print $2}')
SS_RESULT=$(sudo ss -ltnp | grep $PORT | awk '{print $6}' | cut -d',' -f2 | cut -d'=' -f2)
echo "Port $PORT corresponds to the following PIDs:
echo "netstat: $NETSTAT_RESULT
echo "lsof: $LSOF_RESULT
echo "ss: $SS_RESULT
bash
chmod +x find_port_pid.sh
bash
/find_port_pid.sh 80
通过上述方法和技巧,你可以有效地查看和管理Linux系统中的端口进程,这对于系统监控、故障排除以及安全审计都非常重要。