侧边栏壁纸
博主头像
Blog博主等级

行动起来,活在当下

  • 累计撰写 211 篇文章
  • 累计创建 94 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

systemd配置及日志分割

centos7使用systemd管理程序

systemd的配置文件主要放在/usr/lib/systemd/system目录,也可能在/etc/systemd/system目录。

学习下sshd的系统配置文件写法:

$cat sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=forking
PIDFile=/var/run/sshd.pid
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target

简单解释下:

  • [Unit] 区块:启动顺序与依赖关系。

    • Description:当前配置文件的描述信息。

    • Documentation:帮助信息。

    • After:表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动

    • Wants:表示 sshd.service 与 sshd-keygen.service 之间存在” 弱依赖” 关系,即如果”sshd-keygen.service” 启动失败或停止运行,不影响 sshd.service 继续执行。

  • [Service] 区块:启动行为

    • Type:定义启动类型。详细了解点此

    • PIDFile:服务的 pid 文件路径。

    • EnvironmentFile:指定当前服务依赖的环境参数文件。

    • ExecStart:定义启动进程时执行的命令。

    • ExecReload:重启服务时执行的命令

    • KillMode:定义 Systemd 如何停止 sshd 服务。

    • Restart:定义了 sshd 退出后,Systemd 的重启方式。

    • RestartSec:表示 Systemd 重启服务之前,需要等待的秒数。上面的例子设为等待 42 秒。

  • [Install] 区块:定义如何安装这个配置文件,即怎样做到开机启动。

    • WantedBy:表示该服务所在的 Target。multi-user.target 表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

配置一个自己的系统服务

日常启动程序方式:

./etc/test/sipholeWatchDog/sipholeWatchDog

现在添加配置通过systemd来管理

vi /usr/lib/systemd/system/sipholeWatchDog.service
​
添加如下配置:
[Unit]
Description=sipholeWatchDog
After= syslog.target network.target jtsec-firstrun.service
[Service]
Type=forking
ExecStart=/etc/test/sipholeWatchDog/sipholeWatchDog
​
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target

加载单元

systemctl daemon-reload

启动服务并查看服务状态

systemctl start sipholeWatchDog
systemctl status sipholeWatchDog
● sipholeWatchDog.service - sipholeWatchDog
   Loaded: loaded (/usr/lib/systemd/system/sipholeWatchDog.service; enabled; vendor preset: disabled)
   Active: active (running) since 二 2023-01-03 11:10:57 CST; 14min ago
 Main PID: 22088 (sipholeWatchDog)
   CGroup: /system.slice/sipholeWatchDog.service
           ├─22088 /etc/test/sipholeWatchDog/sipholeWatchDog
           ├─22269 /etc/siphole/siphole_back -c /etc/siphole/siphole_back_5.conf
           └─22281 journalctl _PID=22269 -f
​
1月 03 11:24:59 video_back siphole_back[22269]: msp-P28181: 0:videoSrvId:00:RUN: MESSAGE: CmdType: RecordInfo Devices: 3301...001389
1月 03 11:25:03 video_back siphole_back[22269]: msp-P28181: 0:videoSrvId:00:Find Route ...
1月 03 11:25:03 video_back siphole_back[22269]: msp-P28181: 0:videoSrvId:00:RUN: MESSAGE: CmdType: RecordInfo Devices: 3301...001389
1月 03 11:25:11 video_back siphole_back[22269]: msp-P28181: 0:videoSrvId:00:Find Route ...
1月 03 11:25:11 video_back siphole_back[22269]: msp-P28181: 0:videoSrvId:00:RUN: MESSAGE: CmdType: RecordInfo Devices: 3301...001391
1月 03 11:25:12 video_back siphole_back[22269]: msp-P28181: 0:videoSrvId:00:Find Route ...
1月 03 11:25:12 video_back siphole_back[22269]: msp-P28181: 0:videoSrvId:00:RUN: MESSAGE: CmdType: RecordInfo Devices: 3301...001391
1月 03 11:25:13 video_back siphole_back[22269]: RUN:plugin/p28181.c 636:videoSrvId:00:Total devices flow: 20 bytes. 0 medias.
1月 03 11:25:14 video_back siphole_back[22269]: msp-P28181: 0:videoSrvId:00:Find Route ...
1月 03 11:25:14 video_back siphole_back[22269]: msp-P28181: 0:videoSrvId:00:RUN: MESSAGE: CmdType: RecordInfo Devices: 3301...001391
Hint: Some lines were ellipsized, use -l to show in full.
​

可以加入开机启动

systemctl enable sipholeWatchDog

systemctl命令整理

  • 显示所有单元状态

systemctl 或 systemctl list-units
  • 只显示服务单元的状态

systemctl --type=service
  • 验证 sshd 服务当前是否活动

systemctl is-active sshd
  • 启动,停止和重启 sshd 服务

systemctl start sshd.service
systemctl stop sshd.service
systemctl restart sshd.service
  • 重新加载配置

systemctl reload sshd.service
  • 列出活动状态的所有服务单元

systemctl list-units --type=service
  • 列出所有服务单元

systemctl list-units --type=service --all
  • 查看所有的服务单元是否为开机自启

systemctl list-unit-files --type=service 
  • 列出依赖的单元

systemctl list-dependencies sshd
  • 验证 sshd 服务是否开机启动

systemctl is-enabled sshd
  • 关闭开机自启

systemctl disable network
  • 启用 network 开机自启。

systemctl enable network

systemd日志管理

systemd 提供了自己日志系统(logging system),称为 journal. 使用 systemd 日志,无需额外安装日志服务(syslog)。读取日志的命令:

  • 查看所有日志 (默认显示本次启动的所有日志)

journalctl
  • 查看本次启动的所有日志也可以使用

journalctl -b
  • 查看内核日志

journalctl -k
  • 根据服务筛选

journalctl -u sshd
  • 根据进程 ID 查询

journalctl _PID=1
  • 查看日志占用的磁盘空间

journalctl --disk-usage
  • 设置日志占用的空间

journalctl --vacuum-size=500M

Linux log日志占用过大清理方法

Linux使用df -h检查磁盘文件,可以看到/run目录下有日志目录/run/log/journal,占用了数G空间。

或者直接在相应目录下执行du --max-depth=1 -h

Linux log 日志清理

检查当前journal磁盘占用量

journalctl --disk-usage

清理方法可以采用按照日期清理,或者按照允许保留的容量清理,只保存7天的日志,最大500M。

journalctl --vacuum-time=7d
journalctl --vacuum-size=500M

如果要手工删除日志文件,则在删除前需要先轮转一次journal日志。

systemctl kill --kill-who=main --signal=SIGUSR2 systemd-journald.service

要启用日志限制持久化配置,可以修改 /etc/systemd/journald.conf

SystemMaxUse=16M
ForwardToSyslog=no

然后重启

systemctl restart systemd-journald.service

检查journal是否运行正常以及日志文件是否完整无损坏

journalctl --verify

0

评论区