Linux的systemd特性及gawk使用

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

  • Systemd的新特性:

    系统引导时实现服务并行启动;
        按需激活进程;
        系统状态快照;
        基于依赖关系定义服务控制逻辑;

    核心概念:unit

    unit由其相关配置文件进行标识、识别和配置;文件中主要包含了系统服务、监听的socket、保存的快照以及其它与init相关的信息; 这些配置文件主要保存在:
    /usr/lib/systemd/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的命令是固定不变的;
    非由systemd启动的服务,systemctl无法与之通信

    管理系统服务:

    CentOS 7: service类型的unit文件
    编译安装nginx服务
    安装软件

    [[email protected] ~]# yum install -y pcre pcre-devel openssl-devel
    [[email protected] ~]# useradd nginx
    [[email protected] ~]# passwd nginx
    [[email protected] ~]# tar -vzxf nginx-1.13.3.tar.gz -C /usr/local
    [[email protected] ~]# cd nginx-1.13.3/
    [[email protected] nginx-1.13.3]# ./configure > --group=nginx > --user=nginx > --prefix=/usr/local/nginx > --sbin-path=/usr/sbin/nginx > --conf-path=/etc/nginx/nginx.conf > --error-log-path=/var/log/nginx/error.log > --http-log-path=/var/log/nginx/access.log > --http-client-body-temp-path=/tmp/nginx/client_body > --http-proxy-temp-path=/tmp/nginx/proxy > --http-fastcgi-temp-path=/tmp/nginx/fastcgi > --pid-path=/var/lock/nginx > --with-http_stub_status_module > --with-http_ssl_module > --with-http_gzip_static_module > --with-pcre
    [[email protected] nginx-1.13.3]# make && make install

    编辑文件,实现systemd管理

    [[email protected] nginx-1.13.3]# cat /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

    最后重启并关闭

    [[email protected] nginx-1.13.3]# /usr/local/nginx/sbin/nginx
    [[email protected] nginx-1.13.3]# /usr/local/nginx/sbin -s reload
    [[email protected] nginx-1.13.3]# /usr/local/nginx/sbin -s stop
    • 2、描述awk命令用法及示例(至少3例)

    文本三剑客之awk
    awk是一种报表生成器,与sed,grep都是文本处理工具,可以将编辑的文本进行格式化排版处理后以更加美观的形式输出,在linux上使用的awk是GNUawk即gawk,gawk是awk的套接字文件,二者相同。

    gawk - pattern scanning and processing language

    基本用法:gawk [options] ‘program‘ FILE ...
              program: PATTERN{ACTION STATEMENTS}
        语句之间用分号分隔
    
    选项:
        -F:指明输入时用到的字段分隔符;
        -v var=value: 自定义变量
    1、print
    print item1, item2, ...
    
    要点:
    (1) 逗号分隔符;
    (2) 输出的各item可以字符串,也可以是数值;当前记录的字段、变量或awk的表达式;
    (3) 如省略item,相当于print $0;

    2、变量

    2.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.2 自定义变量
                (1) -v var=value
    
                    变量名区分字符大小写;
    
                (2) 在program中直接定义

    示例:

    [[email protected] ~]# awk -F ‘:‘ ‘{print $1,$3}‘ /etc/passwd
    root 0
    bin 1
    daemon 2
    adm 3
    lp 4
    sync 5
    shutdown 6
    halt 7
    mail 8
    operator 11
    games 12
    ftp 14
    nobody 99
    systemd-network 192
    dbus 81
    polkitd 999
    postfix 89
    sshd 74
    chrony 998
    user1 1001
    hadoop 1006
    bash 1007
    testbash 1008
    basher 1009
    nologin 1010
    centos 1011
    fedoer 1012
    nginx 1013
    
    [[email protected] ~]# awk -v FS=‘:‘ -v OFS=‘#‘ ‘{print $1,$3,$7}‘ /etc/passwd
    root#0#/bin/bash
    bin#1#/sbin/nologin
    daemon#2#/sbin/nologin
    adm#3#/sbin/nologin
    lp#4#/sbin/nologin
    sync#5#/bin/sync
    shutdown#6#/sbin/shutdown
    halt#7#/sbin/halt
    mail#8#/sbin/nologin
    operator#11#/sbin/nologin
    games#12#/sbin/nologin
    ftp#14#/sbin/nologin
    nobody#99#/sbin/nologin
    systemd-network#192#/sbin/nologin
    dbus#81#/sbin/nologin
    polkitd#999#/sbin/nologin
    postfix#89#/sbin/nologin
    sshd#74#/sbin/nologin
    chrony#998#/sbin/nologin
    user1#1001#/bin/bash
    hadoop#1006#/bin/bash
    bash#1007#/bin/bash
    testbash#1008#/bin/bash
    basher#1009#/bin/bash
    nologin#1010#/sbin/nologin
    centos#1011#/bin/bash
    fedoer#1012#/bin/bash
    nginx#1013#/bin/bash

    3、printf命令

            格式化输出:printf FORMAT, item1, item2, ...
    
                (1) FORMAT必须给出;
                (2) 不会自动换行,需要显式给出换行控制符,\n
                (3) FORMAT中需要分别为后面的每个item指定一个格式化符号;
    
                格式符:
                    %c: 显示字符的ASCII码;
                    %d, %i: 显示十进制整数;
                    %e, %E: 科学计数法数值显示;
                    %f:显示为浮点数;
                    %g, %G:以科学计数法或浮点形式显示数值;
                    %s:显示字符串;
                    %u:无符号整数;
                    %%: 显示%自身;
    
                修饰符:
                    #[.#]:第一个数字控制显示的宽度;第二个#表示小数点后的精度;
                        %3.1f
                    -: 左对齐
                    +:显示数值的符号

    4、操作符

            算术操作符:
                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

    示例:

    [[email protected] ~]# awk -F: ‘{$3>=1000?usertype="Common User":usertype="Sysadmin or SysUser";printf "%15s:%-s\n",$1,usertype}‘ /etc/passwd
               root:Sysadmin or SysUser
                bin:Sysadmin or SysUser
             daemon:Sysadmin or SysUser
                adm:Sysadmin or SysUser
                 lp:Sysadmin or SysUser
               sync:Sysadmin or SysUser
           shutdown:Sysadmin or SysUser
               halt:Sysadmin or SysUser
               mail:Sysadmin or SysUser
           operator:Sysadmin or SysUser
              games:Sysadmin or SysUser
                ftp:Sysadmin or SysUser
             nobody:Sysadmin or SysUser
    systemd-network:Sysadmin or SysUser
               dbus:Sysadmin or SysUser
            polkitd:Sysadmin or SysUser
            postfix:Sysadmin or SysUser
               sshd:Sysadmin or SysUser
             chrony:Sysadmin or SysUser
              user1:Common User
             hadoop:Common User
               bash:Common User
           testbash:Common User
             basher:Common User
            nologin:Common User
             centos:Common User
             fedoer:Common User
              nginx:Common User

    5、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{}:仅在文本处理完成之后执行一次;

    示例:
    定义一个数组,里面有三个元素,循环打印里面的元素各一次

    [[email protected] ~]# awk ‘BEGIN{weekday["mon"]="Monday";weekday["tue"]="Tuesday";weekday["wen"]="Wensday";for(i in weekday)print weekday[i]}‘
    Wensday
    Tuesday
    Monday

    显示fstab文件中每个文件系统类型出现的次数,UUID开头的行的第三个字段表示挂载的文件系统类型

    [[email protected] ~]# awk ‘/^UUID\>/{fs[$3]++}END{for(i in fs)print i,fs[i]}‘ /etc/fstab
    xfs 1
    • 3、描述awk函数示例(至少3例)

    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所表示的数组中;

    示例:

    [[email protected] ~]#  netstat -tan | awk ‘/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for (i in count) {print i,count[i]}}‘
    192.168.10.1 1
    0.0.0.0 2
    
    [[email protected] ~]# awk ‘{for(i=1;i<=NF;i++)count[$i]++}END{for(i in count) print i,count[i]}‘ /etc/fstab
    swap 2
    fstab(5), 1
    filesystems, 1
    2018 1
    on 1
    /etc/fstab 1
    5 1
    /boot 1
    more 1
    mount(8) 1
    UUID=38a2a3be-952e-4541-814b-77553d4e9204 1
    pages 1
    ‘/dev/disk‘ 1
    21:24:35 1
    Sep 1
    /dev/mapper/centos-swap 1
    blkid(8) 1
    See 1
    /dev/mapper/centos-root 1
    for 1
    and/or 1
    anaconda 1
    / 1
    findfs(8), 1
    under 1
    Created 1
    0 6
    info 1
    Accessible 1
    # 7
    defaults 3
    xfs 2
    man 1
    are 1
    reference, 1
    by 2
    maintained 1
    Wed 1

    原文地址:http://blog.51cto.com/13929964/2294208

    时间: 2024-07-28 23:09:25

    Linux的systemd特性及gawk使用的相关文章

    Linux的systemd特性及awk使用

    1.简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理Systemd的新特性: 系统引导时实现服务并行启动: 按需激活进程: 系统状态快照: 基于依赖关系定义服务控制逻辑: 核心概念:unit unit由其相关的配置文件进行标识.识别和配置:文件中主要包含了系统服务.监听的socket.保存的快照以及其他与init相关的信息: /usr/lib/system /run/systemd/system /etc/systemd/

    走进Linux之systemd启动过程

    Linux系统的启动方式有点复杂,而且总是有需要优化的地方.传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系统)处理,而基于init的启动系统被认为有效率不足的问题,systemd是Linux系统机器的另一种启动方式,宣称弥补了以传统Linux SysV init为 基础的系统的缺点.在这里我们将着重讨论systemd的特性和争议,但是为了更好地理解它,也会看一下通过传统的以SysV init为基础的系统的Linux启动过程是什么样的.友情提醒一下,syst

    linux下bash特性和基础管理类命令(一)

    bash 的基础特性 1.glob 通配字符         *多个任意字符         ?一个任意字符        []匹配指定范围内的任意单个字符       [^]匹配范围外的任意单个字符      [:lower:]小写字母   #中括号为字符集的一部分,使用时还要加中括号      [:upper:]大写字母     [:alnum:]所有字母     [:digit:]数字     [:space:]空白字符     [:punct:]标点符号 2.组合键     Ctrl+a

    SQL2043N 与 linux的randomize_va_space特性

    自从数据库服务器从redhat4.6升级到redhat5.5之后,在使用TSM备份的时候偶尔会出现SQL2043N 查看错误: [[email protected] ~]$ db2 ? SQL2043N SQL2043N Unable to start a child process or thread. Explanation: Unable to start up the child processes or threads required during the processing of

    linux的shell特性三兼杂记

    shell可以说是一个解释器,同时为代码运行提供了运行环境.并且提供了编程能力 shell没有自己的库,只是写命令调用操作内的小程序命令 bash特性中,bash不支持浮点数,把所有要存储的数据当做字符来进行. linux脚本其实就是一堆命令的堆砌,然后是用程序控制着脚本实施运行. 编程语言的基本结构: 数据,数据存储:变量,数组,等等 表达式:例如赋值语句 语句:顺序语句,选择语句等等 编程风格: 1.过程编程:以指令为中心,数据为指令服务 2.对象编程:以数据为中心,指令服务数据 编译型语言

    Linux 最新SO_REUSEPORT特性

    1.前言 昨天总结了一下Linux下网络编程“惊群”现象,给出Nginx处理惊群的方法,使用互斥锁.为例发挥多核的优势,目前常见的网络编程模型就是多进程或多线程,根据accpet的位置,分为如下场景: (1)单进程或线程创建socket,并进行listen和accept,接收到连接后创建进程和线程处理连接 (2)单进程或线程创建socket,并进行listen,预先创建好多个工作进程或线程accept()在同一个服务器套接字.                        这两种模型解充分发挥了

    Linux Simple Systemd Service Guide

    Simple Systemd Service Guide 主题 Systemd介绍 Systemd基本操作 怎样编写_service_.service文件 怎样部署service Systemd介绍 Linux OS的系统和服务管理者 兼容SysV初始化脚本(init scripts) 提供如下功能特性: 系统启动时系统服务的并行启动 Daemon程序的按需激活 支持系统状态快照(snapshots) 基于依赖的服务控制逻辑 systemd取代RHL7的Upstart,作为默认的init系统 S

    Linux系统基础特性

    一.Linux操作系统说明 1.主流的Linux发行版 Linux发行版有数百种之多,常见的版本有以下几种: 1)RedHat:中国和美洲流行 Redhat 9.0个人版2003年停止更新àFedora Core:6个月更新一次 RedHat Enterprise Linux: RHEL --->社区版CentOS: Community ENTerprise OS 2)Slackware 版本 SuSE(商业.开源两种)--->欧洲流行 SLES:SuSE的商业版 OpenSuSE :SuSE

    Linux高级文本处理之gawk实战(七)

    1.取出linux中eth0的IP地址 [[email protected] ~]# ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}' 192.168.1.8 说明: "+"为正则表达式模式匹配至少重复一次. 2.统计文件中所有行单词出现的次数 [[email protected] ~]# awk ' >{for(i=1;i<=NF;i++) >{count[$i]++}} >END{for(j in count)