centos7 写了tomcat的启动脚本,脚本从网上copy的。

 

[Unit]
Description=tomcat-1
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
Environment='JAVA_HOME=/usr/local/java/jdk1.8.0_151/'
WorkingDirectory=/usr/local/tomcat-1/webapps

ExecStart=/usr/local/tomcat-1/bin/startup.sh
ExecStop=/usr/local/tomcat-1/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID

PrivateTmp=True

User=dev

Group=dev

[Install]
WantedBy=multi-user.target

虽然可以正常启动关停tomcat,但用jps命令根本看不到这个tomcat进程。

网上一查说是catalina.sh没有把tmp指定到/tmp目录,但我改了之后还是看不到。

最终一番排查发现网上copy的脚本里有如下这一句,去掉再重启,jps就可以看到tomcat进程了。

PrivateTmp=true

这是因为tomcat启动后会把启动后jdk相关信息写在/tmp/hsperfdata_root目录下,jps就去/tmp目录下打开这个文件,并把信息展现给用户,但/tmp这个目录权限是777,任何人都可以查看,centos7认为这样不安全,容易泄露信息,于是官方启动脚本里就有
PrivateTmp=true这么一句,这样一来tomcat启动后,就不会把相关信息写入/tmp目录里,也就造成jps无法看到tomcat进程了。

相关文章:

  • 2021-12-17
  • 2021-07-24
  • 2021-12-12
  • 2021-07-18
  • 2021-07-09
  • 2021-12-26
  • 2022-12-23
  • 2022-02-13
猜你喜欢
  • 2022-12-23
  • 2021-05-02
  • 2021-07-16
  • 2021-08-09
  • 2022-02-22
  • 2021-10-07
  • 2021-03-31
相关资源
相似解决方案