systemd: Systemd 是系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程。 特性: 系统引导时实现服务并行启动,实现快速开机。 按需启动守护进程。 能自动保存系统状态快照。 基于依赖关系定义服务控制逻辑(自动化的服务依赖关系管理)。 同时采用 socket 式与 D-Bus 总线式激活服务。 unit: 表示不同类型的 systemd 对象,unit 由其相关的配置文件进行标识,识别和配置。 相关文件中主要包含了系统服务,监听的 socket,保存的快照以及其他与 init 相关的信息。 这些配置文件主要保存在 /usr/lib/systemd/system 每个服务最主要的启动脚本设置,类似于之前的 /etc/init.d/。 /run/systemd/system 系统执行过程中所产生的服务脚本,比上面目录优先运行。 /etc/systemd/system 管理员建立的执行脚本,类似于 /etc/rc.d/rcN.d/Sxx 类的功能,比上面目录优先运行。 这三个目录的配置文件优先级从低到高,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。 系统安装时,默认会将 unit 文件放在 /usr/lib/systemd/system 目录。 修改系统默认的配置: 如果我们想要修改系统默认的配置,比如 sshd.service,一般有两种方法 1. 在 /etc/systemd/system 目录下创建 sshd.service 文件,里面写上我们自己的配置。 2. 在 /etc/systemd/system 下面创建 sshd.service 目录,在目录里新建任何以 .conf 结尾的文件,然后写入自己的配置。推荐这种做法。 xx.service: 每一个服务以 .service 结尾,一般会分为3部分:[Unit]、[Service] 和 [Install]。 [Unit] Description:服务的简单描述; Documentation:服务文档; After:依赖,仅当依赖的服务启动之后再启动自定义的服务单元; [Service] Type:启动类型 simple、forking、oneshot、notify、dbus; Type = simple(默认值):systemd 认为该服务将立即启动,服务进程不会 fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是 socket 激活型; Type = forking: systemd 认为当该服务进程 fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求, 使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便 systemd 能够跟踪服务的主进程。 Type = oneshot: 这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit = yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。 Type = notify: 与 Type = simple 相同,但约定服务会在就绪后向 systemd 发送一个信号,这一通知的实现由 libsystemd-daemon.so 提供。 Type = dbus: 若以此方式启动,当指定的 BusName 出现在 DBus 系统总线上时,systemd 认为服务就绪。 PIDFile:pid 文件路径; ExecStartPre:启动前要做什么,比如测试一下配置文件是否正常; ExecStart: 启动; ExecReload: 重载; ExecStop: 停止; PrivateTmp: True 表示给服务分配独立的临时空间; Environment:指定环境变量,如果不指定,想让它默认区使用系统环境变量会出错。格式:Environment='key1=val1' 'key2=val2' User: 指定用哪个用户 Group: 指定用哪个组 [Install] WantedBy: 服务安装的用户模式,从字面上看,就是想要使用这个服务的是谁? multi-user.target,就是指想要使用这个服务的目录是多用户。 每一个 .target 实际上是链接到我们单位文件的集合,当我们执行 systemctl enable sshd.service 时, 就会在 /etc/systemd/system/multi-user.target.wants/ 目录下新建一个 /usr/lib/systemd/system/sshd.service 文件的符号链接。 脚本加入开机启动: - 创建脚本 demo.sh " #! /bin/bash service firewalld start " - cd /etc/systemd/system - 创建 demo.service " [Unit] Description=demo After=network.target [Service] User=root Group=root Type=forking ExecStart=/home/demo.sh # ExecStop=/home/kill-demo.sh # ExecReload=/bin/kill -s HUP $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target " - 加入开机启动 systemctl enable demo
脚本 加入开机启动
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.