手把手教你优化网站,湖南网站建设制作公司,深圳公司做网站,网络运维工程师薪酬系统服务是一种应用程序类型#xff0c;它在后台运行。服务应用程序通常可以在本地和通过网络为用户提供一些功能。有些软件无需安装解压就能使用#xff0c;或者在安装时未向系统注册服务。如果我们需要开机启动#xff0c;需要手动创建服务。Windows系统篇相对于在注册表中…系统服务是一种应用程序类型它在后台运行。服务应用程序通常可以在本地和通过网络为用户提供一些功能。有些软件无需安装解压就能使用或者在安装时未向系统注册服务。如果我们需要开机启动需要手动创建服务。Windows系统篇相对于在注册表中创建开机启动程序服务具有优先级高权限大无需账户登录即可启动的优点。和计划任务相比服务可以手动停止重启。而计划任务是周期性作业只能按设定的规则执行一次或循环执行。WinSW是一款开源免费用于创建Windows服务的工具项目地址https://github.com/winsw/winswdc096911f30087316ce08940aa1653d2.pngWin10选择WinSW.NET461低版本系统如Win7选择NET4XP选择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.xmlfrpsFrp ServerMy Frp ServerC:\Tools\Frp\frps.exe-c C:\Tools\Frp\config\frps.inistart_frpc.xmlfrpcFrp ClientMy Frp ClientC:\Tools\Frp\frpc.exe-c C:\Tools\Frp\config\frpc.ini配置说明id指定在Windows系统内部使用的识别服务的ID。在系统中安装的所有服务中必须是唯一它应该完全由字母数字字符组成。name服务的简短名称它可以包含空格和其他字符。description该服务可读描述。当选中该服务时它将显示在Windows服务管理器中。executable该元素指定要启动的可执行文件。它可以是绝对路径也可以指定可执行文件的名称然后从环境变量“PATH”中搜索(需要注意的是服务经常在不同的用户账户中运行因此它可能需要有不同于你设置在环境变量Path中的路径)。arguments启动参数可选。在开始菜单点右键用管理员身份打开PowerShell定位到frp目录。c4a2ef22e1fc19ae60fb410c360e24f9.png执行start_frps.exe installstart_frpc.exe installefa5a5a4a73843f2345e57f1248c9be5.png打开services.msc可以看到服务已安装成功。930db2e48ea77aa87d7a8a68957a8b98.png可以设为自动启动。如果需要删除服务在frp目录中执行start_frps.exe uninstallstart_frpc.exe uninstallLinux系统篇如果仅仅只需要开机启动直接把执行代码写在 /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_HOMEtomcat目录export CATALINA_BASE实例目录instancecase $1 instart)if [ -f $CATALINA_HOME/bin/startup.sh ];thenecho start tomcat ...$CATALINA_HOME/bin/startup.shfi;;stop)if [ -f $CATALINA_HOME/bin/startup.sh ];thenecho stop tomcat ...$CATALINA_HOME/bin/shutdown.shfi;;*)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] # 主要是服务说明Descriptiontest # 简单描述服务Afternetwork.target # 描述服务类别表示本服务需要在network服务启动后在启动Beforexxx.service # 表示需要在某些服务启动之前启动After和Before字段只涉及启动顺序不涉及依赖关系。[Service] # 核心区域Typeforking # 表示后台运行模式。Useruser # 设置服务运行的用户Groupuser # 设置服务运行的用户组KillModecontrol-group # 定义systemd如何停止服务PIDFile/usr/local/test/test.pid # 存放PID的绝对路径Restartno # 定义服务进程退出后systemd的重启方式默认是不重启ExecStart/usr/local/test/bin/startup.sh # 服务启动命令命令需要绝对路径PrivateTmptrue # 表示给服务分配独立的临时空间[Install]WantedBymulti-user.target # 多用户以下是我在Linux下frps启动服务脚本(frps.service)[Unit]Descriptionfrps serviceRequiresnetwork.target network-online.targetAfternetwork.target network-online.target[Service]TypesimplePIDFile/tmp/frps.pidExecStart/opt/frp/frps -c /opt/frp.conf/frps.iniExecReload/bin/kill -s HUP $MAINPIDExecStop/bin/kill -s QUIT $MAINPIDPrivateTmptrue[Install]WantedBymulti-user.target1ccd48fca75be4b8e057b5bab12d4bc4.pngsystemctl 提供了一组子命令来管理单个的 unit其命令格式为systemctl [command] [unit]示例systemctl daemon-reload # 重载系统服务systemctl enable *.service # 设置某服务开机启动systemctl start *.service # 启动某服务systemctl stop *.service # 停止某服务systemctl reload *.service # 重启某服务由于篇幅有限systemctl更多用法和说明就不写了。以上几个命令用于操作系统服务足够。