我正在使用nohup
命令来运行 Java Web 服务器应用程序。这是我正在使用的命令:
nohup java -jar WEB-SNAPSHOT.jar &
此命令将创建一个文件nohup.out
,我的服务器日志存储在此文件中。我希望根据日期创建此文件,即如果当前日期是2017-10-28,文件应该被创建nohup.2017-10-28.out
,并且日期变为2017-10-29 上午12:00 nohup.2017-10-29.out
文件应该自动创建等等。例如:
DATE | File
|
2017-10-28 | nohup.2017-10-28.out
2017-10-29 | nohup.2017-10-29.out
2017-10-30 | nohup.2017-10-30.out
答案1
您只需将输出重定向到文件即可。
nohup java -jar WEB-SNAPSHOT.jar > nohup.$(date --iso).out
如果您重定向,nohup
将不会创建默认文件,但将使用重定向指定的文件。
我还认为您不需要&
在命令末尾使用。
答案2
如果目标是让某个进程在后台运行并将其标准输出记录到文件中,则如果将其作为服务实现,则可以提供更多功能。
创建一个系统服务启动类似以下命令 ExecStart=/usr/bin/java -jar /opt/app/WEB-SNAPSHOT.tar
还可以将其设置为记录到唯一的 syslog 目标,如中所述systemd.exec
StandardOutput=syslog
SyslogIdentifier=app
SyslogFacility=local6
设置 syslog 将该功能记录到其自己的文件中,例如 /var/log/app.log
配置 /etc/logrotate.d/app 来轮换文件。根据需要使用 dateformat 和 postrotate 脚本。
/var/log/app.log