问题描述:
使用nohup &运行后台程序,命令如下:
nohup python server.py &
该命令可以保持程序后台运行(保证你的xshell断了但服务不会停)
但是在重新启动server.py的时候,服务器会提示端口被占用
这时需要先杀死之前的程序,再重新启动。
步骤:
1.查看进程号
1)使用 lsof -i:端口号查看进程号(当知道端口号的时候),比如查看1500端口的进程号:
lsof -i:1500
这个PID 79297就是进程号
2)当系统不支持lsof时,可以使用netstat
netstat -ntlp | grep [port]
3)当不知道端口号,但是知道程序名称时,使用ps aux查看
ps -aux | grep server.py
不是S+的那一列对应的就是PID。
Sl那一列代表运行状态STAT,S表示中断?反正查了查我没懂。我理解的是S+代表你查询命令的临时进程号,而不是程序运行的进程号,一般S,Sl或者Sl+表示正在运行的程序。
(另外,我发现使用ps aux的时候,为啥别人的USER显示名字,而我就显示515用户id?查了发现linux本身机制问题,当用户名称超过8个字符,系统会自动显示用户对应id。)
2. 干掉他
kill -9 PID
其他例子:
备注:
1)根据PID可以查询进程名称,命令如下:
ll /proc/PID
这样就可以定位到该运行程序的路径