linux-系统日志查看指令systemctl

发布于:2025-08-06 ⋅ 阅读:(19) ⋅ 点赞:(0)

journalctl 是 systemd 日志管理工具,用于查询和显示由 systemd-journald 收集的系统日志.

systemctl

systemctl命令来自英文词组system control的缩写,是Linux系统中用于管理系统服务的工具。它提供了一系列命令,用于启动、停止、重启和查看服务状态等操作。

在 systemd 中,服务主要通过 .service 文件进行定义和管理.

目录区别:

/usr/lib/systemd/system/:这是软件包安装的默认目录(由发行版或 RPM/DEB 包管理),属于系统预置文件。

/etc/systemd/system/:这是管理员自定义配置的目录,优先级更高。

/run/systemd/system/:运行时临时配置(重启失效)

自定义路径:可以通过 systemctl link /path/to/foo.service 添加

常用命令:

命令 作用
start 启动服务
stop 停止服务
restart 重启服务
reload 重新加载服务配置,不中断服务
enable 设置服务为开机自启动
disable 禁用服务开机自启动
status 显示服务的当前状态
is-active 检查服务当前是否正在运行
is-enabled 检查服务是否设置为开机自启动
daemon-reload 重新加载 systemd 的配置文件,通常在修改服务文件后使用

service文件定义好后,

sudo systemctl start [service_name] 启动服务

sudo systemctl enable [service_name] 设置开机自启动。

参考地址: Systemctl 详解:Linux 服务管理工具

journalctl

systemd包含了一个叫做journalctl的辅助组件,其主要作用是管理系统的事件日志记录。

# journalctl -f
journalctl 跟踪日志文件 (读取最新条目)

# journalctl -xe
    -x:表示显示扩展信息,包括日志消息的描述和建议(如果可用)。
    -e:表示直接跳转到日志的末尾,方便查看最新的日志条目(类似于 tail -f 的效果)。

# journalctl -n 数字	
我们可以通过-n 或者 --lines=参数来指定显示的行数大小。

# journalctl -u nginx.service 
按照服务进行筛选

参考地址: ournalctl命令详解,与如何查看系统日志

注意:

  1. 如果 Nginx 是直接通过二进制文件启动(而非 systemctl),不会留下记录. 即使通过systemctl 启动, 也未必留下记录(eg. nginx reload).

  2. 获取 Nginx 进程的reload执行情况

ps -eo pid,comm,lstart | grep nginx  这样可以. 
[root@abc redis]# ps -eo pid,comm,lstart | grep nginx
  44700 nginx           Tue Aug  5 10:35:44 2025
 144219 nginx           Tue Aug  5 16:55:49 2025
 144220 nginx           Tue Aug  5 16:55:49 2025

解释 -eo pid,comm,lstart

这是 ps 的选项和输出格式控制部分:

    -e:表示选择所有进程(every process)。等同于 --all。
    -o:表示自定义输出格式(user-defined format)。后面跟的是要显示的列名。
    pid,comm,lstart:指定要显示的字段,用逗号分隔:
        pid:进程 ID(Process ID),是操作系统用来唯一标识一个进程的数字。
        comm:命令名(command name),即进程所执行的程序的名称(通常是可执行文件的 basename,如 nginx)。
        lstart:进程的启动时间(full startup time),显示进程启动的完整日期和时间(包括年、月、日、时、分、秒、时区等)。

定时任务

如果需要添加定时任务,可以直接编辑 /etc/crontab 或使用 crontab -e(用户级任务)。

日志查看

查看 "renew"关键字周围内容

cat /var/log/letsencrypt/letsencrypt.log | grep -A 5 -B 5 "renew"
-A 5:After,表示匹配行之后的 5 行也一并输出。
-B 5:Before,表示匹配行之前的 5 行也一并输出。

查看端口占用

sudo netstat -tulnp | grep -E ':80|:443'
选项	含义
-t	显示 TCP 协议的连接和监听端口(TCP)
-u	显示 UDP 协议的连接和监听端口(UDP)
-l	只显示 正在监听(listening)的套接字(即服务等待客户端连接的状态)
-n	以 数字形式 显示地址和端口号(不进行 DNS 反向解析,更快更清晰)
-p	显示 占用端口的进程 PID 和程序名称(需要 root 权限才能看到所有进程)
tee 是 Linux 和 Unix 系统中的一个非常有用的命令行工具,主要用于从标准输入读取数据,并将其同时输出到标准输出(屏幕)和一个或多个文件中。
#1. 将命令输出同时显示在屏幕并保存到文件
ls -la | tee output.txt

MySQL && 文件

用惯了UI工具, 如何通过命令行进行数据库备份和执行SQL文件?

mysql -u root -p
USE database_name;
SOURCE /path/to/file.sql;

#mysql导出数据库
–extended-insert 表示长INSERT,多row在一起批量INSERT,提高导入效率
----complete-insert 表示拒绝默认列名, 必须指定每一个列名

mysqldump -u root -p --default-character-set=utf8mb4 
--complete-insert --extended-insert=false aaa-cloud 
> aaa-cloud_bk.sql

mybatis 配置 sql打印

mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    
	```
	

网站公告

今日签到

点亮在社区的每一天
去签到