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启动服务脚本的更多相关文章

  1. Ubuntu操作系统编写zabbix的启动管理脚本

    Ubuntu操作系统编写zabbix的启动管理脚本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.修改zabbix的pid存放路径 1>.创建存放zabbix的pid目录 ...

  2. (转) CentOS 7添加开机启动服务/脚本

    CentOS 7添加开机启动服务/脚本 原文:http://blog.csdn.net/wang123459/article/details/79063703 一.添加开机自启服务 在CentOS 7 ...

  3. 编写Redis启停服务脚本

    脚本内容如下; fi   esac   exit$RETVAL 下载脚本:艺搜下载 将下载下来的脚本放在/etc/init.d/目录下 更改脚本权限 chmod 777 /etc/init.d/red ...

  4. 【centos7】添加开机启动服务/脚本

    一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...

  5. centos7如何添加开机启动服务/脚本

    一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...

  6. CentOS7添加开机启动服务/脚本(延用CentOS6方法)

    一.添加开机自启服务 在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务为 ...

  7. CentOS 7添加开机启动服务/脚本

    一.添加开机自启服务 在CentOS 7中添加开机自启服务非常方便,只需要两条命令(以 jenkins 为例):systemctl enable jenkins.service #设置jenkins服 ...

  8. Linux—添加开机启动(服务/脚本)

    系统启动时需要加载的配置文件 /etc/profile./root/.bash_profile/etc/bashrc./root/.bashrc/etc/profile.d/*.sh./etc/pro ...

  9. CentOS 7添加开机启动服务脚本

    一.添加开机自启服务 在CentOS 7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例): systemctl enable jenkins.service #设置jenkins服务 ...

随机推荐

  1. NotFoundHttpException

    报错:NotFoundHttpException 这种一般都是路由配置错误

  2. thinkphp queue

    composer create-project topthink/think composer require topthink/think-queue php think queue:work -- ...

  3. NOI 2011 阿狸的打字机 (AC自动机+dfs序+树状数组)

    题目大意:略(太长了不好描述) 良心LOJ传送门 先对所有被打印的字符串建一颗Trie树 观察数据范围,并不能每次打印都从头到尾暴力建树,而是每遍历到一个字符就在Trie上插入这个字符,然后记录每次打 ...

  4. Linux学习01

    Linux学习第一天 1.使用VM安装RHEL7.0 具体参见刘遄老师的<Linux就该怎么学>https://www.linuxprobe.com/chapter-01.html 2.R ...

  5. 洛谷P5269 欧稳欧再次学车

    正常模拟就好~ 首先初始化:转速=l, 档位=1 然后读入数据 由于先要处理换挡操作,所以我们先按照x处理,再按照y处理 当x=0时,档位+1,转速=l 当x=1时,档位-1,转速=r 当y=1时,转 ...

  6. 亚马逊AWS学习——多网络接口下配置EC2实例连接公网的一个“bug”

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47667627 本文出自[我是干勾鱼的博客] 之前在<亚马逊AWS学习--E ...

  7. ZOJ Problem Set - 3820 Building Fire Stations 【树的直径 + 操作 】

    题目:problemId=5374" target="_blank">ZOJ Problem Set - 3820 Building Fire Stations 题 ...

  8. Codeforces 676E The Last Fight Between Human and AI 规律

    链接 Codeforces 676E The Last Fight Between Human and AI 题意 给一个多项式,有些系数不确定.人和机器轮流填系数,系数可以是任何数,问是否能使得最后 ...

  9. Android UnitTest FrameWork

    Android test suites基于Junit,可以直接使用Junit测试不使用android api的class,也可以使用android的Junit extensions测试android ...

  10. SpringBoot学习笔记(3)----SpringBoot的profile多环境配置

    在实际的应用开发中,可能会需要不同配置文件来支撑程序的运行,如开发,测试,预生产,生产环境等,程序在不同的环境下可能需要不同的配置,如不同数据源等,如果每次在不同的环境下都要去修改配置文件就会闲得不合 ...