别人的Linux私房菜(18)认识系统服务(daemon)
完成服务service的程序称为daemon。完成计划性的服务程序如crond是一个daemon。
早期的System V的init管理daemon操作中,系统内核首先调用init,然后init运行系统服务。
所有的服务脚本放置在/etc/init.d目录下。启动、关闭、重启、状态的命令为:/etc/init.d/daemon start/stop/restart/status
init的服务分为:独立启动模式服务,常驻于内存中。超级守护进程:由特殊的xinetd,inetd两个总管进程提供socket对应或端口管理,唤醒相关的服务。
init不能协助唤醒依赖服务。
init可以根据自定义运行级别唤醒不同的服务。Linux提供了7个运行级别0-6.1单人维护模式,3纯命令行模式,5图形界面。命令级别的切换,如init 5.
init各个运行级别通过/etc/rc.d/rc[0-6]/SXXdaemon链接到/etc/init.d/daemon。链接名为SXXdaemon。XX为数字,依序数字执行,解决依赖性问题。
通过命令确认链接关系,默认启动,不启动,查看启动与否:chkconfig daemon on,chkconfig daemon off,chkconfig --list daemon
systemd并行处理所有服务,加速开机流程,常驻内存,响应就立即处理后续的daemon任务。使用一个systemctl命令。
拥有服务依赖性检查,定义所有的服务为一个服务单位unit,并归于服务类型type(service、socket、target、path、snapshot、timer)
systemd将一类功能集合为一个target,包含多个daemon。
systemd兼容init,init的旧脚本可以通过systemd管理,但在运行级别上没有完全对应(只135部分对应),systemctl不可自定义参数。
管理员手动执行的启动无法被systemd检查和管理。systemd无法通过标准输入输出传递信息。
systemd的配置文件存放目录为和daemon有关:
/etc/lib/systemd/system/:每个服务最主要的启动脚本设置。
/run/systemd/system/:系统执行过程中产生的服务脚本。优先级高。
/etc/systemd/system/:管理员根据主机需求所建立的执行脚本,大多是链接文件,链接到/etc/lib/systemd/system/。优先级更高。
/etc/sysconfig/*:初始化选项写入该目录,如网络设置
/var/lib/:一些会产生数据的服务会写入该目录,如数据库管理
/run/存放daemon的缓存,包括lock和PID文件。
type类型介绍:type以后缀名表示每种服务的类型
service一般服务类型,系统服务中的本地和网络服务。socket,内部程序数据交换服务,传输信息socket文件功能。
target执行环境类型,是unit的合集。mount,automount文件系统挂载相关的服务,path,检测特定文件或目录,如打印服务
timer循环执行的服务,比anacrontab更有弹性。
查看服务状态:如查看atd服务的状态:systemctl status atd.service
状态栏的Active,是active(running)表示正在运行,(exited)表示正常执行一次结束,如挂载,
(waitting)表示正在运行中,等待其它事件发生后继续,如打印。inactive表示未运行。
状态栏的Loaded,是enable表示开机被运行,disable开机不会被运行。
static这个daemon不会自启,可以被其它服务唤醒(如socket,path)。mask无论如何不会被启动。
关闭服务:systemctl stop atd.service(使用kill关闭的服务不建议是正常的服务)
开启服务:systemctl start atd.service
强制服务注销:systemctl mask cups.service
取消注销:systemctl umask cups.service
列出系统上所有启动的unit:systemctl(LOAD开机是否加载,ACTIVE和SUB组合,指代状态栏)
列出所有已经安装的unit:systemctl list-unit-files(根据/usr/lib/systemd/system)
根据unit显示目前启动的unit:systemctl list-units(加上--all显示没有启动的部分)
查询只剩下service的项目:systemctl list-units --type=service --all
查询只剩下target的项目:systemctl list-units --type=target --all
其中的graphical.target加上了图形界面,multi-user.target纯命令行模式,rescue.target额外临时系统
emergency.target紧急处理系统的错误。shutdown.target关机模式,getty,target和设置几个tty有关。
查询目前操作界面模式:systemctl get-default
设置默认模式为纯命令行模式:systemctl set-default multi-user.targe
关闭图形界面改为纯命令行模式:systemctl isolate multi-user.target(isolate隔离不同的模式)
systemctl的其他命令:poweroff关机 reboot重新开机 suspend挂起,状态保存内存 hibernate休眠,状态保存磁盘中
rescue进入恢复模式 emergency进入紧急恢复模式
查询默认操作界面模式的依赖性:systemctl list-dependencies
查询被依赖性:systemctl list-dependencies --reverse
查询图形界面的被依赖性:systemctl list-dependencies graphical.target
查询监听本地需求的socket文件位置:systemctl list-sockets
/etc/services将服务和端口对应(不建议修改,可能导致协议出错)
systemd将很多不被列为daemon的进程纳入到了systemd的管辖检测范围内,产生一个网络端口。
查看打开的网络端口:netstat -tlunp
然后可以查询到对应端口的程序名称,通过systemctl list-units -all | grep xxx查找到该文件对应的服务,
关闭该服务,相对应的端口也关闭,
额外修改服务建议放置的位置:
/etc/lib/systemd/system/:官方发布的默认配置文件,官方不建议修改。(可以改)
/run/systemd/system/xxx.service.d/*:配置相同的文件名和拓展名,然后加d目录,在该目录下的配置文件最好以.conf后缀。这样会累加到官方配置文件。
/etc/systemd/system/xxx.service.wants/*:启动该服务之后建议启动的服务写入
/etc/systemd/system/xxx.service.wants/*:启动该服务之前需要启动的服务依赖项。
cat /usr/lib/systemd/system/sshd.service#查看配置文件
配置文件中的Unit部分为unit说明,
Service部分规范服务启动的脚本,环境配置文件名,启动方式等
Install项目将此unit安装到的位置。
#和;代表注释。设置可以重复设置但是会覆盖。
配置文件的一些说明如下:
管理tty1-6的功能命令由agetty完成。终端的功能实现由getty.target完成,产生tty1-6则是getty@.service提供。
显示getty.target的默认设置值,:systemctl show getty.target
在After选项后,启动了@tty1-6服务。若有相同名称的服务则执行,没有则将@后面的内容替换带入getty@.service中的%I替换执行。
由此简化了多个要执行的启动设置。
tty的数量由/etc/systemd/logind,conf里面进行了规范,NAutoVTs确定。
启动tty8:systemctl restart systemd-login.service
自定义的ftp服务启动:systemctl start vsftpd@vsftpd3.service
systemctl daemon-reload
systemd中的timer服务产生的信息记录到log中,比crond在debug上方便,可以和systemd结合,
也可和control group结合替换/etc/secure/limit.conf限制该任务的资源利用
没有email通知功能,没有随机取样功能。需要timer.target启动,需要sname.service服务存在,需要sname.timer时间服务存在。
在/etc/systemd/system下建立*.timer文件,其中的内容说明如下:
使用OnCalendar的时间格式或口语如下:
建立脚本:
vim /etc/systemd/system/backup.timer
[Unit]
Description=backup my server timer
[Timer]
OnBootSec=2hrs
OnUnitActiveSec=2days
[Install]
WantedBy=multi-user.target
启动,显示执行,状态情况,:
[root@study ~]# systemctl daemon-reload
[root@study ~]# systemctl enable backup.timer
[root@study ~]# systemctl restart backup.timer
[root@study ~]# systemctl list-unit-files | grep backup
[root@study ~]# systemctl show timers.target
[root@study ~]# systemctl show backup.service
[root@study ~]# systemctl show backup.timer
CentOS7然后是默认服务概要,
后面的用到看文档吧。大致就是这样。
别人的Linux私房菜(18)认识系统服务(daemon)的更多相关文章
- 别人的Linux私房菜(13)学习Shell脚本
CentOS6.x以前版本的系统服务启动接口在/etc/init.d/目录下,存放了脚本. Shell脚本因调用外部命令和bash 的一些默认工具,速度较慢,不适合处理大量运算. 执行方式有:直接命令 ...
- 别人的Linux私房菜(22)软件安装:源代码与Tarball
执行make,会在当前目录查找makefile文本文件(记录了源代码如何编译的详细信息). 内核相关的函数信息放置在/usr/lib./usr/lib64里. 在Tarball(一般为xxx.tar. ...
- 别人的Linux私房菜(20)启动流程、模块管理与Loader
系统启动时,首先加载BIOS,通过BOIS读取COMS的硬件信息,进行自我检测,取得第一个可启动的设备(多个根据设置有关). 读取并执行设备内的MBR启动引导程序,引导程序调用boot sector中 ...
- 别人的Linux私房菜(19)认识与分析日志文件
日志文件通常只有root可以读取,解决系统和网络方面的问题. /var/log/boot.log本次开机系统检测和启动硬件,和内核支持的相关功能的信息记录. /var/log/cron计划任务有没有被 ...
- 别人的Linux私房菜(17)进程管理与SELinux初探
程序在磁盘中,通过用户的执行触发.触发事件时,加载到内存,系统将它定义成进程,给予进程PID,根据触发的用户和属性,给予PID合适的权限. PID和登陆者的UID/GID有关.父进程衍生出来的进程为子 ...
- 别人的Linux私房菜(15)磁盘配额与高级文件系统管理
磁盘配额在网站.邮件.文件等服务器常见,主要有针对用户.用户组.限制某一目录的的最大磁盘配额. ext文件系统进能针对整个文件系统配额,xfs可以针对目录配额.配额和文件系统有关. 内核必须支持磁盘配 ...
- 别人的Linux私房菜(14)Linux账号管理和ACL权限设置
用户标识符UID.GID 用户的账号信息,主要是指UID对应.组和GID对应 检查系统中是否存在用户bin:id bin 登录shell验证账号密码的步骤:找到/etc/passwd核对是否存在账号, ...
- 别人的Linux私房菜(23)软件安装RPM、SRPM、YUM
RPM(RedHat Package Manager),不同Linux发行版发布的RPM文件甚至不同版本,不通用. SRPM为Source RPM,所提供的软件内容没有经过编译,格式为xxx.src. ...
- 别人的Linux私房菜(12)正则表达式与文件格式化处理
vi gerp awk sed支持正则表达式 cp ls不支持,只能使用bash本身的通配符 正则表达式分为基础正则表达式和拓展正则表达式 使用正则表达式注意语系的影响 http://cn.lin ...
随机推荐
- python练习题_04
import os def fetch(data): # print('\033[1;43m这是查询功能\033[0m') # print('\033[1;43m用户数据是\033[0m',data) ...
- jeecg之弹窗插件lhgdialog小结
说到弹窗,在jeecg中弹窗用到最多的地方无非是新增/编辑的弹窗. 1.列表页面新增编辑按钮触发的弹窗即lhgdialog,不论是add/update,最终走的都是curdtools.js中的crea ...
- JavaScript Array some() 方法
some 判断数组中是否至少有一个元素满足条件 只要有一个满足就返回true 只有都不满足时才返回false 语法: array.some(function(value,index,array),th ...
- jQuery中删除方法empty(),remove()和detach()的区别
empty():清空匹配的元素集合中所有的子节点,自身节点和事件都未被删除. remove():这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素.但除了这个元素本身 ...
- 初识Attention机制(NLP领域)
Attention 机制. 参考:https://blog.csdn.net/xiewenbo/article/details/79382785 要是关注深度学习在自然语言处理方面的研究进展,我相信你 ...
- LeetCode Smallest Range
数据范围是3500,3500也就是说n的平方是可以接受的.这里告诉你就是有序的,也就是在提醒你可能会是一个类似于二分的算法,所以的话其实基于这两个认识的话我们就可以利用一个枚举叫二分的算法来解决这道题 ...
- 20175314 《Java程序设计》第七周学习总结
20175314 <Java程序设计>第七周学习总结 教材学习内容总结 第八章:常用实用类 String()类代表字符串:Java 程序中的所有字符串字面值(如 "abc&quo ...
- audiounit错误码对应值查询
https://www.osstatus.com/search/results?platform=all&framework=all&search=(错误码的值) EX: https ...
- python note 13 内置函数
1. lst = ["白蛇传","骷髅叹","庄周闲游"] it = lst.__iter__() print(it.__next__()) ...
- 51单片机学习笔记(清翔版)(21)——ADDA数模转换
A:anolog模拟的 D:digital数字的 AD模拟转数字,DA数字转模拟 生活中的基本都是模拟量,如温度,可以是10℃,10.1℃等 手机的背光亮度自动调节,拿到太阳光下,亮度 ...