先说结果,前段时间启动tomcat的用户是root用户,这次登录用户shutdown不了,使用kill -9
关闭所有tomcat进程再重新启动即可。
今天更新Tomcat项目,shutdown.sh报错
[ERROR][2023-12-12 15:57:20][SYSTEM]java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load [smsconfig.properties]. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1372)
org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1101)
->net.luculent.liems.business.dk.mess.SendSmsUtil.a(SendSmsUtil.java:76)
->net.luculent.liems.business.dk.mess.SendSmsUtil.getInstance(SendSmsUtil.java:64)
->net.luculent.liems.business.dk.mess.SmsJob.execute(SmsJob.java:27)
->net.luculent.liems.component.job.quartz.QuartzJob.execute(QuartzJob.java:52)
org.quartz.core.JobRunShell.run(JobRunShell.java:202)
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
网上给的方法是关闭热部署,试了下没有用。
查了下进程
ps -ef | grep tomcat
发现存在很多tomcat的进程,有一条是root运行的,其他都是appuser运行的。
然后去查了一下,如果服务器对权限控制比较严格的话,普通用户确实无法关闭root用户启动的tomcat进程。