systemd新特性介绍以及强大的awk文本处理工具实战演示

1、简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理

systemd的新特性:

  系统引导时实现服务并行启动;

  按需激活进程;

  系统状态快照;

  基于依赖关系定义服务控制逻辑;

  unit常见类型分析;

Service unit:文件扩展名为.service,用于定义系统服务;

Target unit:文件扩展为.target,用于模拟实现“运行级别”;

//centos7没有启动级别,只有被访问时才启动

Device unit:文件扩展名为.device,用于定义内核识别的设备;

mount unit:文件扩展名为.mount,定义文件系统挂载点;

Socket unit:文件扩展名为.socket,用于表示进程间通信用到的socket文件;

Snapshot unit:文件扩展名为.snapshot,管理系统快照;

Swap unit:文件扩展名为.swap,用于标识swap设备;

Automount unit:文件扩展名为.automount,文件系统自动挂载点设备;

Path unit:文件扩展名为.path,用于定义文件系统的文件或目录;

/etc/systemd/system

关键特性

基于socket的激活机制:socket与程序分离;

基于bus(总线)的激活机制;

基于device的激活机制;

基于Path的激活机制;

系统快照:保存各unit的当前状态信息于持久存储设备中;

向后兼容sysv init脚本;

不兼容;

systemctl的命令是固定不变的;

非由systemd启动的服务,systemctl无法与之通信;

/etc/init.d/

管理系统服务:

Centos7:service类型的unit文件;

编译安装Nginx

1、安装软件

yum install zlib-devel pcre-devel

yum groupinstall "开发工具"

tar nginx-1.12.2.tar.gz

cd nginx-1.12.2

./configure --with-pcre --with-zlib

2、启动、重启和关闭

/usr/local/nginx/sbin/nginx //启动

/usr/local/nginx/sbin/nginx -s reload //重启

/usr/local/nginx/sbin/nginx -s stop //关闭

3、实现systemd管理nginx

vim /usr/lib/systemd/system/nginx.service

[Unit]

Description=Nginx Service

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

//这里一定要注意PIDFile的路径,在/usr/local/nginx/conf/nginx.conf配置文件中,默认pid文件放在/usr/local/nginx/logs中,如果写错路径,nginx是无法启动的,报错为:PID file /run/nginx.pid not readable (yet?) after start.

2、描述awk命令用法及示例(至少3例)

Linux文本处理工具三剑客:grep、sed和awk。其中grep是一种文本过滤工具,sed是一种行文字处理工具,而awk是一种报表生成器,就是对文件进行格式化处理,就是对文件内容进行排版,然后显示出来。

在linux上我们使用的GNU awk简称gawk,并且gawk其实就是awk的链接文件,因此在系统上使用awk和gawk是一样的。

awk的运行方式有一下三种:(1)awk命令行   #awk

(2)awk 程序文件

#awk -f /path/frrom/awk_script

(3)awk脚本

#!/bin/awk -f

awk的基本用法;awk [OPTIONS]‘program’FILE1 FILE2...

OPTION:

-F[]:指明输入字段的分隔符

-v VAR_name=value:变量赋值;

-f  /PATH/FROM/AWK_SCRIPT

2.1 awk的输出命令之一:print

用法:print item1,item2,...

item;字符串,用引号引用;

print“hello”,“world”

变量:显示变量的值,可以直接使用变量的名进行引用;

print name

数值:无须加引号

例如:

这里直接输出字符串hello world,因为无须对文本做任何处理,所以启动BEGIN模式。

2变量

    变量分为内建变量和自定义变量

2.1内置变量

    FS:input Field Seperator,输入字段分隔符,默认是空白字符

    RS:input Record Seperator,输入行分隔符,默认是换行符

    OFS:output Field Seperator,输出字段分隔符,默认是空白符

    NF:显示当前行行数

    FNR:行数,各文件单独计数

    ..........

实例:以冒号为分隔符输出/etc/passwd下的用户名和用户ID


systemd新特性介绍以及强大的awk文本处理工具实战演示_第1张图片

2.3  awk的输出命令之二:printf格式化输出

语法:printf FORMATE,item1,item2,...

其中FORMATE是格式符号:

%c:显示字符ASCII码;

%s:显示字符串;

%d:显示十进制整数;

%f:显示浮点型数值;

%%:显示%本身;

实例:

systemd新特性介绍以及强大的awk文本处理工具实战演示_第2张图片

在格式符前面在的字符串会在每个字段前显示,并且这里需要注意的是要手动添加换行符,即\n;

且上述命令在%s中间加-10,表示格式符的修饰符,“-”号表示左对齐,10表示给格式符10个字符的占位空间。


常用ACTION

(1)EXPRESSIONS:例如变量赋值

(2)Control Statements:控制语句,如 if,while等;

(3)Compound Statements:复合语句;

(4)input statements

(5)output statements

if-else

语法: if(condition){statement}【else {statement}】


systemd新特性介绍以及强大的awk文本处理工具实战演示_第3张图片
这个是显示/etc/passwd中UID大于等于500的用户名和ID号


systemd新特性介绍以及强大的awk文本处理工具实战演示_第4张图片
这个是用来判断用户是普通用户还是系统用户或管理员

while循环

语法:while(condition){statements}

条件为真时循环,为假时退出循环;

使用场景:通常在当前行的各字段进行循环


systemd新特性介绍以及强大的awk文本处理工具实战演示_第5张图片

如上图所示,显示/etc/issue中所有字段。


systemd新特性介绍以及强大的awk文本处理工具实战演示_第6张图片

显示/etc/issue中所有字段长度大于5的字段。

do-whlie循环

语法:do{statement}while(condition)

注意:至少执行一次循环体

7.4 for循环

语法:for(expr1;expr2;expr3)statement


使用for循环处理相比while循环更简洁易懂

for(var_name in array){for-body}

switch

switch(expression){case VALUE or /REGEXP/:statement;...;default:statementN}

break and continue

break[n]:退出当前循环,n表示退出第n层循环;

continue:提前结束本轮循环;进入下一轮循环

next:提前结束对本行文本的处理,进入下一行的文本处理;


systemd新特性介绍以及强大的awk文本处理工具实战演示_第7张图片

这里显示的是/etc/passwd文本中行号为偶数的行的用户名和UID。

3、描述awk函数示例(至少3例)

函数分为内建函数和用户自定义函数

3.1 内建函数

数值处理:rand():返回0到1之间的一个随机数;


systemd新特性介绍以及强大的awk文本处理工具实战演示_第8张图片

注意:采用awk内置函数rand()返回随机数后,第一次引用相同的命令还是得到同样的随机数。

字符串处理:

split(s,a,[r]):表示以r为分隔符对匹配到的s字符串进行切割,并将切割到的字段存放在a数组当中。

systemd新特性介绍以及强大的awk文本处理工具实战演示_第9张图片

上图是采用split函数将整行文本以冒号为分隔符进行切割,存放在user这个数组当中,并将user的第一个元素的值,即文本每行的第一个字段打印出来。

时间类函数:systime(),取当前系统时间,结果形式为时间戳。

你可能感兴趣的:(systemd新特性介绍以及强大的awk文本处理工具实战演示)