一:描述
CentOS 7 使用systemd替换了SysV。Systemd目的是要取代Unix时代以来一直在使用的init系统,兼容SysV和LSB的启动脚本,而且够在进程启动过程中更有效地引导加载服务。
systemd的特性有:
1. 支持并行化任务
2. 同时采用socket式与D-Bus总线式激活服务。 按需启动守护进程(daemon);
3. 利用 Linux 的 cgroups 监视进程;
4. 支持快照和系统恢复;
5. 维护挂载点和自动挂载点;
6. 各服务间基于依赖关系进行精密控制。
二:命令
使用 systemctl 控制单元时,通常需要使用单元文件的全名,包括扩展名(例如 sshd.service)。但是有些单元可以在systemctl中使用简写方式。
1.如果无扩展名,systemctl 默认把扩展名当作 .service。例如 netcf g 和 netcfg.service 是等价的。
2.挂载点会自动转化为相应的 .mount 单元。例如 /home 等价于 home. mount。
3.设备会自动转化为相应的 .device 单元,所以 /dev/sda2 等价于 de v-sda2.device。
1. systemctl
该命令可用于查看系统状态和管理系统及服务。该命令等同于 systemctl list-units
2. systemctl --failed
输出运行失败的单元
3. systemctl start <单元>
激活单元
4. systemctl stop <单元>
停止单元
5. systemctl restart <单元>
重启单元
6. systemctl reload <单元>
重新读取配置
7. systemctl status <单元>
查看运行状态
8. systemctl enable <单元>
开启自动激活单元
9. systemctl is-enabled <单元>
检查是否自动启动
10. systemctl disable <单元>
取消开机自动激活单元
三:单元文件编写
systemd单元文件的语法来源于 XDG桌面入口配置文件.desktop文件,最初的源头则是Microsoft Windows的.ini文件。单元文件可以从两个地方加载,
优先级从低到高分别是:
1. /usr/lib/systemd/system/: 软件包安装的单元
2. /etc/systemd/system/: 系统管理员安装的单元
编写自定义的 service 文件时,可以选择几种不同的服务启动方式。启动方式可通过配置文件 [Service] 段中的 Type= 参数进行设置。 ?
1.Type=simple(默认值):systemd认为该服务将立即启动。服务进程 不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。 ?
2.Type=forking:systemd认为当该服务进程fork,且父进程退出后服务 启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。 ?
3.Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。 可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
4.Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 syst emd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。 ?
5.Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总 线上时,systemd认为服务就绪。 ?
6.Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行i dle类型的单元。除此之外,其他行为和Type=simple 类似
四:举例
CentOS 7 使用systemd替换了SysV。Systemd目的是要取代Unix时代以来一直在使用的init系统,兼容SysV和LSB的启动脚本,而且够在进程启动过程中更有效地引导加载服务。
systemd的特性有:
1. 支持并行化任务
2. 同时采用socket式与D-Bus总线式激活服务。 按需启动守护进程(daemon);
3. 利用 Linux 的 cgroups 监视进程;
4. 支持快照和系统恢复;
5. 维护挂载点和自动挂载点;
6. 各服务间基于依赖关系进行精密控制。
二:命令
使用 systemctl 控制单元时,通常需要使用单元文件的全名,包括扩展名(例如 sshd.service)。但是有些单元可以在systemctl中使用简写方式。
1.如果无扩展名,systemctl 默认把扩展名当作 .service。例如 netcf g 和 netcfg.service 是等价的。
2.挂载点会自动转化为相应的 .mount 单元。例如 /home 等价于 home. mount。
3.设备会自动转化为相应的 .device 单元,所以 /dev/sda2 等价于 de v-sda2.device。
1. systemctl
该命令可用于查看系统状态和管理系统及服务。该命令等同于 systemctl list-units
2. systemctl --failed
输出运行失败的单元
3. systemctl start <单元>
激活单元
4. systemctl stop <单元>
停止单元
5. systemctl restart <单元>
重启单元
6. systemctl reload <单元>
重新读取配置
7. systemctl status <单元>
查看运行状态
8. systemctl enable <单元>
开启自动激活单元
9. systemctl is-enabled <单元>
检查是否自动启动
10. systemctl disable <单元>
取消开机自动激活单元
三:单元文件编写
systemd单元文件的语法来源于 XDG桌面入口配置文件.desktop文件,最初的源头则是Microsoft Windows的.ini文件。单元文件可以从两个地方加载,
优先级从低到高分别是:
1. /usr/lib/systemd/system/: 软件包安装的单元
2. /etc/systemd/system/: 系统管理员安装的单元
编写自定义的 service 文件时,可以选择几种不同的服务启动方式。启动方式可通过配置文件 [Service] 段中的 Type= 参数进行设置。 ?
1.Type=simple(默认值):systemd认为该服务将立即启动。服务进程 不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。 ?
2.Type=forking:systemd认为当该服务进程fork,且父进程退出后服务 启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。 ?
3.Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。 可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
4.Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 syst emd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。 ?
5.Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总 线上时,systemd认为服务就绪。 ?
6.Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行i dle类型的单元。除此之外,其他行为和Type=simple 类似
四:举例
点击(此处)折叠或打开
- [Unit]
- Description=Docker Application Container Engine
- Documentation=http://docs.docker.com
- After=network.target
- Wants=docker-storage-setup.service
- Requires=docker-cleanup.timer
-
- [Service]
- Type=notify
- NotifyAccess=all
- KillMode=process
- EnvironmentFile=-/etc/sysconfig/docker
- EnvironmentFile=-/etc/sysconfig/docker-storage
- EnvironmentFile=-/etc/sysconfig/docker-network
- Environment=GOTRACEBACK=crash
- Environment=DOCKER_HTTP_HOST_COMPAT=1
- Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
- ExecStart=/usr/bin/dockerd-current \
- --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
- --default-runtime=docker-runc \
- --exec-opt native.cgroupdriver=systemd \
- --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
- $OPTIONS \
- $DOCKER_STORAGE_OPTIONS \
- $DOCKER_NETWORK_OPTIONS \
- $ADD_REGISTRY \
- $BLOCK_REGISTRY \
- $INSECURE_REGISTRY
- ExecReload=/bin/kill -s HUP $MAINPID
- LimitNOFILE=1048576
- LimitNPROC=1048576
- LimitCORE=infinity
- TimeoutStartSec=0
- Restart=on-abnormal
- MountFlags=slave
-
- [Install]
- WantedBy=multi-user.target
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28624388/viewspace-2144389/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28624388/viewspace-2144389/