缺月挂梧桐 漏断人初静

导航

systemctl启动tomcat后,jps看不到进程

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进程了。

posted on 2018-07-04 18:03  勤劳の洗碗机  阅读(1109)  评论(0编辑  收藏  举报