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脚本 系统中是存在两个文件夹内、二选一

[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

图

Last modification:May 13, 2024
如果觉得我的文章对你有用,请随意赞赏