挑战3-1:查看使用端口的程序
介绍
实验楼的实验环境中运行了大量的服务进程,有的时候启动新的服务时会遇到端口已被占用的报错信息。
请实现一个脚本获取指定端口上正在运行的程序,如果没有运行任何程序则打印 OFF 字符串。
目标
- 完成的脚本必须放置在 /home/shiyanlou/get.sh
- 脚本执行时需要输入一个端口号数字作为参数,例如 /home/shiyanlou/get.sh 5901
- 脚本执行后输出 OFF 或者该端口上正在运行的程序完整路径。
脚本执行举例:
$ cd /home/shiyanlou
$ ./get.sh 5901
/usr/bin/Xvnc
$ ./get,sh 43000
OFF
知识点
- Linux 网络相关命令
- Bash 编程基础
提醒
- 因为 netstat 只能打印出执行者相关的程序名,其他用户的程序名无权限获取(因为容器中 root 权限不够,所以 root 也打印不出所有的程序名)所以在判断确实存在相关端口又无法获取其程序名的输出 Can‘t get the process name 例如:
# 若是 shiyanlou 用户执行
./get.sh 22
Can't get the process name
- 在本地的环境中权限足够不会出现上述情况,所以在自己的环境中不用考虑这样的判断