Linux 认识系统服务(daemon)

1.什么是daemon?

简单来说daemon就是服务service.有一些服务会加一个d。比如crond,atd服务后面都有一个d,是表示....daemon的意思。

2.systemd使用的Unit分类。

.service        一般类型的服务,主要是系统服务,这也是最常见的服务。

.socket        内部程序的数据交换socket服务。主要进行本机的程序数据交换操作。

.target        执行环境类型,比如:multi-user.target。

.mount        系统文件挂载的相关服务,比如一些自动挂载的文件系统的服务。

.automount        系统文件挂载的相关服务,比如一些自动挂载的文件系统的服务。

.path        检测特定的文件或者目录类型。

.timer        循环执行的服务。有一点向anarcrontab。这是由systemd主动提共的。

3.通过systemctl来管理服务。

比如对服务atd.service 来进行systemctl操作。

1.开始特定的服务命令。

命令:systemctl start atd.service

systemctl start atd.service

 2.查看服务的状态。

命令:systemctl status atd.service

systemctl status atd.service

3.停止特定的服务。

命令:systemctl stop atd.service

systemctl stop atd.service

 4.重新启动特定的服务。

命令:systemctl restart atd.service

systemctl restart atd.service

5.允许服务开机启动。

命令:systemctl enable atd.service

systemctl enable atd.service

6.不允许服务开机启动。

命令:systemctl disable atd.service

systemctl disable atd.service

4.通过systemctl查看系统的所有服务

1.查看系统的所有服务

输入命令:systemclt查看系统的所有的服务

systemclt

 2.查看已经安装的unit服务。

输入命令:systemctl list-unit-files

systemctl list-unit-files

 3.显示指定类型的unit服务。

输入命令:systemctl list-units --type=service

systemctl list-units --type=service

 5.通过systemctl管理不同的操作环境。

1.我们有哪一些操作环境?

通过命令:systemctl list-units --type=target --all        查看有那些系统环境。

systemctl list-units --type=target --all 

2.查看系统的操作环境。

命令:systemctl get-default        查看当前的操作环境。

systemctl get-default 

 这里显示的是图形化操作环境。

 这里显示的是多用户字符界面环境。

3.设置默认的操作环境。

这里设置multi-user.target环境。

命令:systemctl set-default multi-user.target        设置multi-user.target环境。

systemctl set-default multi-user.target 

 开机后就会发现是多用户字符界面。

命令:systemctl set-default multi-user.target        设置multi-user.target环境。

  开机后就会发现是图形化界面。

6.通过systemctl分析各个服务之间的依赖。

1.使用命令查看一个服务的依赖

命令:sudo systemctl list-dependencies atd.service        查看atd服务依赖那些服务。

sudo systemctl list-dependencies atd.service 

2.使用命令查看整个系统的服务依赖

命令:systemctl list-dependencies         查看系统服务之间的依赖。

systemctl list-dependencies 

 3.查看有什么服务依赖这个服务。

命令:systemclt list-dependencies atd.service --reverse        查看依赖atd服务的服务有那些。

systemclt list-dependencies atd.service --reverse  

 7.与systemd的 daemon运行过程中相关文件目录介绍。

文件:/usr/lib/systemd/system /      

安装软件后,默认的启动脚本都在这个目录下,这里的数据最好不要修改。

文件:/run/systemd/system/

系统执行过程中产生的服务脚本,这些脚本的优先级比文件目录:/usr/lib/systemd/system要高。

文件:/etc/systemd/system/

根据需求编写的执行脚本,就比如自己写的一些服务。

文件:/etc/sysconfig/*

所有服务的初始化的一些选项设置都在这个文件目录下面。

文件:/var/lib

一些会产生数据的服务都会将数据写到这个目录下面。

文件:/run

存放了许多的daemon的缓存。

8.systemclt针对service类型的配置文件。

1.systemctl配置文件的设置项目简介。

比如查看atd.service的服务编写如下:

命令:cat /usr/lib/systemd/system/atd.service         查看atd.service 的配置文件。

cat /usr/lib/systemd/system/atd.service  

配置文件说明:

[Unit]

unit本身的说明,以及其他依赖daemon的设置,包括在什么时候启动此unit之类的设置。

设置参数如下:

Description               :

 当我们使用systemctl list-units的时候,会输出一些管理员看的简易说明,这些说明就是写在Description后面的。

Documentation        :

主要提供文件查询功能,比如:

        Documentation=systemd - ArchWiki

After                       :

说明此unit在哪个daemon启动之后才会启动的意思。

Before                    :

与After相反

Requires                :

设置此unit的依赖服务(daemon)

Wants                    :

设置此unit的依赖服务(daemon),但又不是必须需要的服务。

Conflicts                :

代表冲突的服务。

[Service][Socket][Timer][Mount][Path]

设置参数如下:

Type                        :

说明daemon的启动方式有如下几种类型:

        simple:默认启动,这个daemon主要由ExecStart接命令启动,启动后放在内存中。

        forking:复制启动,由ExecStart启动的程序通过spawns扩展出其他的子程序来作为此daemon的主要服务,原始的父进程在启动后就会终止。

        oneshot:和simple类似,但启动后直接结束,不会继续放在内存中。

        dbus:与simple类型,但启动后必须要获取到一个D-Bus名称后才会继续运行。

        idle:与simple类似,但是启动这个daemon必须要所有的工作都顺利执行完毕后才会执行。

EnviromentFile        :

可以指定启动脚本的环境配置文件。

ExecStart                :

就是实际启动此daemon的命令或者脚本程序的位置。

ExecStartPre           :

ExecStart启动之前的一些操作命令或者是脚本程序的位置。

ExecStartPost           :

ExecStart启动之后的一些操作命令或者是脚本程序的位置。

ExecStop                :

与systemctl stop 之后的一些命令或者操作脚本位置。

ExecReload             :

与systemctl reload 后的一些命令或者操作脚本位置。

Restart                        :

当设置Restart = 1 的时候,当此daemon关闭以后又会重新启动此服务,除非强制终止。

RemainAfterExit        :

当设置RemainAfterExit = 1 的时候,当这个aemon关闭以后,此服务会再次尝试启动,对Type=oneshot很有用。

TimeoutSec        :

如果因为某些错误无法顺利运行,经过多少秒才能进入强制结束。

KillMode                :

        process        终止ExecStart后面的命令的进程。

        control-group        终止此服务产生的所有子进程。

        none        此服务没有进程会被关闭。

RestartSec        :

表示睡眠多长时间重新启动。默认是100ms

不同的unit类型有不同的设置项目,比如我们使用的atd.service 来当做模板,所以这边应该设置成Service。

这个项目主要用来规范服务启动的脚本,环境变量,重新启动等。

[Install]

设置的参数如下:

WantedBy        :

表示依附于哪个target,后面一般设置成* .target         比如设置成multi-user.target

Also        :

当前unit本身被enable时,Also后面的unit也会被enable的意思。

Alias        :

运行一个链接的别名的意思。

表示此项目安装的哪个target里面。

9.自己制作一个服务(daemon)

1.在自己本地新建一个welcome.sh文件

2.输入如下内容。

3.设置可执行权限。

 4.编写一个服务在/etc/systemd/system/welcome.service

5.输入如下内容。

6.重新加载服务

命令:systemctl daemon-reload

 7.开始welcome.service 服务。

 8.查看welcome.service的服务状态。

9.查看服务运行的结果。

成功完成自己做的服务。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值