Linux 之centos7 制作服务自启动systemd

简介: - Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实质差别。systemd是靠管理unit的方式来控制开机服务,开机级别等功能。 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里临时介绍关于service后缀的文件。
  • Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实质差别。systemd是靠管理unit的方式来控制开机服务,开机级别等功能。
  • 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里临时介绍关于service后缀的文件。因为systemd在开机要想执行自启动,都是通过这些*.service 的unit控制的

具体流程

  1. 在/usr/lib/systemd/system目录下新建一个 service-name.service的文件
  2. 以apache的httpd.service的unit为例解释
[Unit]
#定义描述
Description=The Apache HTTP Server 
#指定了在systemd在执行完那些target之后再启动该服务
After=network.target remote-fs.target nss-lookup.target

[Service]
#定义Service 的运行type,一般是forking,就是后台运行
Type=notify
Environment=LANG=C
#以下定义systemctl start |stop |reload *.service  的每个执行方法,具体命令#需要写绝对路径
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
# Send SIGWINCH for graceful stop
KillSignal=SIGWINCH
KillMode=mixed
#创建私有的内存临时空间
PrivateTmp=true

[Install]
WantedBy=multi-user.target

以下是我自己写的一个java项目,需要他开机自运行的service,systemd会帮我执行我写脚本,shell如下,仅供参考

#!/bin/bash
CMD=$1

case $CMD in 
-start)

        nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log &
        ;;
-stop)

        port=$(sudo netstat -tnlp | grep ':9099' |awk '{print $nf}' |awk -f'/' '{print $1}')
        sudo kill $port
        ;;

-restart)

        port=$(sudo netstat -tnlp | grep ':9099' |awk '{print $nf}' |awk -f'/' '{print $1}')
        sudo kill $port
        nohup java -jar /home/mobileoa/apps/shMediaManage-0.0.1.jar &> /home/mobileoa/apps/shm.log &
        ;;
*)
        echo "Usage: shMediaManager.sh -start | -stop | -restart .Or use systemctl start | stop | restart  MediaManager.service "
        ;;
esac

编辑.service文件,在Exec*下执行脚本,来启动关闭重启服务

[UNIT]
Description=Media wanager Service
After=network.target

[Service]
Type=forking
**ExecStart=/home/mobileoa/apps/shMediaManager.sh -start
ExecReload=/home/mobileoa/apps/shMediaManager.sh -restart
ExecStop=/home/mobileoa/apps/shMediaManager.sh -stop**
PrivateTmp=True

[Install]
WantedBy=multi-user.target

设置开机自起
systemctl enable MediaManager.service
会创建一个连接

目录
相关文章
|
9天前
|
Linux 网络安全 KVM
Linux(Centos6.5)下kvm环境搭建
Linux(Centos6.5)下kvm环境搭建
23 2
|
10天前
|
关系型数据库 MySQL Unix
linux优化空间&完全卸载mysql——centos7.9
linux优化空间&完全卸载mysql——centos7.9
44 7
|
11天前
|
人工智能 Linux 虚拟化
Linux Centos虚拟机扩容
Linux Centos虚拟机扩容
|
12天前
|
Linux 网络安全 开发工具
Centos6.5搭建一个简单的vsftpd服务
在CentOS 6.5上配置vsftpd服务器:确保与Win10能互通,更新yum源,安装vsftpd,编辑配置文件禁用匿名访问,重启服务并关闭防火墙。创建新用户和密码,通过FTP在Win10文件管理器中使用实验机IP访问,用创建的用户和密码登录,成功创建远程文件夹,实验机上可见。
24 2
|
13天前
|
网络安全 开发工具
Centos6.5安装配置autofs服务
配置IP地址和挂载yum源后,安装autofs:`yum -y install autofs`。编辑配置文件 `/etc/auto.misc` 和 `/etc/auto.master`,示例中展示了将yum源路径添加到auto.master。关闭防火墙并重启autofs服务以应用更改。
14 2
|
11天前
|
存储 Ubuntu 应用服务中间件
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
15 1
|
13天前
|
Linux 网络安全 开发工具
Centos6.5安装并配置Telnet服务
该内容是一个关于如何安装配置Telnet服务的教程。首先,通过yum安装vim、xinetd、telnet和telnet-server。接着,修改/etc/xinetd.d/telnet配置文件,将disable改为no,并设置访问限制(如限定特定网段和时间)。关闭防火墙,重启服务。创建测试用户后,分别使用CentOS和Windows的Telnet客户端进行连接测试,显示成功,实验完成。
20 1
|
6天前
|
XML JSON Java
【亮剑】如何在CentOS中搭建Solr7单机服务?
【4月更文挑战第30天】本文介绍了在CentOS上搭建Solr 7单机服务的流程。首先确保系统安装Java,然后下载解压Solr 7压缩包,进入目录创建运行目录和日志目录,使用命令启动Solr服务。通过浏览器访问管理界面,创建Collection和Core。接着配置数据导入,创建`example_docs`文件夹存放数据,通过管理界面导入数据。最后进行查询测试,完成Solr的基本使用。
|
9天前
|
运维 网络协议 Linux
【Linux】CentOS网络故障排查大揭秘: 实战攻略解读
【Linux】CentOS网络故障排查大揭秘: 实战攻略解读
|
9天前
|
XML 安全 Linux
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作