Linux添加自定义系统服务,开机自启
一、systemctl方式
由于chkconfig是Redhat发行版特有的服务配置方式,在基于debian的发行版下原生不支持,因此使用systemctl方式添加自定义系统服务,更具优势。
systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下。
systemctl管理的每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]。
[Unit]
Description:简短描述
Documentation:文档地址
Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败
Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败
BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前 Unit 停止运行
Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动
After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前启动
Conflicts:这里指定的 Unit 不能与当前 Unit 同时运行
Condition…:当前 Unit 运行必须满足的条件,否则不会运行
Assert…:当前 Unit 运行必须满足的条件,否则会报启动失败
[Service]
Type:定义启动时的进程行为。它有以下几种值。
Type=simple:默认值,执行ExecStart指定的命令,启动主进程
Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行
Type=dbus:当前服务通过D-Bus启动
Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行
Type=idle:若有其他任务执行完毕,当前服务才会运行
ExecStart:启动当前服务的命令
ExecStartPre:启动当前服务之前执行的命令
ExecStartPost:启动当前服务之后执行的命令
ExecReload:重启当前服务时执行的命令
ExecStop:停止当前服务时执行的命令
ExecStopPost:停止当其服务之后执行的命令
RestartSec:自动重启当前服务间隔的秒数
Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数
Environment:指定环境变量
注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
[Install]
用来定义如何启动,以及是否开机启动:
WantedBy:它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + .wants后缀构成的子目录中
RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中
Alias:当前 Unit 可用于启动的别名
Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit
范例:
1 [Unit]
2 Description=typeset
3
4 [Service]
5 #Type=forking
6 WorkingDirectory=/opt/typeset
7 PrivateTmp=true
8 ExecStart=/opt/typeset/start.sh
9 ExecStop=/opt/typeset/stop.sh
10 ExecReload=/opt/typeset/restart.sh
11
12 [Install]
13 WantedBy=multi-user.target
脚本授权:chmod 755 /usr/lib/systemd/system/myservice.service
开机启动:systemctl enable myservice.service
至此,每次开机都会执行/opt/myservice/start.sh,每次关机都会执行/opt/myservice/stop.sh。
二、chkconfig方式
一般比较老的centos支持chkconfig,其添加步骤比较简单:
1、在/etc/init.d/目录下新建一个自定义服务的文件如:myservice.sh
2、添加下面两句到 #!/bin/bash 之后。
1 # chkconfig: 2345 10 90
2 # description: myservice
PS:不添加这两行会报错:执行chkconfig --add myservice后提示:service myservice does not support chkconfig
PS:其中2345是默认启动级别,级别有0-6共7个级别
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。
3、命令
开启开机自启动服务:chkconfig myservice on
添加开机自启动服务:chkconfig --add myservice
查看开机自启动服务:chkconfig --list myservice
三、chkconfig与systemctl命令对照表
PS:此表仅为命令对照,在chkconfig下配置的服务,是不能使用systemctl运行的!当然如果同时安装配置了两种方式的服务,肯定是都能用的。
相关文章
- 看Ubuntu如何提升Linux级别
- Linux 前世今生
- linux-centos7- vim配置
- linux更新系统时间
- How to use udev for Oracle ASM in Oracle Linux 6 怎样使用udev在linux 6系统上使用asm
- 【Linux基础】linux下修改ls显示的时间格式
- 鸟哥笔记-专题一:Linux文件的权限rwx、特殊权限sst、隐藏权限ia
- Linux网络编程客户服务器设计范式
- 【刷题】面筋-Linux 系统中“|”管道的作用是什么
- 【学习总结】快速上手Linux玩转典型应用-第2章-linux简介
- atitit.添加win 系统服务 bat批处理程序服务的法总结instsrv srvany java linux
- atitit.添加win 系统服务 bat批处理程序服务的法总结instsrv srvany java linux
- paip.注册java程序为LINUX系统服务的总结。
- linux 错误码 65280,Android:无法在同一部手机上执行通过Linux部署编译的文件
- 成功解决Windows10环境下运行Linux系统下的.sh文件
- 【ubuntu】全站最详细Linux学习指南大全(建议添加收藏)
- 十万字整理linux常用命令,超详细
- 【Linux 内核 内存管理】mmap 系统调用源码分析 ④ ( do_mmap 函数执行流程 | do_mmap 函数源码 )
- 【Linux 内核 内存管理】mmap 系统调用源码分析 ① ( mmap 与 mmap2 系统调用 | Linux 内核中的 mmap 系统调用源码 )
- mysqladmin在SuSE linux系统中--sleep參数使用不准确问题
- L86.linux命令每日一练 -- 第12章 Linux系统常用内置命令(二)
- L47.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- users和whoami
- Linux内核中ideapad-laptop.c文件全解析3
- Linux系统之alias别名的基本使用
- linux top命令及结果详解 top -p 查看Linux程序运行进程
- 74:应急响应-win&linux分析后门&勒索病毒&攻击 ==》暴力破解攻击成功的在4624的eventID里!PChunter可查看非系统的可疑启动项/服务/定时任务,还是很直观的!Linux下gscan也不错,EDR可参考。
- Linux 系统中用户切换(su user与 su - user 的区别)
- Linux【实操篇】—— 用户管理、linux系统root密码找回方式
- Linux|centos7下部署安装alertmanager并实现邮箱和微信告警(基础篇---二)
- 嵌入式Linux系统中ARM汇编语言的使用方法
- Linux(Centos7)系统安装Python3.6.8教程
- LINUX系统服务端口详解大全
- docker cobbler批量部署Linux/windows系统(三)——筑梦之路
- 操作系统权限维持(十六)之Linux系统- TCP Wrappers反弹shell后门