标签:range 逻辑操作 定义变量 device 语句 大小 lin 命令 分析
1、简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理系统引导时实现服务并行启动;
按需激活进程;
系统状态快照;
基于依赖关系定义服务控制逻辑;
核心概念:unit
unit由其相关的配置文件进行标识、识别和配置;文件中主要包含了系统服务、监听的socket、保存的快照以及其他与init相关的信息;
/usr/lib/system
/run/systemd/system
/etc/systemd/system
unit的常见类型:
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, 用于定义文件系统中的一文件或目录;
关键特性:
基于socket的激活机制;socket与程序分离;
基于bus的激活机制;
基于device的激活机制;
基于Path的激活机制;
系统快照:保存各unit的当前状态信息于持久存储设备中;
向后兼容sysv init脚本;
/etc/init.d/
不兼容:
systemctl的命令是固定不变的;
非有systemctl启动的服务,systemctl无法与之通信;
nginx安装:
[root@silasszl ~]# wget http://nginx.org/download/nginx-1.13.12.tar.gz
[root@silasszl ~]# tar -vzxf nginx-1.13.12.tar.gz -C /usr/local
[root@silasszl ~]# cd /usr/local/nginx-1.13.12/
[root@silasszl nginx-1.13.12]# ./configure
[root@silasszl nginx-1.13.12]# make && make install
配置nginx:
nginx启动、关闭、停止和状态查看:
[root@silasszl ~]# systemctl start nginx.service
[root@silasszl ~]# systemctl restart nginx.service
[root@silasszl ~]# systemctl stop nginx.service
[root@silasszl ~]# systemctl status nginx.service
2、描述awk命令用法及示例(至少3例)
文本三剑客之awk
awk是一种报表生成器,与sed,grep都是文本处理工具,可以将编辑的文本进行格式化排版处理后以更加美观的形式输出。
基本用法:awk [options] ‘program‘ FILE ...
program: PATTERN{ACTION STATEMENTS}
语句之间用分号分隔
选项:
-F:指明输入时用到的字段分隔符;
-v var=value: 自定义变量
print item1, item2, ...
要点:
(1) 逗号分隔符;
(2) 输出的各item可以字符串,也可以是数值;当前记录的字段、变量或awk的表达式;
(3) 如省略item,相当于print $0;
变量
1) 内建变量
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:数组,保存的是命令行所给定的各参数;
2)自定义变量
(1) -v var=value
变量名区分字符大小写;
(2) 在program中直接定义
示例:
printf命令
格式化输出:printf FORMAT, item1, item2, ...
(1) FORMAT必须给出;
(2) 不会自动换行,需要显式给出换行控制符,\n
(3) FORMAT中需要分别为后面的每个item指定一个格式化符号;
格式符:
%c: 显示字符的ASCII码;
%d, %i: 显示十进制整数;
%e, %E: 科学计数法数值显示;
%f:显示为浮点数;
%g, %G:以科学计数法或浮点形式显示数值;
%s:显示字符串;
%u:无符号整数;
%%: 显示%自身;
修饰符:
#[.#]:第一个数字控制显示的宽度;第二个#表示小数点后的精度;
-: 左对齐
+:显示数值的符号
操作符
算术操作符:x+y,x-y,x*y,x/y,x^y,x%y
-x
+x: 转换为数值;
字符串操作符:没有符号的操作符,字符串连接
赋值操作符:=,+=,-=,*=,/=,%=,^=,++,--
比较操作符:>,>=,<,<=,!=,==
模式匹配符:
~:是否匹配
!~:是否不匹配
逻辑操作符:&&,||,!
函数调用:
function_name(argu1, argu2, ...)
条件表达式:
selector?if-true-expression:if-false-expression
PATTERN
(1) empty:空模式,匹配每一行;
(2) /regular expression/:仅处理能够被此处的模式匹配到的行;
(3) relational expression: 关系表达式;结果有“真”有“假”;结果为“真”才会被处理;
真:结果为非0值,非空字符串;
(4) line ranges:行范围,
startline,endline:/pat1/,/pat2/
注意: 不支持直接给出数字的格式
~]# awk -F: ‘(NR>=2&&NR<=10){print $1}‘ /etc/passwd
(5) BEGIN/END模式
BEGIN{}: 仅在开始处理文件中的文本之前执行一次;
END{}:仅在文本处理完成之后执行一次;
示例:
3、描述awk函数示例(至少3例)
awk函数:
函数分为内建函数和用户自定义函数
内建函数:
数值处理:
rand():返回0和1之间一个随机数;
字符串处理:
length([s]):返回指定的字符串长度;
sub(r,s[,t]):基于r所表示的模式来匹配字符串的t中的内容,将其第一次被匹配到内容替换为s所表示的字符串
gsub(r,s[,t]):基于r所表示的模式来匹配字符串t中的内容,将其所有被匹配到的内容均替换为s所表示的字符串;
split(r,s[,t]):以r为分隔符去切割字符串s,并将切割后的结果保存至s表示的数组中;
注意:awk的数组下标从1开始编号,而非0.
#awk ‘{split($0,userinfo,”:””);print userinfo[1]}’/etc/passwd
substr(s,i[,n]):从s所表示的字符串中取子串,取法:从i表示的位置开始,取n个
符;时间类函数:systime(),取当前系统实际按,结果形式为时间戳;
用户自定义函数:
function f_name(p,q) {
…
}
示例:
标签:range 逻辑操作 定义变量 device 语句 大小 lin 命令 分析
原文地址:http://blog.51cto.com/13984342/2321529