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

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

作者: 林家振_3cfd | 来源:发表于2018-08-15 08:36 被阅读22次

    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


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

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

    其中FORMATE是格式符号:

    %c:显示字符ASCII码;

    %s:显示字符串;

    %d:显示十进制整数;

    %f:显示浮点型数值;

    %%:显示%本身;

    实例:

    在格式符前面在的字符串会在每个字段前显示,并且这里需要注意的是要手动添加换行符,即\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}】


    这个是显示/etc/passwd中UID大于等于500的用户名和ID号 这个是用来判断用户是普通用户还是系统用户或管理员

    while循环

    语法:while(condition){statements}

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

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

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

    显示/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:提前结束对本行文本的处理,进入下一行的文本处理;

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

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

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

    3.1 内建函数

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

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

    字符串处理:

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

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

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/wpbgvftx.html