Centos开启启动服务Systemd
Systemctl支持的服务类型
使用命令查看systemctl支持的类型
如果无扩展名,systemctl
默认把扩展名当做 .service
。
挂载点、设备名称完成自动转化为对应的单元
执行df -h
systemctl list-units | grep 'boot'
Systemd基本命令
Systemd单元管理命令
查看所有启动的服务
systemctl list -units --type=service
利用systemctl 停掉挂载单位
systemctl stop boot.mount
Systemd优势
支持并行启动、显著提高开机启动效率
Centos7关机只关闭正在运行的服务(Ceontos6没有开启的服务也会进行一次操作)
对于服务的管理不需要基于init.d下的脚本
Systemd解决原有模式的缺陷(Service,Syslog)
Systemd命令语法
Systemd中文手册:http://www.jinbuguo.com/systemd/systemctl.html
只查看systemd所管理服务的单元
systemctl --type=service list-unit-files
Systemd之target
涵盖了启动级别的概念
理解为目标或者租
target间可以相互关联
Centos6、7查看系统运行级别命令
runlevel
Centos7用systemctl查看系统运行级别命令
systemctl get-default
Centos7改变系统运行级别、重启生效reboot
systemctl set-default multi-user.target
Centos6永久性修改启动级别需要更改:/etc/inittab
设置系统启动级别依赖关系
命令:
systemctl list-dependencies target名称
查看当前系统级别服务依赖关系
systemctl list-dependencies
查看程序在系统里的有哪些运行级别
systemctl --reverse list-dependencies php-fpm.service
centos7服务管理
编写单元文件-服务管理
软件包安装的单元:/usr/lib/systemd/system/
——-建议自定义服务单元放在/usr/lib/systemd/system
系统管理员安装的单元:/etc/systemd/system/
先用rpm命令查看安装nginx软件所有文件的位置查找.service
rpm -ql nginx
cat /usr/lib/systemd/system/nginx.service
也可以用
systemctl cat nginx
服务单元文件配置
# systemctl cat nginx
# /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server 描述信息
Documentation=http://nginx.org/en/docs/ 文档信息所在
After=network-online.target remote-fs.target nss-lookup.target 在什么之后、在network-online ..这几个启动之后
Wants=network-online.target
[Service]
Type=forking 服务管理类型
PIDFile=/var/run/nginx.pid 进程pid文件
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf 启动前执行命令
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf 启动命令
ExecReload=/bin/kill -s HUP $MAINPID 重启命令
ExecStop=/bin/kill -s TERM $MAINPID 停止命令
[Install]
WantedBy=multi-user.target
Unit服务依赖关系
1、单元A要求单元B在A启动之前运行
B是服务的单元文件
[Unit]
Requires=B
After=B
Wants
虽然需要这个单元、但是如果这个单元没有启动,并不影响A的启动
Requires
必须需要B单元先启动、如果没启动A启动不了
Service服务启动类型Type
根据nginx自定义脚本
注意:service脚本 系统中是存在两个文件夹内、二选一
1、/etc/systemd/system/
2、/usr/lib/systemd/system/
[Unit]
Description=this is qidong server
Documentation=blog.solo90.com
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
PIDFile=/var/run/qidong.pid
ExecStart=/bin/sh /home/qidong/qidong.sh
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
qidong.sh
#!/bin/bash
echo $$>/var/run/qidong.pid
while :
do
echo "Hi my name is qidong,"$(date) >> /tmp/qidong.log
sleep 1
done
$$
代表获取pid
运行
systemctl daemon-reload
重载系统服务
然后执行 systemctl enable qidong.service
开机启动服务即可
Systemd定时任务
Timers可用来替换系统上的crontab,定时控制服务事件(.service文件)
指定新定时任务=service服务单元+timer定时单元
Timer定时单元
分类:单调定时器
从一个时间点过一点时间后激活定时任务
举例:
[Timer]
OnBootSec=15min
OnUnitActiveSec=1w
Timer实时定时器
通过日历事件激活定时任务。使用OnCalender=方式来定义实时定时器。
OnCalendar=--* 00:00:00
举例:
[Timer]
OnCalendar= Fri 2012-11-12 11:12:13
等价于
[Timer]
OnCalendar= 2012-11-23 11:12:13
实例演示定义定时任务
定义nginx.timer
[Unit]
Description=this is qidong timer
Documentation=blog.solo90.com
[Timer]
Unit=nginx.service
OnCalendar=2018-7-16 20:25:00
[Install]
WantedBy=multi-user.target
执行
systemctl start nginx.timer
查看所有定时timer任务
systemctl list-timers
[root@localhost.localdomain /usr/lib/systemd/system]
# systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
一 2018-07-16 18:46:36 CST 22h left 日 2018-07-15 18:46:36 CST 1h 33min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
一 2018-07-16 20:25:00 CST 24h left n/a n/a nginx.timer nginx.service
2 timers listed.
Pass --all to see loaded but inactive timers, too.
日志管理Journal
Journal:systemd
自己提供的日志工具和服务
配置文件:/etc/systemd/journald.conf
systemctl list-units | grep journa
日志级别
查看系统日志
journalctl
Journalctl命令使用
Journalctl [OPTIONS…] [MATCHES….]
journalctl 显示所有信息
notice或warning以粗体显示,红色显示error级别以上信息
查看系统最后20行记录
journalctl -n 20
journalctl -f 和tail -f 类似 实时查看最后输出信息
查看日志级别
查看err和alert级别的日志
journalctl -p err..alert
journalctl -p err
查看服务单元的日志
journalctl -u sshd.service