nohup(no hang-up)命令用于在后台运行程序,即使终端关闭或用户退出,程序仍会继续执行。其日志记录的核心内容及格式如下:
默认情况下,nohup会将程序的输出(包括标准输出stdout和标准错误输出stderr)重定向到当前工作目录下的**nohup.out**文件中。若需指定其他日志文件,可通过重定向操作实现(如nohup command > custom.log 2>&1 &)。
nohup日志的内容主要由程序自身输出和系统附加信息组成,具体包括:
print语句、日志打印等)和错误信息(如ERROR、Exception等),这些内容会原样记录到日志文件中。2025-10-23 14:30:00 INFO: Program started),但nohup本身不强制添加时间戳。若需时间戳,需通过程序自身配置或后续使用ts(from moreutils包)等工具添加(如nohup command | ts '%Y-%m-%d %H:%M:%S' > log.txt &)。PID: 12345),但nohup不会主动记录。ps、systemctl)获取。0;若程序异常终止,会返回非0值(如1表示一般错误)。退出状态码可通过echo $?查看,但不会直接写入nohup.out。whoami或id命令获取。若需调整nohup日志的格式(如添加时间戳、修改输出结构),可通过以下方式实现:
logger命令发送至syslog:将程序输出重定向到logger,再通过syslog配置自定义格式(如添加时间戳、日志级别)。示例:nohup sh -c 'exec &> >(logger -t myapp -p local6.notice) ; your_command_here' &
此时,日志会发送到syslog,可通过/etc/rsyslog.conf配置文件(如local6.* /var/log/myapp.log)进一步定义日志格式。ts工具添加时间戳:通过moreutils包中的ts命令,在nohup输出时添加时间戳。示例:nohup command | ts '%Y-%m-%d %H:%M:%S' > formatted.log &
这会生成包含时间戳的日志文件(如2025-10-23 14:30:00 INFO: Program output)。logrotate、syslog或第三方日志工具(如ELK、Fluentd)使用。