Systemd是Centos7新采用的一套管理系统,可以实现启动及进程服务管理等,对比Centos6之前的SysVin体系,带来了很多突出的变化。
systemctl [options] command [name]
# options: 执行选项(非必须)
# command: 执行命令
# name: 单元名称(非必须)
例如:
systemctl --type service list-unit-files
【ps】:
reload :热重载,主进程不变,子进程重启
restart : 主进程和子进程都重启
软件包安装的单元位置:/usr/lib/systemd/system/ [自定义的软件一般放在这里]
系统管理员安装的单元: /etc/systemd/system/
单元A要求单元B在A启动之前运行
B服务的单元文件:
Unit
Requires=B
Afer=B
参数Wants 和 Requires类似但存在区别,如果后面接的服务没有启动,其实不会影响到unit本身。
需求:
实现计划过程:
实现过程:
脚本
cat demo.sh
#!/bin/bash
echo $$ > /var/run/demo.pid
while:
do
echo "demo service" $(date) >> /tmp/demo.log
sleep 1
done
单元文件
cat /usr/lib/systemd/system/demo.service
Unit
Description=run demo
Documentation=https://demo.com
Afer=Network-online.target
Wants=network-online.target
Service
Type=simple
PIDFile=/var/run/demo.pid
ExecStart=/bin/bash /demo.sh
ExecStop=/bin/kill -s TERM $MAINPID #shell命令使用绝对路径
[Install[
WantedBy=multi-user.target
验证
systemctl daemon-reload
systemctl start demo.service
分类: 单调定时器,实时定时器
从一个时间点过一段时间后激活定时任务。
举例:
[Timer]
OnBootSec=15min #系统启动十五分钟后执行一次
OnUnitActiveSec=1w #上一次任务激活完成的每个一周执行一次
通过日历事件激活定时任务,使用OnCalender= 的方式来定义实时定时器。
OnCalendar=*-*-* 00:00:00
举例:
[Timer]
OnCalendar = Fri 2020-11-12 11:11:11
或者:
[Timer]
OnCalendar= 2020-11-12 11:11:11
添加新的timer定时任务单元,定时调用服务单元demo.sh
比较:
服务单元 Timer单元
[Unit] [Unit]
[Service] [Timer]
[Install] [Install]
[Timer]
Unit=demo.service
Oncalendar=2020-11-12 11:11:13
systemctl start demo.timer
systemctl list-timers #查看所有定时任务
Systemd --> Journal --> RAM
RAM: 虚拟文件系统tmpfs,/run
journalctl [options] [matches]
notice或warning以粗体显示,红色显示error级别以上的信息
journalctl -n 20 ##查看最后二十行的日志
journalctl -f ##实时发现日志,类似于tail -f
journalctl -p err.. ## 查看err级别的日志
journalctl -u demo.service ##查看具体某个单元的日志
journalctl -b ##系统启动以后的日志
journalctl --since today ## 查看当什么时间开始后的
journalctl --until "30 min ago" ## 查看系统开始到多少时间之前的
journalctl --since today --until "2 hours agon"
journalctl _UID=1 ##查看PID/UID的日志
原文:https://www.cnblogs.com/lemanlai/p/12489385.html