systemd添加自定义系统服务设置自定义开机启动的方法_Linux

1.服务权限

systemd有系统和用户区分;系统(/user/lib/systemd/system/)、用户(/etc/lib/systemd/user/).一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。

2.创建服务文件

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[Unit]

Description : 服务的简单描述

Documentation : 服务文档

Before、After:定义启动顺序。Before=xxx.service,代表本服务在xxx.service启动之前启动。After=xxx.service,代表本服务在xxx.service之后启动。

Requires:这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,这个单元也停止了。

Wants:推荐使用。这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,对本单元没有影响。

[Service]

Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。

Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。

Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。

Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。

Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。除此之外,其他行为和Type=simple 类似。

PIDFile:pid文件路径

ExecStart:指定启动单元的命令或者脚本,ExecStartPre和ExecStartPost节指定在ExecStart之前或者之后用户自定义执行的脚本。Type=oneshot允许指定多个希望顺序执行的用户自定义命令。

ExecReload:指定单元停止时执行的命令或者脚本。

ExecStop:指定单元停止时执行的命令或者脚本。

PrivateTmp:True表示给服务分配独立的临时空间

Restart:这个选项如果被允许,服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作。

RemainAfterExit:如果设置这个选择为真,服务会被认为是在激活状态,即使所以的进程已经退出,默认的值为假,这个选项只有在Type=oneshot时需要被配置。

[Install]

Alias:为单元提供一个空间分离的附加名字。

RequiredBy:单元被允许运行需要的一系列依赖单元,RequiredBy列表从Require获得依赖信息。

WantBy:单元被允许运行需要的弱依赖性单元,Wantby从Want列表获得依赖信息。

Also:指出和单元一起安装或者被协助的单元。

DefaultInstance:实例单元的限制,这个选项指定如果单元被允许运行默认的实例。

3.重载服务

systemctl enable nginx.service

就会在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/nginx.service 文件的链接。

4.操作服务

#启动服务
$ sudo systemctl start nginx.service

#查看日志
$ sudo journalctl -f -u nginx.service
— Logs begin at 四 2015-06-25 17:32:20 CST. —
6月 25 10:28:24 Leco.lan systemd[1]: Starting nginx – high performance web server…
6月 25 10:28:24 Leco.lan nginx[7976]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
6月 25 10:28:24 Leco.lan nginx[7976]: nginx: configuration file /etc/nginx/nginx.conf test is successful
6月 25 10:28:24 Leco.lan systemd[1]: Started nginx – high performance web server.

#重启
$ sudo systemctl restart nginx.service

#重载
$ sudo systemctl reload nginx.service

#停止
$ sudo systemctl stop nginx.service

以上就是小编为大家带来的systemd添加自定义系统服务设置自定义开机启动的方法全部内容了,希望大家多多支持~

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索开机启动
systemd
自定义linux系统、linux 自定义文件系统、linux自定义系统调用、linux双系统开机引导、linux系统开机时间,以便于您获取更多的相关知识。

时间: 2024-09-20 15:03:38

systemd添加自定义系统服务设置自定义开机启动的方法_Linux的相关文章

详解CentOS设置程序开机自启动的方法_Linux

在CentOS系统下,主要有两种方法设置自己安装的程序开机启动. 1.把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd. #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the fu

linux自定义开机启动服务和chkconfig使用方法

linux自定义开机启动服务和chkconfig使用方法 1. 服务概述在linux操作系统下,经常需要创建一些服务,这些服务被做成shell脚本,这些服务需要在系统启动的时候自动启动,关闭的时候自动关闭.将需要自动启动的脚本/etc/rc.d/init.d目录下,然后用命令chkconfig --add filename将自动注册开机启动和关机关闭.实质就是在rc0.d-rc6.d目录下生成一些文件连接,这些连接连接到/etc/rc.d /init.d目录下指定文件的shell脚本. 2. 手

