linux设置systemctl 启动脚本
centos 7 服务的systemctl 脚本一般存在:/usr/lib/systemd目录。目录下又分为system,和user之分,
- /usr/lib/systemd/system #系统服务,开机不需要登陆就能运行的程序(相当于开启自启)
+/usr/lib/systemd/user #用户服务,需要登录后才能运行的程序
目录下又存在两种类型的文件:
*.service #服务unit文件
*.target #开机级别unit
centos7 的每一个服务以。service 结尾,一般分为3部分:【unit】、【service】、【install】
[Unit] # 主要是服务说明
Description=test # 简单描述服务
After=network.target # 描述服务类别,表示本服务需要在network服务启动后在启动
Before=xxx.service # 表示需要在某些服务启动之前启动,After和Before字段只涉及启动顺序,不涉及依赖关系。
[Service] # 核心区域
Type=forking # 表示后台运行模式。
User=user # 设置服务运行的用户
Group=user # 设置服务运行的用户组
KillMode=control-group # 定义systemd如何停止服务
PIDFile=/usr/local/test/test.pid # 存放PID的绝对路径
Restart=no # 定义服务进程退出后,systemd的重启方式,默认是不重启
ExecStart=/usr/local/test/bin/startup.sh # 服务启动命令,命令需要绝对路径
PrivateTmp=true # 表示给服务分配独立的临时空间
[Install]
WantedBy=multi-user.target # 多用户
字段说明
Type类型有:
simple(默认):#以Execstart字段启动的进程为主进程
forking:#Execstart 字段以fox()方式启动,,此时父进程将退出,子进程将成为主进程(后台运行),一般都设置为forking
oneshot : #类似于simple,但只执行一次,systemd会等他执行完,才执行其他服务
dbus: #类似于simple,但会等待D—Bus信号后启动
notify: #类似与simple ,但结束后会发出通知信号,然后systemd才启动其他服务
idle: #类似与simple,但要等到其他任务都执行完,才启动该服务
EnvironmentFile:
指定配置文件,和连词号组合使用,可以避免配置文件不存在的异常。
Environment:
后面接多个不同的shell变量。
例如:
Environment=DATA_DIR=/data/elk
Environment=LOG_DIR=/var/log/elasticsearch
Environment=PID_DIR=/var/run/elasticsearch
EnvironmentFile=-/etc/sysconfig/elasticsearch
连词号(-):在所有启动设置之前,添加的变量字段,都可以加上连词号
表示抑制错误,即发生错误时,不影响其他命令的执行。
比如EnviromentFile=-/etc/sysconfig/xxx 表示即使文件不存在,也不会抛异常
Killmode的类型
contorl-group (默认) # 当前控制组里所有的子进程都会被杀掉
process : #只杀主进程
mixed: #主进程将收到SIGTERM(终止进程)信号,子进程将收到SIGKILL(无条件终止)信号
none: # 没有进程会被杀掉,只是执行服务的stop命令
Restart 类型
no (默认):#退出后无操作
on-success :#只有正常退出时(退出状态码为0),才会重启
on-failure: #非正常退出时,重启,包括信号终止,和超时
on-abnaomal: #只有信号终止或超时,才会重启
on-abort : #只有在收到没有捕捉到信号终止时,才会重启
on-watchdog: #超市退出时,才会重启
always: #不管什么退出原因,都会重启
#对于守护进程,推荐使用on-failure
RestartSec
表示systemd重启服务之前,需要等待的秒数:RestartSec:30
各种Exec*字段
Exec*后面的命令,仅接受‘指令 参数 参数..’格式,不能接受<> |&等特殊字符,很多bash语法也不支持,如果想要支持bash语法,需要设置Tyep=oneshot
ExecStart: # 启动服务时执行的命令
ExecReload: # 重启服务时执行的命令
ExecStop: # 停止服务时执行的命令
ExecStartPre: # 启动服务前执行的命令
ExecStartPost:# 启动服务后执行的命令
ExecStopPost: # 停止服务后执行的命令
WantedBy字段:
multi-user.target: # 表示多用户命令行状态,这个设置很重要
graphical.target: # 表示图形用户状体,它依赖于multi-user.target
linux设置systemctl 启动脚本的更多相关文章
- ubuntu-18.04 设置开机启动脚本-亲测有效
ubuntu-18.04不能像ubuntu14一样通过编辑rc.local来设置开机启动脚本,通过下列简单设置后,可以使rc.local重新发挥作用. 2.将下列内容复制进rc-local.servi ...
- ubuntu-18.04 设置开机启动脚本
ubuntu-18.04 设置开机启动脚本 参阅下列链接 https://askubuntu.com/questions/886620/how-can-i-execute-command-on-sta ...
- Ubuntu 18.04 设置开机启动脚本 rc.local systemd
ubuntu18.04不再使用initd管理系统,改用systemd. ubuntu-18.04不能像ubuntu14一样通过编辑rc.local来设置开机启动脚本,通过下列简单设置后,可以使rc.l ...
- ubuntu高版本如何设置开机启动脚本
ubuntu-18.04不能像ubuntu14一样通过编辑rc.local来设置开机启动脚本 可以通过下列简单设置后,可以使rc.local重新发挥作用. 1.建立rc-local.service文件 ...
- linux设置开机启动程序?
/etc/rc.d/init.d 是 /etc/init.d的目标链接. 如果/etc/rc.d下面没有 rc.local脚本文件, 则需要 手动创建: 而 /etc/bashrc 是在登陆bash ...
- Ubuntu-18.04设置开机启动脚本
参考:https://www.cnblogs.com/defifind/p/9285456.html http://www.cnblogs.com/airdot/p/9688530.html s ...
- linux 设置开机启动项两种方式
原文链接:http://blog.csdn.net/karchar/article/details/52489572 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务. 在解问题之前 ...
- linux中tomcat启动脚本:关闭、发布、重启、测试是否成功
说明 在使用jenkins持续集成时,需要实现自动发布包到tomcat.该脚本实现了在jenkins将包发送到linux服务器上后的自动关闭.发布.启动.测试启动是否成功的过程 思路 该思路以tomc ...
- 短网址资料-nginx非root用户启动-systemctl启动脚本-分割root权限
https://www.cnblogs.com/aspnethot/articles/3492191.htmlhttps://www.cnblogs.com/aspnethot/articles/34 ...
随机推荐
- 【Nginx】冰河又一本超硬核Nginx PDF教程免费开源!!
写在前面 在 [冰河技术] 微信公众号中的[Nginx]专题,更新了不少文章,有些读者反馈说,在公众号中刷 历史文章不太方便,有时会忘记自己看到哪一篇了,当打开一篇文章时,似乎之前已经看过了, 但就是 ...
- 给你的MyBatis-Plus装上批量插入的翅膀
努力和选择,哪个更重要?关注微信公众号[天开易想]这是一位懂互联网研发和架构的户外.篮球老铁 前言 各位好,我是易哥(thinkYi). 大家有用过MyBatis-Plus(简称MP)的都知道它是一个 ...
- Linux:改变世界的一次代码提交
摘要:如果选Linux社区历史上最伟大的一次 Git 代码提交,那一定是 Git 工具项目本身的第一次代码提交. 吾诗已成.无论大神的震怒,还是山崩地裂,都不能把它化为无形! -- 奥维德<变形 ...
- xss小游戏通关
xss url:http://test.ctf8.com/level1.php?name=test 小游戏payload: <script>alert("'test'" ...
- UOS服务器常见问题
UOS服务器安装完成之后,xshell工具无法远程, 描述 我安装完系统后,用xshell工具无法远程,必须在系统上才能进去我是通过centos7的kvm虚拟工具上刷的统信的系统,安装方式: 最小化安 ...
- 安装Ubuntu虚拟机
centos已经满足不了我了,这里就装了个虚拟机,等有钱了再单配台单系统的Linux主机. 一.下载Ubuntu的ISO文件 用国内的网易镜像站点 进去点个16.04.6,然后下个64位的.iso就好 ...
- pytest封神之路第六步 断言技巧
pytest的断言把Python语言简洁的优点发挥的淋漓尽致,因为它用的就是Python的标准断言assert. assert基础 assert用法 assert_stmt ::= "ass ...
- HTML你好!
初识HTML 什么是HTML web的本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思.现广泛译作网络.互联网等技术领域.表现为三种形式,即超文本(hypertext).超媒体(hypermed ...
- mongodb安装教程(亲测有效)
网上太多教程了,都是说的不明不白,所以自己整理一份 #参考官网: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat ...
- VS2017 Xamarin开发Android时首次部署完成后直接闪退
项目属性切换到Android选项,在打包属性上有一个[使用共享运行时]的选项要取消勾选,默认打钩时apk文件比较小,但程序无法运行起来. 取消后安装包一小变成几十M,这个目前好像没什么好的解决办法,毕 ...