linux自动启动network服务,Windows/Linux 创建开机启动服务

系统服务是一种应用程序类型,它在后台运行。服务应用程序通常可以在本地和通过网络为用户提供一些功能。有些软件无需安装解压就能使用,或者在安装时未向系统注册服务。如果我们需要开机启动,需要手动创建服务。

Windows系统篇

相对于在注册表中创建开机启动程序,服务具有优先级高,权限大,无需账户登录即可启动的优点。

和计划任务相比,服务可以手动停止,重启。而计划任务是周期性作业,只能按设定的规则执行一次或循环执行。

WinSW是一款开源免费,用于创建Windows服务的工具,项目地址:https://github.com/winsw/winsw

a5c02083c4b4

dc096911f30087316ce08940aa1653d2.png

Win10选择WinSW.NET461,低版本系统如Win7选择NET4,XP选择NET2。如果本机没有.NET框架的可以下载带.NET的版本。sample-allOptions.xml是完整示例配置文件,一般我们下载sample-minimal.xml最小化示例配置文件。

需要注意的是,每一个启动服务对应一个winsw程序,制作成服务后winsw.exe和相应配置文件不可删除。

示例:

在Win10上配置frp服务端和客户端开机启动。新建frp文件夹,复制2个WinSW.NET461.exe副本,命名为start_frps.exe和start_frpc.exe,复制2个sample-minimal.xml副本,命名为start_frps.xml和start_frpc.xml。(exe程序和xml配置文件名要一至)。

start_frps.xml

frps

Frp Server

My Frp Server

C:\Tools\Frp\frps.exe

-c "C:\Tools\Frp\config\frps.ini"

start_frpc.xml

frpc

Frp Client

My Frp Client

C:\Tools\Frp\frpc.exe

-c "C:\Tools\Frp\config\frpc.ini"

配置说明:

id:指定在Windows系统内部使用的识别服务的ID。在系统中安装的所有服务中必须是唯一,它应该完全由字母数字字符组成。

name:服务的简短名称,它可以包含空格和其他字符。

description:该服务可读描述。当选中该服务时,它将显示在Windows服务管理器中。

executable:该元素指定要启动的可执行文件。它可以是绝对路径,也可以指定可执行文件的名称,然后从环境变量“PATH”中搜索(需要注意的是,服务经常在不同的用户账户中运行,因此它可能需要有不同于你设置在环境变量Path中的路径)。

arguments:启动参数,可选。

在开始菜单点右键,用管理员身份打开PowerShell,定位到frp目录。

a5c02083c4b4

c4a2ef22e1fc19ae60fb410c360e24f9.png

执行:

start_frps.exe install

start_frpc.exe install

a5c02083c4b4

efa5a5a4a73843f2345e57f1248c9be5.png

打开services.msc,可以看到服务已安装成功。

a5c02083c4b4

930db2e48ea77aa87d7a8a68957a8b98.png

可以设为自动启动。

如果需要删除服务,在frp目录中执行:

start_frps.exe uninstall

start_frpc.exe uninstall

Linux系统篇

如果仅仅只需要开机启动,直接把执行代码写在 /etc/rc.local 中即可。有些发行版不存在该文件,手动建立,并设为可执行权限即可。

rc.local 文件:

#!/bin/bash

// ...执行代码

文件权限设为可执行:chmod 755 /etc/rc.local

言归正传,Linux创建服务如下:

方法一

在 /etc/init.d 中创建文件,如:tomcat,并设为可执行权限。

文件内容:

#!/bin/bash

#

### BEGIN INIT INFO

# Provides: engr-z

# Required-Start:

# Required-Stop:

# Should-Start: $network $time

# Should-Stop: $network $time

# Default-Start: 3 4 5

# Default-Stop:

# Short-Description:

# Description:

### END INIT INFO

#

export CATALINA_HOME="tomcat目录"

export CATALINA_BASE="实例目录instance"

case "$1" in

start)

if [ -f $CATALINA_HOME/bin/startup.sh ];then

echo "start tomcat ..."

$CATALINA_HOME/bin/startup.sh

fi;;

stop)

if [ -f $CATALINA_HOME/bin/startup.sh ];then

echo "stop tomcat ..."

$CATALINA_HOME/bin/shutdown.sh

fi;;

*)

echo $"Usage: $0 {start|stop}"

exit 1;;

esac

文件### BEGIN INIT INFO和### END INIT INFO之间的声明是必须的,给出了服务启动时依赖的服务和运行级别。

执行以下命令,让系统开机加载脚本:

update-rc.d defaults 99

方法二(推荐)

现在主流Linux发行版启动都交给systemctl管理(旧的用chkconfig管理),配置起来简单很多,不需要对Linux服务启动原理过多了解。

systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,就将程序存在系统服务里,即:/usr/lib/systemd/system 目录下。

该目录下的服务有以service结尾的,也有target结尾的。

