linux系统重启 查看日志及历史记录

本文介绍了Linux系统日志文件通常所在位置/var/log,并对常见文件进行解释。还阐述了使用last命令查询最近登录用户、系统重启时间和日期,以及显示上次关机日期和时间的命令选项,同时提到用uptime -s查看系统正常运行时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux系统文件通常在/var/log中下面是对下面常出现的文件进行解释

/var/log/message ---------------------------------------系统启动后的信息和错误日志

/var/log/secure ------------------------------------------与安全相关的日志信息

/var/log/maillog ------------------------------------------与邮件相关的日志信息

/var/log/cron ----------------------------------------------与定时任务相关的日志信息

/var/log/spooler ------------------------------------------与UUCP和news设备相关的日志信息

/var/log/boot.log -----------------------------------------守护进程启动和停止相关的日志消息

/var/log/wtmp ---------------------------------------------永久记录每个用户登录、注销及系统的启动、停机的事件

/var/run/utmp ---------------------------------------------记录当前正在登录系统的用户信息;

/var/log/btmp ----------------------------------------------记录失败的登录尝试信息。

历史记录

last | grep reboot -----------------------------------------查看重启的命令



history -------------------------------------------------------历史操作



history -c ----------------------------------------------------立即清空当前所有的历史记录

查看文件