怎么设置软件开机启动

  怎么设置软件开机启动         方法/步骤 首先点击开始菜单,然后然后找到名为"启动"的文件夹. 在这个文件夹上右键单击,在弹出的菜单中选择浏览 这样就打开了包含开机启动软件的文件夹 在电脑里找到要开机启动的软件,右键单击,选择创建快捷方式,然后复制或剪切该快捷方式,粘贴到开机启动项目的文件夹中.这样下一次开机时软件就可以自动启动了. 如果想要更加简单的操作,可以打开360安全卫士,点击优化加速菜单,点击下方的启动选项卡,里面可以进行开机启动软件的设置.

mac下设置redis开机启动方法步骤_Redis

概述 装了redis有一段时间了,每次运行的时候都需要手动在命令行里启动redis,而且窗口不能关闭,感觉很麻烦,所以就想把redis设置为开机启动.由于google打不开(伟大的GFW啊),所以百度了几篇文章,照着教程一步一步做还是没有成功,怪自己太笨了. 这两天自己搭建了一个VPN,又能用google了,所以把这个问题解决了下,现在redis终于能开机启动了,High一下. 要设置redis开机启动,这里我使用的是mac的launchd系统,将redis作为用户守护(User Daemon)

C#实现程序开机启动的方法_C#教程

本文实例讲述了C#实现程序开机启动的方法.分享给大家供大家参考,具体如下: //此方法把启动项加载到注册表中 //获得应用程序路径 string strAssName = Application.StartupPath + @"\" + Application.ProductName + @".exe"; //获得应用程序名 string ShortFileName = Application.ProductName; RegistryKey rgkRun = Re

Ubuntu15.x /CentOS 7.x 以后 设置开机启动,添加自定义系统服务,自定义开机启动

Ubuntu15.04今天 装LANMPS套件,装好后开机启动死活设置不了,查看了Ubuntu15.04的新特性才发现: Systemd--Ubuntu 15.04的服务管理器已经切换到Systemd: Unity 7.3--Unity桌面版本升级到7.3,包含很多小的优化: Compiz 0.9.12--窗口管理器升级到0.9.12: Linux Kernel 3.19 Ubuntu 系统服务脚本目录: /lib/systemd/system/ Centos 系统服务脚本目录: /usr/li

CentOS设置服务开机启动的一些命令介绍

1.利用 chkconfig 来配置启动级别 在CentOS或者RedHat其他系统下,如果是后面安装的服务,如httpd.mysqld.postfix等,安装后系统默认不会自动启动的.就算手动执行 /etc/init.d/mysqld start 启动了服务,只要服务器重启后,系统仍然不会自动启动服务. 在这个时候,我们就需要在安装后做个设置,让系统自动启动这些服务,避免不必要的损失和麻烦. 其实命令很简单的,使用chkconfig即可. 比如要将mysqld设置为开机自动启动:  代码如下

Linux上PPTP VPN的一键安装以及设置开机启动的方法

  设置pptp vpn 开机启动 有的人懒的重启后手动开启服务,所以下面我再补上开机自动启动pptp vpn 和 iptables的命令 代码如下: #chkconfig pptpd on //开机启动pptp vpn服务 #chkconfig iptables on //开机启动iptables 贴个openvz的pptp vpn 一件安装包吧:centos,fedora,redhat 6.x 使用的脚本(vps上从没安装过的可以试试这个脚本): 点击下载 代码如下: #!/bin/bash

Win8.1开机启动项在哪修改?win8.1设置开机启动项方法

1. 我们要进入到电脑的任务管理器中,我们右击桌面下方任务栏空白处,在弹出菜单点击[任务管理器].   2. 然后在弹出窗口我们找到[启动]选项卡点击进入,如下图所示.   3. 然后我们就会看到很多开机就启动的软件了,在这里我们就可以进入操作了:   4. 如果我们不让那款软件开机就启动我们只要在右边点击[禁用]即可.   当然还有一种传统办法就是在命令状态输入msconfig之后也可以进行开机启动项设置哦在此就不介绍了.