后台运行进程
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