Windows和linux上服务以及添加服务操作

Windows上的服务

Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。 这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。 这些功能使服务非常适合在服务器上使用,或者需要长时间运行的功能(不会影响在同一台计算机上工作的其他用户)的情况。

Windows服务查看方式

像mysql服务,mysql会自动注册服务到服务中心

linux中的服务

Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启

能够被systemctl管理的软件,一般也称之为:服务

NetworkManager,主网络服务
network ,副网络服务
firewalld ,防火墙服务
sshd ssh 服务( FinalShell 远程登录 Linux 使用的就是这个服务)

 以上服务为内置服务,可以统一使用systemctl命令来管理

语法:

start 启动
stop 关闭
status 查看状态
enable 开启开机自启
disable 关闭开机自启

 除了内置服务,一些第三方的的软件安装也会自动注册为系统服务,也就可以使用systemctl命令进行管理,例如mysqld

部分软件安装后没有自动集成到systemctl中,我们可以手动添加(例如redis-server)。

1,新建服务文件

每一个服务在Linux有它自己的对应的配置文件,这个文件可以通过文本编辑器编辑,扩展名为xxx.servive(xxx为服务名称)。这些文件位于/usr/lib/systemd/system目录下,也可以放到/etc/systemd/system目录下,优先级更高。

/usr/lib/systemd/system中文件如下(很多我过滤mysql)

/etc/systemd/system文件如下,包括我自己创建的redis.service,也可以看到很多service文件链接到/user/lib下的系统文件,如果像了解这些区别,可以看https://www.cnblogs.com/TonvyLeeBlogs/articles/13762400.html

在这个目录下新建service文件即可创建我们的服务。文件的内容结构如下:

[Unit]

Description=服务描述

After=服务依赖(在这些服务后启动本服务)

[Service]

Type=服务类型

ExecStart=启动命令

ExecStop=终止命令

ExecReload=重启命令

[Install]

WantedBy=服务安装设置

可见服务配置文件分为[Unit]、[Service]和[Install]三大部分。 

一般来说有些值是固定的,没有特殊需要我们直接套用即可。例如[Unit]中After的值一般是:

network.target remote-fs.target nss-lookup.target。

[Install]的WantedBy一般是multi-user.target。

[Service]中是主要内容。

Type的值有以下几个:

  • simple:这是默认的值,指定了ExecStart设置后,simple就是默认的Type设置除非指定Type。simple使用ExecStart创建的进程作为服务的主进程,在此设置下systemd会立即启动服务。
  • forking:如果使用了这个值,则ExecStart的脚本启动后会调用fork()函数创建一个进程作为其启动的一部分。当初始化完成,父进程会退出。子进程会继续作为主进程执行。
  • oneshot:类似simple,但是在systemd启动之前,进程就会退出。这是一次性的行为。可能还需要设置RemainAfterExit=yes,以便systemd认为j进程退出后仍然处于激活状态。
  • dbus:也和simple很相似,该配置期待或设置一个name值,通过设置BusName=设置name即可。
  • notify:同样地,与simple相似的配置。顾名思义,该设置会在守护进程启动的时候发送推送消息。

其实常用的就是simpleforking了。一般来说我们的程序是应用程序前台使用就用simple,后台/守护进程一般是forking

然后就是启动/停止/重启命令,注意这个命令里面调用的程序必须全部使用绝对路径

例如,我的服务器上的redis的Service配置:

[Unit]
Description=redis-server
After=network.target

[Service]

Type=forking

ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf

ExecStop=kill -9 $(pidof redis)

[Install]

WantedBy=multi-user.target

因为redis一般作为后台程序运行所以Type填forking。kill -9 $(pidof redis-server)命令的意思是:先用pidof命令获取指定名称进程的pid再把这个结果传给kill命令终止对应进程。平时终止特定名称的进程时也可以这么写,这是shell脚本语言可以自学。

其实除此之外,service文件还有很多配置项,这里只写出了常用必要的,满足日常需求,其余可以自行搜索学习,这里不再过多赘述。

2,启动/停止/重启我们的服务

刚刚建立好了我们的服务配置,现在就可以使用了!在此之前需要先使用下列命令让系统重新读取所有服务文件:

systemctl daemon-reload

然后通过systemctl命令操控服务:

那么注意服务名就是我们刚刚创建的服务配置文件service文件的文件名(不包括扩展名),例如我的服务文件是redis.service,那么我的服务名是redis。

其实我们执行启动服务命令时,就会执行我们刚刚配置文件中ExecStart的值的命令,同样终止、重启会对应执行配置文件中ExecStop的值的命令。

3,启用/禁用开机自启

通过以下命令启用/禁用开机自启动:

# 启用开机自启

systemctl enable 服务名

# 禁用开机自启

systemctl disable 服务名

  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
WindowsLinux操作系统都有与证书相关的功能和机制,但具体的实现和用途可能有所不同。 在Windows操作系统中,证书主要用于数字身份验证和加密通信。Windows提供了一个证书存储库,可以管理和存储各种类型的证书,包括用户证书、计算机证书和根证书。用户证书用于身份验证和授权,计算机证书用于安全通信和远程访问,而根证书用于验证其他证书的有效性。 Windows还提供了一些内置的证书颁发机构(CA),如Microsoft CA和第三方CA,用于签发和管理证书。用户可以使用Windows的证书管理工具来查看和管理自己的证书,如导入、导出、删除和更新等操作Linux操作系统中,证书同样用于数字身份验证和加密通信。Linux通常使用OpenSSL作为主要的加密库,并提供了一套工具和命令行接口来管理证书。与Windows类似,Linux也有一个证书存储库,通常位于/etc/ssl/certs目录下,用于存储系统和应用程序所需的证书文件。 Linux系统中的证书颁发机构可以是公共CA,也可以是私有CA。用户可以使用命令行工具如openssl来生成、签发、导出和验证证书。此外,Linux还支持使用OpenSSH等工具进行基于证书的身份验证和安全通信。 总的来说,无论是Windows还是Linux操作系统,证书在安全通信和身份验证方面都起到重要的作用,并提供了相应的工具和机制来管理和使用证书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值