说明:记录一次应用进程无法被kill的错误;
场景
在一次导出MySQL数据时,使用下面的命令,将数据库数据导出为.sql文件,数据量大,导出时间长,于是我就将服务器重启了。
mysqldump -u username -p xxl_job > xxl-job.sql
重启后,再次启动MySQL服务时,提示端口被占用,于是我敲下面的命令查看MySQL应用运行状态,发现是未启动的
systemctl start mysql
我感到很奇怪,于是我尝试将占用3306端口的进程kill掉,发现kill之后就又重新启动了,无法被kill掉;
解决
原来是之间在服务器上部署了Jeecg项目,项目里有MySQL容器,该容器时重启系统后自启动的,占用了MySQL的端口,而Docker容器占用的端口,无法通过系统的kill命令直接杀死,需要通过docker stop 容器名/ID
来停止
docker stop jeecg-boot-mysql
停止容器
接着再启动系统的MySQL服务就没问题了。Docker容器的重启,可以在Jeecg的docker-compose.yml文件中的restart
配置中设置。
而系统应用的开机自启动,可以通过下面的命令来设置;
systemctl enable mysql