我有一个 ec2 实例,我从该实例远程登录到远程 EC2 服务器(作为 ec2-user),我的应用程序托管在其 tomcat 服务器中。 tomcat 服务器为这个特定的应用程序生成一个日志文件。
如果我删除日志文件 (test_app.log) 并使用 startup.sh 命令手动重启服务器,则会创建一个具有相同名称的新日志文件,但是当我尝试通过远程登录来做到这一点,但它不起作用。 tomcat 服务器正在重新启动(我已经在我的浏览器上验证了它)但日志文件没有生成。
因为我想为我所有的应用程序运行一个单独的日志,我首先通过杀死它来停止 tomcat,然后我将 test_app.log 移动到带有时间戳的其他名称,然后重新启动服务器。
当我第一次使用自动脚本进行 ssh 时,一切都按上面的计划进行,但从下一次迭代开始,什么也没有发生。即使在使用 touch
之后,也没有创建新文件。
请注意,如果我手动完成整个过程,所有命令都会正常运行并且一切正常。
ssh -i $Public_Key_Loc -tt $Remote_user@$PrivateIpSPL <<-ENDSSH
sudo su - spluser
kill -9 $(ps -elf | grep tomcat|cut -d ' ' -f6 | head -n 1)
mv /opt/tomcat/current/logs/spl/spl-test-tool/test_app.log /opt/tomcat/current/logs/spl/spl-test-tool/$(date "+%Y.%m.%d-%H.%M.%S").test_app.log
touch test_app.log
chown spluser:splgrp test_app.log
chmod 644 test_app.log
/opt/tomcat/current/bin/startup.sh
exit
exit
ENDSSH
最佳答案
我认为罪魁祸首是触摸命令,该文件将在当前文件夹中创建,我认为您也应该为此提供绝对路径。
关于java - tomcat重启后没有创建日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28860327/