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命令详解,与如何查看系统日志
注意:
如果 Nginx 是直接通过二进制文件启动(而非 systemctl),不会留下记录. 即使通过systemctl 启动, 也未必留下记录(eg. nginx reload).
获取 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
```