编写使用systemctl启动服务脚本
CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,还是存在系统服务里吧,即:/usr/lib/systemd/system目录下
[Unit]
Description=MonitorJSCloud
After=network.service
[Service]
Type=simple
ExecStart=/usr/bin/python/root/test/ping_test.py
Restart=always
RestartSec=10
PrivateTmp=true
[Install]
WantedBy=multi-user.target
对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。
systemctl enable httpd
上面的命令相当于在 /etc/systemd/system 目录添加一个符号链接,指向 /usr/lib/systemd/system 里面的 httpd.service 文件。
这是因为开机时, Systemd 只执行 /etc/systemd/system 目录里面的配置文件。这也意味着,如果把修改后的配置文件放在该目录,就可以达到覆盖原始配置的效果。
$ sudo systemctl status httpd
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since 金 2014-12-05 12:18:22 JST; 7min ago
Main PID: 4349 (httpd)
Status: "Total requests: 1; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─4349 /usr/sbin/httpd -DFOREGROUND
├─4350 /usr/sbin/httpd -DFOREGROUND
├─4351 /usr/sbin/httpd -DFOREGROUND
├─4352 /usr/sbin/httpd -DFOREGROUND
├─4353 /usr/sbin/httpd -DFOREGROUND
└─4354 /usr/sbin/httpd -DFOREGROUND
月 05 12:22:40 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
|
Loaded行: |
配置文件的位置,是否设为开机启动 |
|
Active行: |
表示正在运行 |
|
Main PID行: |
主进程ID |
|
Status行: |
由应用本身(这里是 httpd )提供的软件当前状态 |
|
CGroup块: |
应用的所有子进程 |
|
日志块: |
应用的日志 |
$ systemctl cat sshd.service
查看配置文件
配置文件详解
|
Unit |
||
|
After |
表示服务需要在***服务启动之后执行 |
无依赖 |
|
Before |
表示服务需要在***服务启动之前执行 |
无依赖 |
|
Wants |
弱依赖关系 |
|
|
Requires |
强依赖关系 |
***停止之后本服务也必须停止 |
|
Service |
||
|
EnvironmentFile |
环境参数文件 |
EnvironmentFile=/etc/sysconfig/sshd 以key=value的形式保存 以$key形式读取 |
|
ExecStart |
启动进程时执行的命令 |
|
|
ExecReload |
重启服务时执行的命令 |
|
|
ExecStop |
停止服务时执行的命令 |
|
|
ExecStartPre |
启动服务之前执行的命令 |
|
|
ExecStartPost |
启动服务之后执行的命令 |
|
|
ExecStopPost |
停止服务之后执行的命令 |
所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行。比如,EnvironmentFile=-/etc/sysconfig/sshd(注意等号后面的那个连词号),就表示即使/etc/sysconfig/sshd文件不存在,也不会抛出错误。
|
Type |
|
|
simple(默认值): |
ExecStart字段启动的进程为主进程 |
|
forking: |
ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程 |
|
oneshot: |
类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务 |
|
dbus: |
类似于simple,但会等待 D-Bus 信号后启动 |
|
notify: |
类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务 |
|
idle: |
类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合 |
|
KillMode |
|
|
control-group(默认值): |
当前控制组里面的所有子进程,都会被杀掉 |
|
process: |
只杀主进程 |
|
mixed: |
主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号 |
|
none: |
没有进程会被杀掉,只是执行服务的 stop 命令。 |
|
Restart |
|
|
no(默认值): |
退出后不会重启 |
|
on-success: |
),才会重启 |
|
on-failure: |
),包括被信号终止和超时,才会重启 |
|
on-abnormal: |
只有被信号终止和超时,才会重启 |
|
on-abort: |
只有在收到没有捕捉到的信号终止时,才会重启 |
|
on-watchdog: |
超时退出,才会重启 |
|
always: |
不管是什么退出原因,总是重启 |
修改配置文件以后,需要重新加载配置文件,然后重新启动相关服务。
# 重新加载配置文件
$ systemctl daemon-reload
编写使用systemctl启动服务脚本的更多相关文章
- Ubuntu操作系统编写zabbix的启动管理脚本
Ubuntu操作系统编写zabbix的启动管理脚本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.修改zabbix的pid存放路径 1>.创建存放zabbix的pid目录 ...
- (转) CentOS 7添加开机启动服务/脚本
CentOS 7添加开机启动服务/脚本 原文:http://blog.csdn.net/wang123459/article/details/79063703 一.添加开机自启服务 在CentOS 7 ...
- 编写Redis启停服务脚本
脚本内容如下; fi esac exit$RETVAL 下载脚本:艺搜下载 将下载下来的脚本放在/etc/init.d/目录下 更改脚本权限 chmod 777 /etc/init.d/red ...
- 【centos7】添加开机启动服务/脚本
一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...
- centos7如何添加开机启动服务/脚本
一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...
- CentOS7添加开机启动服务/脚本(延用CentOS6方法)
一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...
- CentOS 7添加开机启动服务/脚本
一.添加开机自启服务 在CentOS 7中添加开机自启服务非常方便,只需要两条命令(以 jenkins 为例):systemctl enable jenkins.service #设置jenkins服 ...
- Linux—添加开机启动(服务/脚本)
系统启动时需要加载的配置文件 /etc/profile./root/.bash_profile/etc/bashrc./root/.bashrc/etc/profile.d/*.sh./etc/pro ...
- CentOS 7添加开机启动服务脚本
一.添加开机自启服务 在CentOS 7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务 ...
随机推荐
- 注解实战Beforeclass和Afterclass
package com.course.testng;import org.testng.annotations.*; public class BasicAnnotation { //最基本的注解,用 ...
- js类的使用
brush示例 以d3的一个brush进行叙述,示例见: https://bl.ocks.org/xunhanliu/6f0b46789842e9e19e6cfe9bd0b16806 应用情形: 当页 ...
- [Codeforces 115E]Linear Kingdom Races
题目大意: 有n块地,初始是荒地.你可以把某些荒地开垦(需要花费相应的价值\(a_i\)(正整数)),然后这些荒地就可以种田. 现在有m年,每年要在l到r区间内种田,获得p(正整数)的价值(必须保证l ...
- CF482C Game with Strings (状压DP+期望DP)
题目大意:甲和乙玩游戏,甲给出n(n<=50)个等长的字符串(len<=20),然后甲选出其中一个字符串,乙随机询问该字符串某一位的字符(不会重复询问一个位置),求乙能确定该串是哪个字符串 ...
- 使用 satis 搭建 composer 本地仓库
环境 windows nginx php composer 安装 拉取 satis 项目包,并拉取项目依赖 composer create-project composer/satis --stabi ...
- CRM系统 - 总结 (二) stark组件
介绍: stark组件,是一个帮助开发者快速实现数据库表的增删改查+的组件.目标: 10s 中完成一张表的增删改查. 前戏: django项目启动时,自定义执行某个py文件. django启动时,且在 ...
- 常用的ES6方法
常用的ES6方法 ES6之后,新增了定义变量的两个关键字,分别是let和const. let和const都能够声明块级作用域,用法和var是类似的,let的特点是不会变量提升,而是被锁在当前块中. 实 ...
- sql server 与 mysql在自定以数据类型的区别
sql server 中可以使用 create TYPE postal_code FORM varchar(6) not null; 用于限定邮编的数据位数,他基于varchar数据类型 注意: ...
- Java并发编程(七)ConcurrentLinkedQueue的实现原理和源码分析
相关文章 Java并发编程(一)线程定义.状态和属性 Java并发编程(二)同步 Java并发编程(三)volatile域 Java并发编程(四)Java内存模型 Java并发编程(五)Concurr ...
- 使用Java语言实现,自己主动生成10个整数(1~100,求出生成数列中的最大值和最小值,不同意使用Arrays类的sort方法
这是考察主要的java基础,没啥难点,直接上代码,近期在准备面试,所以做一些基础的面试题练练手 public class Demo1 { public static void main(String[ ...