CentOS设置自定义服务并开机自启动过程
1、编写自定义脚本
cat /root/test.sh
#!/bin/bash #每隔5s打印当前时间并输出到指定文件里 while true do echo "`date '+%Y-%m-%d %H:%M:%S'`" >> /root/a.log sleep 5 done
2、将脚本设置成服务
[root@XIEXC ~]# cat /usr/lib/systemd/system/zdy.service
[Unit] Description=zidingyi-shell #需修改 After=network.target [Service] Type=simple User=root ExecStart=/bin/bash /root/test.sh #需修改,执行的命令 Restart=on-failure [Install] WantedBy=multi-user.target
3、设置开机自启动
systemctl start zdy.service #手动开启服务 systemctl enable zdy.service #设置为开机自启动
查看开机服务项
[root@XIEXC ~]# systemctl list-unit-files | grep enable | grep zdy* zdy.service enabled
4、验证
reboot后
tail -f /root/a.log

验证完记得删除此测试服务!!!
附:service文件参数详情
1、Unit部分
[Unit] Description=zidingyi-shell After=network.target
是启动顺序与依赖关系
- 1)Description字段:给出当前服务的简单描述。
- 2)After字段:表示本服务应该在某服务之后启动。(After和Before字段只涉及启动顺序,不涉及依赖关系。设置依赖关系,需要使用Wants字段和Requires字段。)
- 3)Wants字段:表示本服务与某服务之间存在“依赖”系,如果被依赖的服务启动失败或停止运行,不影响本服务的继续运行。
- 4)Requires字段,表示本服务与某服务之间存在“强依赖”系,如果被依赖的服务启动失败或停止运行,本服务也必须退出。
2、Service部分
[Service] Type=simple User=root ExecStart=/bin/bash /root/test.sh Restart=on-failure
1)Type字段:定义启动类型
simple(默认值):ExecStart字段启动的进程为主进程。forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。oneshot:类似于simple,但只执行一次,Systemd会等它执行完,才启动其他服务。dbus:类似于simple,但会等待D-Bus信号后启动。notify:类似于simple,启动结束后会发出通知信号,然后Systemd再启动其他服务。idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。
2)ExecStart字段:启动服务时执行的命令,可以是可执行程序、系统命令或shell脚本
3)Restart字段:服务程序退出后,Systemd的重启方式
no(默认值):退出后不会重启;on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启
3、Install部分
[Install] WantedBy=multi-user.target
定义如何安装这个配置文件,即怎样做到开机启动
1)WantedBy字段:表示该服务所在的Target。
(Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是,自定义脚本所在的Target是multi-user.target(多用户模式)。这个设置非常重要,因为执行systemctl enable zdy.service命令时,zdy.service会被链接到/etc/systemd/system/multi-user.target.wants目录之中,实现开机启动的功能。)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Apache mod_rewrite实现HTTP和HTTPS重定向跳转
这篇文章主要介绍了Apache mod_rewrite实现HTTP和HTTPS重定向跳转,本文分别给出了HTTP重定向HTTPS和HTTPS重定向HTTP配置参考,需要的朋友可以参考下2015-06-06
Ubuntu Server 16.04安装MySQL设置远程访问出现问题的完美解决方案(error:10061)
Ubuntu 16.04安装MySQL及需要其他主机远程连接MySQL时的设置问题。在安装过程中会出现各种奇葩问题,下面小编给大家带来了Ubuntu Server 16.04安装MySQL设置远程访问出现问题的完美解决方案(error:10061),一起看看吧2016-10-10


最新评论