- 系统引导时实现服务并行启动;
- 按需激活进程;
- 系统状态快照;
- 基于依赖关系定义服务控制逻辑;
- 基于socket的激活机制:socket与程序分离;
- 基于bus的激活机制;
- 基于device的激活机制;
- 基于Path的激活机制;
- 系统快照:保存各unit的当前状态信息于持久存储设备中;
- 向后兼容sysv init脚本; /etc/init.d/
- /usr/lib/systemd/system
- /run/systemd/system
- /etc/systemd/system
- Service unit:文件扩展名为.service,用于定义系统服务;
- Target unit:文件扩展为.target,用于模拟实现“运行级别”;
- Device unit: .device,用于定义内核识别的设备;
- Mount unit: .mount,定义文件系统挂载点;
- Socket unit: .socket,用于标识进程间通信用到的socket文件;
- Snapshot unit: .snapshot, 管理系统快照;
- Swap unit: .swap, 用于标识swap设备;
- Automount unit: .automount,文件系统自动点设备;
- Path unit: .path, 用于定义文件系统中的一文件或目录
- 简介 控制系统和管理服务工具
- 格式
-
- systemctl [OPTIONS…] COMMAND [NAME…]
- 常见用法
-
- 启动:systemctl start NAME.service
- 停止:systemctl stop NAME.service
- 重启:systemctl restart NAME.service
- 状态:systemctl status NAME.service
- 条件式重启:systemctl try-restart NAME.service
- 重载或重启服务: systemctl reload-or-restart NAME.servcie
- 重载或条件式重启服务:systemctl reload-or-try-restart NAME.service
- 查看某服务当前激活与否的状态: systemctl is-active NAME.service
- 查看所有已激活的服务:systemctl list-units –type service
- 查看所有服务(已激活及未激活): chkconfig –lsit ==> systemctl list-units -t service –all
- 设置服务开机自启:systemctl enable NAME.service
- 禁止服务开机自启:systemctl disable NAME.service
- 查看某服务是否能开机自启:systemctl is-enabled NAME.service
- 禁止某服务设定为开机自启: systemctl mask NAME.service
- 取消此禁止: systemctl unmask NAME.servcie
- 查看服务的依赖关系:systemctl list-dependencies NAME.service
- 运行级别:CentOS7并没有很明显的级别概念,更多的只是为了兼容CentOS5,CentOS6。
-
- 0 ==> runlevel0.target, poweroff.target 两种写法都是等价的,下同
- 1 ==> runlevel1.target, rescue.target
- 2 ==> runlevel2.tartet, multi-user.target
- 3 ==> runlevel3.tartet, multi-user.target
- 4 ==> runlevel4.tartet, multi-user.target
- 5 ==> runlevel5.target, graphical.target
- 6 ==> runlevel6.target, reboot.target
- 级别切换
-
- systemctl isolate NAME.target
- 级别查看
-
- systemctl list-units –type target
- 查看所有级别
-
- systemctl list-units -t target -a
- 获取默认运行级别:
-
- systemctl get-default
- 修改默认运行级别
-
- systemctl set-default NAME.target
- 切换至紧急救援模式
-
- systemctl rescue
- 切换至emergency模式
-
- systemctl emergency
-
- systemctl emergency
- 关机: systemctl halt, systemctl poweroff
- 重启: systemctl reboot
- 挂起: systemctl suspend
- 快照: systemctl hibernate
- 快照并挂起: systemctl hybrid-sleep
- 文件通常有三部分组成:
-
- [Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等;以下是一些常见选项
-
-
- Description:描述信息;服务的文档,可以是一个或多个文档的URL路径。;
- After:定义unit的启动次序;表示当前unit应该晚于哪些unit启动;其功能与Before相反;
- Requies:依赖到的其它units;强依赖,被依赖的units无法激活时,当前unit即无法激活;
- Wants:依赖到的其它units;弱依赖,其他units启动失败并不影响当前unit启动;
- Conflicts:定义units间的冲突关系,与这个模块有冲突的模块,如果列出模块中有已经在运行的,这个服务就不能启动,反之亦然;
-
- [Service]:与特定类型相关的专用选项;此处为Service类型;以下是一些常用选项
-
- Type:服务的类型,常用的有 simple(默认类型) 和 forking。默认的 simple 类型可以适应于绝大多数的场景,因此一般可以忽略这个参数的配置。而如果服务程序启动后会通过 fork 系统调用创建子进程,然后关闭应用程序本身进程的情况,则应该将 Type 的值设置为 forking,否则 systemd 将不会跟踪子进程的行为,而认为服务已经退出。; 类型有以下几种
-
-
- simple:默认,表示execstart启动的进程就是主进程
- forking:表示execstart启动父进程的一个子进程为主进程,启动完成之后父进程会退出
- oneshot:执行一次之后就退出
- dbus:
- notify:
- idle:
-
-
- EnvironmentFile:环境配置文件;
- ExecStart:指明启动unit要运行命令或脚本; ExecStartPre, ExecStartPost
- ExecStop:指明停止unit要运行的命令或脚本;
- Restart:指名重启unit需要运行的命令或脚本
- [Install]:定义由“systemctl enable”以及”systemctl disable“命令在实现服务启用或禁用时用到的一些选项;
-
-
- Also:当这个服务被enable/disable时,将自动enable/disable后面列出的每个模块。
- RequiredBy:和前面的 Requires 作用相似,同样后面列出的不是服务所依赖的模块,而是依赖当前服务的模块;
- WantedBy:和前面的 Wants 作用相似,只是后面列出的不是服务所依赖的模块,而是依赖当前服务的模块。
-
- -F:指明输入时用到的字段分隔符;
- -v var=value: 自定义变量;
- -f program-file :可以用-f指定编写了awk程序的文件
- 逗号分隔符;
- 输出的各item可以字符串,也可以是数值;当前记录的字段、变量或awk的表达式;
- 如省略item,相当于print $0;
- FS:input field seperator,输入字段分隔符,默认为空白字符;
- OFS:output field seperator,输出字段分隔符,默认为空白字符;
- RS:input record seperator,输入记录分隔符,输入时的换行符;
- ORS:output record seperator,输出记录分隔符,输出时的换行符;
- NF:number of field,字段数量 {print NF}, {print $NF}
- NR:number of record, 行数;
- FNR:各文件分别计数;行数;
- FILENAME:当前文件名;
- ARGC:命令行参数的个数;
- ARGV:数组,保存的是命令行所给定的各参数;
- -v var=value
- 在program中直接定义
- FORMAT必须给出;
- 不会自动换行,需要显式给出换行控制符,\n
- FORMAT中需要分别为后面的每个item指定一个格式化符号;
- %c: 显示字符的ASCII码;
- %d, %i: 显示十进制整数;
- %e, %E: 科学计数法数值显示;
- %f:显示为浮点数;
- %g, %G:以科学计数法或浮点形式显示数值;
- %s:显示字符串;
- %u:无符号整数;
- %%: 显示%自身;
- #[.#]:第一个数字控制显示的宽度;第二个#表示小数点后的精度; %3.1f
- -: 左对齐
- +:显示数值的符号
- 操作符:
-
- x+y
- x-y
- x*y
- x/y
- x^y
- x%y
- -x
- +x: 转换为数值;
- 赋值操作符:
-
- =:直接赋值
- +=:例如x+=5,等价于x=x+5
- -=:例如x-=5,等价于x=x-5
- *=:例如x*=5,等价于x=x*5
- /=:例如x/=5,等价于x=x/5
- %=:例如x%=5,等价于x=x%5,对5取余
- :自增;例如i;等价于i=i+1
- –:自减;例如i–;等价于i=i-1
- 比较操作符:
-
- >:大于比较
- >=:大于等于
- <:小于比较
- <=:小于等于
- !=:不等于
- ==:等于
- 模式匹配符:
-
- ~:是否匹配
- !~:是否不匹配
- 逻辑操作符:
-
- && 与
- || 或
- ! 非
- 函数调用:
-
- function_name(argu1, argu2, …)
- 条件表达式:
-
- selector?if-true-expression:if-false-expression
- empty:空模式,匹配每一行;
- /regular expression/:仅处理能够被此处的模式匹配到的行;
- relational expression: 关系表达式;结果有“真”有“假”;结果为“真”才会被处理;
- line ranges:行范围,
- startline,endline:/pat1/,/pat2/
- BEGIN/END模式
-
- BEGIN{}: 仅在开始处理文件中的文本之前执行一次;
- END{}:仅在文本处理完成之后执行一次;
- if-else
- while循环
- do-while循环
- for循环
-
- for(expr1;expr2;expr3) statement
- for(variable assignment;condition;iteration process) {for-body}
- for(var in array) {for-body} 遍历数组
- switch语句
- break和continue
-
- break[n] 表示退出n层循环,默认退出本层本层循环
- continue[n]表示退出本层循环
- next
- 可使用任意字符串;字符串要使用双引号;
- 如果某数组元素事先不存在,在引用时,awk会自动创建此元素,并将其值初始化为“空串”;
- 内置函数
-
- 常用的数值处理函数
-
-
- rand():返回0和1之间一个随机数;
-
-
- 常用的字符串处理
-
-
- length([s]):返回指定字符串的长度;
- sub(r,s,[t]):以r表示的模式来查找t所表示的字符中的匹配的内容,并将其第一次出现替换为s所表示的内容;
- gsub(r,s,[t]):以r表示的模式来查找t所表示的字符中的匹配的内容,并将其所有出现均替换为s所表示的内容;
- split(s,a[,r]):以r为分隔符切割字符s,并将切割后的结果保存至a所表示的数组中;
-
- 自定义函数
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104631