在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
(1)单元文件概述
复制代码 代码如下:unit_name.type_extension 这里的unit_name代表单元名称,type_extension代表单元类型。
复制代码 代码如下:[Unit] Description=PostfixMailTransportAgent After=syslog.targetnetwork.target Conflicts=sendmail.serviceexim.service [Service] Type=forking PIDFile=/var/spool/postfix/pid/master.pid EnvironmentFile=-/etc/sysconfig/network ExecStartPre=-/usr/libexec/postfix/aliasesdb ExecStartPre=-/usr/libexec/postfix/chroot-update ExecStart=/usr/sbin/postfixstart ExecReload=/usr/sbin/postfixreload ExecStop=/usr/sbin/postfixstop [Install] WantedBy=multi-user.target (3)创建自定义的单元文件
复制代码 代码如下:touch/etc/systemd/system/name.servicechmod664/etc/systemd/system/name.service 文件不需要执行权限。 复制代码 代码如下:[Unit] Description=service_description After=network.target [Service] ExecStart=path_to_executable Type=forking PIDFile=path_to_pidfile [Install] WantedBy=default.target 4)通知systemd有个新服务添加: 复制代码 代码如下:systemctldaemon-reload systemctlstartname.service (4)创建emacs.service例子:
复制代码 代码如下:~]#touch/etc/systemd/system/emacs.service ~]#chmod664/etc/systemd/system/emacs.service 2)添加配置信息: 复制代码 代码如下:[Unit] Description=Emacs:theextensible,self-documentingtexteditor [Service] Type=forking ExecStart=/usr/bin/emacs--daemon ExecStop=/usr/bin/emacsclient--eval"(kill-emacs)" Environment=SSH_AUTH_SOCK=%t/keyring/ssh Restart=always [Install] WantedBy=default.target 3)通知systemd并开启服务: 复制代码 代码如下:~]#systemctldaemon-reload ~]#systemctlstartemacs.service (5)创建第二个sshd服务的例子
复制代码 代码如下: ]#cp/etc/ssh/sshd{,-second}_config
2)编辑sshd-second_config文件,添加22220的端口,和PID文件: 复制代码 代码如下: Port22220
PidFile/var/run/sshd-second.pid 如果还需要修改其他参数,请阅读帮助。 复制代码 代码如下: ~]#cp/usr/lib/systemd/system/sshd{,-second}.service
4)编辑单元文件sshd-second.service 复制代码 代码如下: Description=OpenSSHserversecondinstancedaemon 添加sshd.service服务在After关键字之后: 复制代码 代码如下: After=syslog.targetnetwork.targetauditd.servicesshd.service 移除sshdkey创建: 复制代码 代码如下: ExecStartPre=/usr/sbin/sshd-keygen
移除这一行 复制代码 代码如下: ExecStart=/usr/sbin/sshd-D-f/etc/ssh/sshd-second_config$OPTIONS 修改后的sshd-second.service文件内容如下: 复制代码 代码如下:[Unit] Description=OpenSSHserversecondinstancedaemon After=syslog.target network.targe tauditd.service sshd.service [Service] EnvironmentFile=/etc/sysconfig/sshd ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-second_config$OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target 5)如果使用SELinux,添加tcp端口,负责第二sshd服务的端口就会被拒绝绑定: 复制代码 代码如下: ~]#semanage port -a -tssh_port_t -p tcp22220
6)设置开机启动并测试: 复制代码 代码如下:~]#systemctl enable sshd-second.service ~]$ssh -p 22220 user@server 确保防火墙端口也开放。
复制代码 代码如下:systemctl daemon-reload daemon-reload选项重新加载所以单元文件并重新创建依赖书,在需要立即应用单元文件改变的时候使用。另外,也可以使用下面的命令达到同样的目的: 复制代码 代码如下:init q 还有,如果修改的是一个正在运行服务的单元文件,服务需要被重启下: 复制代码 代码如下: systemct lrestart name.service
(7)扩展默认单元配置文件配置
复制代码 代码如下:mkdir/etc/systemd/system/name.service.d 在刚才创建的目录之下创建配置文件,必须以.conf文件结尾。 复制代码 代码如下:[Unit] Requires=new_dependency After=new_dependency 另外一个例子,可以配置重启的时候,在主进程退出后30秒在重启,配置例子如下: 复制代码 代码如下:[Service] Restart=always RestartSec=30 推荐每次只产生一个小文件,每个文件只聚焦完善一个功能,这样配置文件很容易被移除或者链接到其他服务对的配置目录中。 复制代码 代码如下:systemctldaemon-reload systemctlrestartname.service 例子:扩展httpd.service服务配置 复制代码 代码如下:~]#mkdir/etc/systemd/system/httpd.service.d ~]#touch/etc/systemd/system/httpd.service.d/custom_script.conf 假设自定义文件位置在/usr/local/bin/custom.sh,将这个信息添加到custom_script.conf自定义脚本中: 复制代码 代码如下:[Service] ExecStartPost=/usr/local/bin/custom.sh 应用更改: 复制代码 代码如下:~]#systemctldaemon-reload ~]#systemctlrestarthttpd.service |
请发表评论