要使用nohup运行Java JAR文件并将输出重定向到按日期命名的日志文件,你可以使用以下命令:
nohup java -jar your_jar_file.jar > /path/to/logs/$(date +"%Y-%m")/output_$(date +"%Y-%m-%d").log 2>&1 &
这个命令做了以下几件事情:
- 使用nohup运行Java JAR文件,使进程在后台运行,且不会因为终端关闭而终止
- > /path/to/logs/$(date +"%Y-%m")/output_$(date +"%Y-%m-%d").log将命令的输出重定向到指定的日志文件。/path/to/logs/是你希望存放日志的目录,$(date +"%Y-%m")会根据当前的日期生成一个格式为YYYY-MM的日期字符串,并将其作为文件夹的名称。然后,output_$(date +"%Y-%m-%d")会生成一个格式为YYYY-MM-DD的日期字符串作为日志文件的名称。你需要将/path/to/logs/替换为你实际的日志目录。
- 2>&1将标准错误输出(2)重定向到与标准输出(1)相同的位置,也就是日志文件。
- &将命令放到后台运行。
这样,日志文件将按日期存储在以月份为子目录的不同文件夹中,并且每个月份的文件夹都会根据当月的日期创建相应的日志文件。如果文件夹不存在,命令会自动创建它们。
其实这个是达不到这个上述要求的效果的,只会创建运行命令当天的文件夹
如果想要实现可以采用定时任务或者log4j配置文件去实现
定时任务的方式在下一篇