tail -f /var/log/*----------------------------------------------实时查看那个文件

cat /var/log/message -------------------------------------查看那个文件

vi --------------------------------------------------------------既可以查看也可以更改文件内容

Linux 系统查询机器最近重启时间命令

last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名,而且还可以列出指定日期和时间登录的用户。输出到终端的每一行都包括用户名、会话终端、主机名、会话开始和结束的时间、会话持续的时间.
1.使用 last 命令来查询最近登录到系统的用户和系统重启的时间和日期。输入:

$ last reboot  查看所有重启日志信息

或者

last reboot | head -1 查看最近的一条

查看系统上次关机的时间和日期

可以使用下面的命令来显示上次关机的日期和时间:

$ last -x|grep shutdown | head -1

命令中,
-x:显示系统关机和运行等级改变信息
这里是 last 命令的其它的一些选项:

$ last
$ last -x
$ last -x reboot
$ last -x shutdown

查看系统正常的运行时间

另一个命令如下:

$ uptime -s

<think>嗯,用户问的是如何在Linux系统查看进程的重启时间和原因。首先,我需要回忆一下自己知道的Linux进程管理命令。首先想到的是使用ps命令,它可以显示进程的信息,比如启动时间。ps aux中的STIME字段应该就是进程的启动时间。不过,这个可能只显示日期,如果进程是当天启动的,可能只显示时间,但如果是跨天的,可能只有日期。然后,可能需要更详细的启动时间,这时候可能需要查看/proc文件系统下的信息,比如/proc/[PID]/stat里的数据,里面有一个字段记录了进程启动的时间,不过单位是时钟滴答,需要转换成人类可读的时间。可以用date命令来转换。 接下来,用户还问到如何查看进程重启的原因。这可能比较复杂,因为进程重启的原因有很多种,比如崩溃、被手动重启系统调度等等。这时候可能需要查看系统日志,比如/var/log/syslog或者/var/log/messages,具体取决于发行版。使用journalctl的话,如果是systemd的系统,可以用journalctl来查看特定服务的日志,比如journalctl -u service_name --since today,可能会显示服务启动和停止的记录。另外,dmesg命令也可能会有一些信息,比如内核相关的日志,如果有进程异常终止的话,可能会有OOM killer的记录或者其他错误信息。 然后可能需要考虑用户的使用场景。用户可能是系统管理员,需要监控进程的稳定性,或者开发人员调试应用程序的问题。这时候可能需要更详细的信息,比如进程的退出状态码,父进程的信息等。这时候可能需要结合ps、pgrep等命令来获取进程的PID,然后进一步分析。 另外,可能要考虑是否需要自动化监控,比如使用脚本定期检查进程的启动时间,或者使用监控工具如Prometheus、Zabbix等。不过用户的问题可能更偏向于手动检查的方法。 还有可能用户想知道如何判断进程是否被意外重启,这时候需要对比历史启动时间和日志中的事件。比如,如果进程在短时间内多次启动,可能意味着有崩溃发生,这时候需要结合日志中的错误信息来排查原因。 可能还需要提到一些工具,比如uptime命令可以查看系统运行时间,但具体到进程的话可能不太相关。还有top或htop这样的实时监控工具,可以查看进程的运行时间,但可能不如ps详细。 总结下来,步骤应该是: 1. 使用ps或top查看进程的启动时间。 2. 使用/proc/[PID]/stat获取更精确的启动时间戳,并用date转换。 3. 检查系统日志(syslog、journalctl)寻找进程启动和停止的记录。 4. 分析日志中的错误信息或事件,确定重启原因。 5. 可能需要检查进程的退出码或信号,比如在日志中是否有Segmentation fault等错误。 需要注意不同Linux发行版可能日志位置和工具略有不同,比如CentOS用/var/log/messages,而Ubuntu用/var/log/syslog,以及使用systemd的journalctl。还要确保用户有权限查看这些日志,可能需要sudo。 另外,对于容器化的进程,可能需要进入容器内部查看,或者使用docker logs等命令,但用户的问题可能针对的是常规系统进程。 最后,是否需要给出具体命令示例,比如用ps查找PID,然后查看/proc信息,并用awk或cut处理字段,再用date转换时间戳。还有如何用grep过滤日志中的相关条目。这样用户可以直接复制命令来操作。</think>在 Linux 系统查看进程重启时间及原因,可通过以下步骤实现: --- ### 一、查看进程重启时间 #### 方法 1:通过 `ps` 命令 ```bash ps -p <PID> -o lstart,etime,cmd ``` - **参数解释**: - `lstart`:显示进程的精确启动时间(格式:`Wed Jun 26 14:30:00 2024`)。 - `etime`:显示进程已运行的总时长(格式:`DD-HH:MM:SS`)。 - `cmd`:显示进程的命令行。 #### 方法 2:通过 `/proc` 文件系统 ```bash # 1. 获取进程启动时间戳(单位:秒) cat /proc/<PID>/stat | awk '{print $22}' # 2. 将时间戳转换为可读时间 date -d "@$(($(cat /proc/<PID>/stat | awk '{print $22}')/100))" ``` - **原理**:`/proc/<PID>/stat` 的第 22 个字段记录了进程启动的时钟滴答数(需除以 `sysconf(_SC_CLK_TCK)`,通常为 100)。 --- ### 二、分析进程重启原因 #### 1. 查看系统日志 ```bash # 通用日志(需 root 权限) grep "process-name" /var/log/syslog # 使用 journalctl(systemd 系统) journalctl -u <service-name> --since "1 hour ago" ``` - **重点关注**: - `SIGHUP`(配置重载)、`SIGKILL/SIGTERM`(强制终止)等信号。 - 进程崩溃记录(如 `segmentation fault`)。 #### 2. 查看进程退出状态 ```bash # 通过 systemd 查看服务退出原因 systemctl status <service-name> ``` - **输出示例**: ``` Process: 1234 ExecStart=/path/to/command (code=killed, signal=SEGV) ``` - `code=killed` 表示进程被终止,`signal=SEGV` 表示段错误。 #### 3. 检查父进程行为 ```bash # 查看进程树 pstree -ps <PID> ``` - 若父进程是 `systemd` 或 `init`,可能是服务配置了自动重启。 --- ### 三、常见重启原因 1. **配置重载**:服务收到 `SIGHUP` 信号(如 `nginx -s reload`)。 2. **崩溃退出**:代码错误、内存溢出(OOM Killer)、段错误等。 3. **手动操作**:用户执行 `systemctl restart` 或 `kill` 命令。 4. **依赖问题**:依赖服务异常导致重启。 --- ### 四、自动化监控建议 - **工具**:使用 `auditd` 监控进程生命周期。 - **脚本示例**: ```bash # 记录进程启动/退出事件 auditctl -a exit,always -F arch=b64 -S execve -k process_monitor ``` 通过上述方法,可精准定位进程重启时间和根本原因。若需长期监控,建议结合日志分析工具(如 ELK Stack)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值