service :守护进程的启动、停止、重启和重载是此类 unit 中最为明显的几个类型。

target :此类 unit 为其他 unit 进行逻辑分组。它们本身实际上并不做什么,只是引用其他 unit 而已。这样便可以对 unit 做一个统一的控制。

配置文件一般会分为3部分:[Unit]、[Service]和[Install]

[Unit] # 主要是服务说明

Description=test # 简单描述服务

After=network.target # 描述服务类别,表示本服务需要在network服务启动后在启动

Before=xxx.service # 表示需要在某些服务启动之前启动,After和Before字段只涉及启动顺序,不涉及依赖关系。

[Service] # 核心区域

Type=forking # 表示后台运行模式。

User=user # 设置服务运行的用户

Group=user # 设置服务运行的用户组

KillMode=control-group # 定义systemd如何停止服务

PIDFile=/usr/local/test/test.pid # 存放PID的绝对路径

Restart=no # 定义服务进程退出后,systemd的重启方式,默认是不重启

ExecStart=/usr/local/test/bin/startup.sh # 服务启动命令,命令需要绝对路径

PrivateTmp=true # 表示给服务分配独立的临时空间

[Install]

WantedBy=multi-user.target # 多用户

以下是我在Linux下frps启动服务脚本(frps.service):

[Unit]

Description=frps service

Requires=network.target network-online.target

After=network.target network-online.target

[Service]

Type=simple

PIDFile=/tmp/frps.pid

ExecStart=/opt/frp/frps -c /opt/frp.conf/frps.ini

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true

[Install]

WantedBy=multi-user.target

a5c02083c4b4

1ccd48fca75be4b8e057b5bab12d4bc4.png

systemctl 提供了一组子命令来管理单个的 unit,其命令格式为:

systemctl [command] [unit]

示例:

systemctl daemon-reload # 重载系统服务

systemctl enable *.service # 设置某服务开机启动

systemctl start *.service # 启动某服务

systemctl stop *.service # 停止某服务

systemctl reload *.service # 重启某服务

由于篇幅有限,systemctl更多用法和说明就不写了。以上几个命令用于操作系统服务足够。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xshell 基本使用方式 (1) -- 使用Xshell 连接 VMware下的linux系统

在VMware的虚拟机设置下的网络适配器设置成桥接模式,点击确定。 在终端中输入ifconfig命令查看IP 打开Xshell 新建会话 输入刚刚获取的IP地址,我的是219.219.198.225 如果点击右侧的用户身份验证 输入你的linux登录用户名以及密码 点击连接 可以看到已经…

django01

Django的下载与基本命令: 1、下载Django: pip3 install django 2、创建一个django project django-admin.py startproject mysite manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。    settings.py ---- 包含了项目的…

如何在linux环境下安装kvm,如何在Linux发行版上安装和配置KVM和Open vSwitch?

在如今多租户模式的数据中心环境下,虚拟化技术正从传统的基于虚拟机管理程序的服务器虚拟化,扩展到网络虚拟化。在这种环境下,基于软件的虚拟交换机通常连同虚拟机管理程序一起部署在服务器上,串联起了不同虚拟机之间传送的流量。…

hanlp中的N最短路径分词

N-最短路径 是中科院分词工具NLPIR进行分词用到的一个重要算法,张华平、刘群老师在论文《基于N-最短路径方法的中文词语粗分模型》中做了比较详细的介绍。该算法算法基本思想很简单,就是给定一待处理字串,根据词典,找出词典中所有…

shipyard-----------docker容器的可视化管理

shipyard是什么&#xff0c;由题目就可知&#xff0c;是一个对docker进行管理的可视化界面 照此步骤就能完成对shipyard搭建 <ip-of-host>内容要修改成你的docker0的IP地址&#xff0c;不知道的话就ifconfig就好了 如果搭建不成功则是防火墙未开放4001端口&#xff1a;su…

Eclipse对Java(TM)8的官方支持

Java开发工具&#xff08;JDT&#xff09;项目的项目负责人Dani Megert今天早些时候宣布了此声明 &#xff1a; Eclipse顶级项目非常自豪地宣布正式支持Java™8。从I20140318-0830开始&#xff0c;所有的Luna&#xff08;4.4&#xff09;构建都包含Eclipse对Java™8的支持。对…

Quartz.net使用笔记

一、需求场景&#xff1a;每天固定时间执行某个行为/动作。 一开始想用定时器&#xff0c;后来无意间发现了这个插件&#xff0c;感觉功能太强大了&#xff0c;完美解决了我的问题。 二、下载地址&#xff1a;https://www.quartz-scheduler.net/ 也可以在项目中直接使用nugut进…

将Java 8支持添加到Eclipse Kepler

是否想向开普勒添加Java 8支持&#xff1f; Java 8尚未加入我们的标准下载包中 。 但是您可以将其添加到现有的Eclipse Kepler软件包中。 我有运行Java 8的三种不同的Eclipse安装&#xff1a; 面向Java开发人员的Eclipse IDE的全新Kepler SR2安装&#xff1b; 为RCP / RAP开…

linux网络唤醒,如何在Ubuntu Server 18.04中启用网络唤醒(WOL)

网络唤醒(WOL)是一种行业标准协议&#xff0c;用于远程唤醒服务器。如果您管理着很多设备&#xff0c;因此不需要为了唤醒服务器而去数据中心。启用允许您远程执行此操作的功能&#xff0c;这样您可以更高效地工作。Ubuntu 系统默认没有启用WOL&#xff0c;所以我们要设置它。我…

ActiveMQ –经纪人网络解释

目的 这个由7部分组成的博客系列将分享有关如何创建ActiveMQ代理网络以实现高可用性和可伸缩性的信息。 为什么要建立经纪人网络&#xff1f; ActiveMQ消息代理是企业中消息传递基础结构的核心组件。 它需要高度可用并且可以动态伸缩&#xff0c;以促进具有不同容量需求的动态…

13 创建高级联结

13.1 使用表别名 在之前的例子中&#xff0c;我们用的都是用的列别名&#xff0c;SQL还允许给表名起别名。 13.2 使用不同类型的联结 我们在上一章使用的只是称为内部联结或等值联结&#xff08; equijoin&#xff09; 的简单联结&#xff0c;现在来看3种其他联结&#xff0c;…

正则表达式验证问题(用户名、密码、email、身份证

实现的代码如下&#xff1a; 1 <html>2 <head>3 <meta charset"UTF-8">4 </head>5 <body>6 <p>用户名正则表达式 &#xff0c;4到16位&#xff08;字母&#xff0c;数字&#xff0c;下滑线&#xff0c;减号&#xff09;</p&g…

DevExpress WPF v18.2新版亮点(五)

买 DevExpress Universal Subscription 免费赠 万元汉化资源包1套&#xff01; 限量15套&#xff01;先到先得&#xff0c;送完即止&#xff01;立即抢购>> 行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布&#xff0c;本站将以连载的形式…

爬虫521错误(又是一次和可爱的前端vs的故事)

起因: 今天突然想重构一下代理池,并且想扩充一下代理,所以就想着爬点代理IP,然后就有了下面的故事 一上来先进行了一顿操作: def get_xxdaili(url):headers {User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safar…

c语言编译器怎样退出全屏,BOOX 应用软件怎样退出全屏模式?

​相信很多用BOOX阅读器的小伙伴都知道BOOX的系统是安卓系统&#xff0c;相对于Kindle的原生Linux系统&#xff0c;BOOX的安卓系统的开放性会更强&#xff0c;可以自由下载一些第三方应用软件。天弟知道很多小伙伴们喜欢在一些第三方应用软件上面看书的习惯&#xff0c;比如像多…

Java 8 Friday:不再需要ORM

在Data Geekery &#xff0c;我们喜欢Java。 而且&#xff0c;由于我们真的很喜欢jOOQ的流畅的API和查询DSL &#xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 Java 8星期五 每个星期五&#xff0c;我们都会向您展示一些不错的教程风格的Java 8新功能&#…

c 语言输出指针的值,C 语言指针

C 语言指针在本教程中&#xff0c;您将学习指针。什么是指针&#xff0c;如何使用它们以及在示例的帮助下使用它们时可能遇到的常见错误。指针是 C和C 编程的强大功能。在学习指针之前&#xff0c;让我们学习一下C语言编程中的地址。C 语言地址如果程序中有变量var&#xff0c…

Java EE CDI限定词:快速浏览

在上下文和依赖注入&#xff08;CDI&#xff09;中&#xff0c; 限定符是类型安全和松散耦合的主体。 为什么&#xff1f; 没有CDI&#xff0c;我们将以类似于下面的方式注入Java EE组件 注意&#xff1a;这实际上不会编译&#xff0c;只是假设的代码片段 例子1 例子2 上述…

Windows 系统光盘刻录教程-光盘怎样刻录?刻录数据光盘用轨道一次写入还是光盘一次写入?...

刻录光盘需要 DVD-RW 的光驱&#xff0c;并且光盘需要 DVD-R 的光盘用于刻录。刻录工具可以使用 https://cn.ultraiso.net/ 来进行刻录。选择软件目录 中 工具 &#xff0c;选择 刻录光盘映像 即可进行配置&#xff1a; 此时涉及到了光盘写入的方式的选择问题&#xff0c;在网上…

NTC3950-10K温度传感器

一、计算公式 补充&#xff1a; B3950 R10K T225度 查RT表&#xff0c;25度对应的是10K 电路&#xff1a;   热敏电阻与上拉电阻R813分压&#xff0c;获取温度与Vo电压的关系&#xff0c;在根据Vo折算出与MCU ADC的数值。 再将ADC代出Rt&#xff0c;即得到ADC与T的关系公式。…