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

    1. 系统引导时实现服务启动;
    2. 按需激活进程;
    3. 系统状态快照;
    4. 基于依赖关系定义服务控制逻辑;
  • 核心概念:unit(单元)
    1. unit由其相关配置文件进行标识、识别和配置;文件中主要包含了系统服务、监听socket、保存的快照以及其他与init相关信息;这些配置文件主要保存在:

      /usr/lib/systemd/system

      /run/systemd/system
  • 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. 安装软件
[root@localhost ~]yum install -y pcre
[root@localhost ~]yum install -y pcre-devel
[root@localhost ~]yum install -y openssl-devel
[root@localhost ~]useradd nginx
[root@localhost ~]passwd nginx
[root@localhost ~]tar -vzxf nginx-1.11.3.tar.gz -C /usr/local
[root@localhost ~]cd nginx-1.11.3/
[root@localhost nginx-1.11.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/run/nginx.pid \
> --lock-path=/var/lock/nginx \
> --with-http_stub_status_module \
> --with-http_ssl_module \
> --with-http_gzip_static_module \
> --with-pcre
[root@localhost nginx-1.11.3]# make &&make install

2.启动、重启、关闭

[root@localhost ~]/usr/local/nginx/sbin/nginx  //启动
[root@localhost ~]/usr/local/nginx/sbin -s reload //重启
[root@localhost ~]/usr/local/nginx/sbin -s stop //关闭

3.实现systemd管理nginx

[root@localhost ~]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
描述awk命令用法及示例(至少3例)
  • 简介

    awk是一个强大的文本分析工具,相当于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。awk就是把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
  • 使用方法

    awk [options] 'scripts' file1,file2, ...

    指定选项,指定报告格式化后的脚本,最后指定文件内容的来源;这表示它可以从多个文件中读取文本信息,之后根据所指定的脚本,将其格式化为特定格式,最后显示出来;脚本的格式一般分为两部分组成,如下:

    awk [options] 'PATTERN {action}' file1,file2,...

    脚本主要由PATTERN和action组成,PATTERN叫模式,这就意味着它并不是对文件中的每一行都进行处理,而仅仅是处理那些能够被模式匹配到的行。行匹配到以后就action,也就是做出相应处理,一般最常见的处理机制是打印出来。常用的打印命令有print和printf可以自定义显示格式,如显示的宽度,显示为字符串还是数值等。

    -awk基本处理机制

    一次从文件读取一行文本,awk会对其自动进行切片, 将每一行按字符串的分隔符进行切割。如这一行是this is test,它会默认使用空白字符放分隔符,不管空了几格,这样这一行就会分成四片,一片中保存一个单词,而这四片在awk中可以使用一个变量来引用,这个变量相关于脚本中的位置参数;

    $1,$2...$0

    -测试
[root@qingcheng-app3 lgp]# vim awk.txt
this is a test
this[root@qingcheng-app3 lgp]# awk '{print $1,$2}' awk.txt
this is
[root@qingcheng-app3 lgp]# awk '{print $1}' awk.txt
this
[root@qingcheng-app3 lgp]# awk '{print $2}' awk.txt
is

指定分隔符的选项用-F,如-F:,表示以冒号为分隔符。另外还可以指定输出分隔符,如下:

[root@qingcheng-app3 lgp]# awk '{OFS=":"}{print $1,$2}' awk.txt

this:is

print的使用格式

print item1,item2,...

如果想在中间插入文本可按下面方法,在要插入的位置使用双引号引起要显示的内容即可:

[root@qingcheng-app3 lgp]# awk 'BEGIN {print "line one\nline two\nline three"}'

line one

line two

line three

//打印三行文本,\n表示换行

[root@qingcheng-app3 lgp]# awk -F: '{print $1,$2}' /etc/passwd

//以冒号为分隔符,打印passwd的第一段和第二段

  • awk变量

    常用内置变量之记录变量

    FS:field separtor,读取文本时,所使用的字段分隔符

    RS:Record separator,输入文本信息所使用的换行符

    OFS:Output Filed Separator,输出字段分隔符

    ORS:Output Row Separator,输出行分隔符

  • awk内置变量之数据变量

    NR:The number of input records,awk命令所记录数。相当于当前的文件,他处理到多少行。如果有多个文件,这个数目会吧处理的多个文件中统一计数。

    NF:Number of field,当前记录的field个数,统计正在处理的当前行有多少字段

    FNR:与NR不同的是,RNR用于记录正处理的行是当前这一文件中被总共处理的行数

    ARGV:数组

    ARGC:awk命令参数的个数

    FILENAME:awk命令所处理的文件的名称

    ENVIRON:当前shell环境变量及其值的关联数组

  • 示列

    [root@qingcheng-app3 lgp]# awk '{print NF}' awk.txt

    4

    //显示一共有几个字段

    [root@qingcheng-app3 lgp]# awk '{print NR}' awk.txt

    1

    //NR是绝对计数u,显示行号

  • 用户自定义变量

    gawk允许用户自定义自己的变量以便在程序代码中使用,变量名命名规则与大多数编程语言相同,只能使用字母、数字和下划线,且不能以数字开头。gawk变量名称区分字符大小写;要定义变量,只要在BEGIN模式中加入变量名等于变量值即可或在命令行中用-v选项定义变量

    [root@qingcheng-app3 ~]# awk -v test="hello awk" 'BEGIN{print test}'

    hello awk

    [root@qingcheng-app3 ~]# awk 'BEGIN{var="variable testing";print var}'

    variable testing

    //在awk中打印变量值是不用加$$的,加$符是打印字段。后面不带文件,只是做一个简单的演示的时候常用BEGIN。另外,在{}中定义变量时,系统会识别为两个语句,要用分号隔开。

  • printf命令的使用格式

    printf format, item1,item2,...

    要点:

    a、与print命令的最大不同是,print需要指定format

    b、format用户指定后面每个item的输出格式

    c、printf语句不会自动打印行符,如果需要换行,要加\n

    format格式的指示符都以%开头,后面跟一个字符,如下:

    %c:显示字符的ASCII码

    %d,%i:十进制整数

    %e,%E:科学计数法显示数值

    %f:显示浮点数

    %g,%G:以科学计数法的格式或浮点数的格式显示数值

    %s:显示字符串

    %u:无符号整数

    %%:显示%本身

    修饰符

    N:显示宽度

    -:左对齐,不用一时是右对齐

    +:显示数值符号

    示列:

    awk -F: '{printf "%-15s, %-10s\n",$1 $3}' /etc/passwd

    //显示$1和$2时,$1左对齐显示15个字符串,没有内容就显示空白,显示$3时用10个字符,换行显示。这里还会显示一个逗号,这里是-15s后面的逗号

    awk -F:'{printf "%-5d\n",$3}' /etc/passwd

    //以十进制显示每个用户的ID号,做对齐

描述awk函数示例(至少3例)
  • 可用函数rand()

    示列:

    awk 'BEGIN{print rand()}

    //使用rand()函数只能随机产生一个数字,这个数字是不会变的

    awk 'BEGIN{strand();print rand()}' //配合使用strand()函数,才生成一个大于0小于1的随机数 awk 'BEGIN{strand();print int(100*rand())}'

    //生成一个小于100的随机整数。使用strand()与rand()乘以100可以得到一个随机的整数随机数,用int是为了截取整数部分,如果没有int,生成的数字会有小数部分。
  • 字符串函数

    用gsub或sub函数替换某些文本

    [root@qingcheng-db ~]# vim test.txt

    Allen phillips

    Green Lee

    William Lee

    william ken Allen

    [root@qingcheng-db ~]# awk '{gsub("l","L",$1);print $0}' test.txt

    ALLen phillips

    Green Lee

    WiLLiam Lee

    wiLLiam ken Allen

    //用gsub函数将小写l替换成大写L,但是替换范围只限于第一列

    [root@qingcheng-db ~]# awk '{gsub("[a-z]","6",$1);print $0}' test.txt

    A6666 phillips

    G6666 Lee

    W666666 Lee

    6666666 ken Allen

    //将第一段中的小写字母替换为6,并显示全部

    [root@qingcheng-db ~]# awk '{sub("l","L",$1);print $0}' test.txt

    ALlen phillips

    Green Lee

    WiLliam Lee

    wiLliam ken Allen

    //sub指挥替换指定范围内第一次匹配到的符号条件的字符,也就是第一段的第一个小写l

systemd的新特性及unit常见类型分析与awk用法示列的更多相关文章

  1. 简述systemd的新特性及unit常见类型分析、使用systemd管理编译安装的nginx

    1. systemd新特性 并行处理(同时启动)所有服务. 基于依赖关系定义的服务控制逻辑 系统状态快照 按需激活进程,只有第一次被访问时才会真正启动: 2. systemd的常见unit类型 Ser ...

  2. systemd的新特性及常见的systemd unit类型分析

    systemd概述 )systemd是一种新的linux系统服务管理器,用于替换init系统,能够管理系统启动过程和系统服务,一旦启动起来,就将监管整个系统.在centos7系统中,PID1被syst ...

  3. Java 8 新特性之泛型的类型推导

    1. 泛型究竟是什么? 在讨论类型推导(type inference)之前,必须回顾一下什么是泛型(Generic).泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据 ...

  4. mysql8.0 新特性,对json类型的常用操作

    mysql8 新特性-json数据类型操作 -- 根据key(可多个)获取value SELECT JSON_EXTRACT('{"id": 14, "name" ...

  5. 使用C#的新特性:可空类型

    随着C#语言最新标准的出炉,现在它也提供了对可空类型的支持.这个小变化将会在处理那些包括可选项的数据库记录时非常有用.当然在其他地方,它也是非常有用的. 简单说来,可空数据类型就是包含了所定义的数据类 ...

  6. java8 新特性 -Optional的常见用法

    1. Optional 一. 简介 Opitonal是java8引入的一个新类,目的是为了解决空指针异常问题.本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为 ...

  7. Java8新特性 重复注解与类型注解

    import java.lang.annotation.Repeatable; import java.lang.annotation.Retention; import java.lang.anno ...

  8. 2020了你还不会Java8新特性?(五)收集器比较器用法详解及源码剖析

    收集器用法详解与多级分组和分区 为什么在collectors类中定义一个静态内部类? static class CollectorImpl<T, A, R> implements Coll ...

  9. C++11新特性之二——std::bind std::function 高级用法

    /* * File: main.cpp * Author: Vicky.H * Email: eclipser@163.com */ #include <iostream> #includ ...

随机推荐

  1. bzoj1688

    题解: 暴力枚举生哪一些病 然后判断一下即可 代码: #include<bits/stdc++.h> using namespace std; ,D=; int d,k,n,a[N][D] ...

  2. javascript数据基本类型和引用数据类型区别

    基本类型和引用数据类型区别 1.基本数据类型和引用数据类型 javascript中有两种数据类型,分别是基本数据类型和引用数据类型: 基本数据(原始数据)类型指的是简单的数据段,而引用数据类型则指的是 ...

  3. Unity3d KeyCode 键盘各种键值详情

    KeyCode :KeyCode是由Event.keyCode返回的.这些直接映射到键盘上的物理键. 值        对应键 Backspace     退格键 Delete      Delete ...

  4. 安装SQl Server 报错 "需要 Microsoft.NET Framework 3.5 ServicePack 1" 解决方法

    前言 之前装Sql Server都没遇到过这样的问题, 昨天重装了系统之后, 然后安装SQl Server 报错,提示 "需要 Microsoft.NET Framework 3.5 Ser ...

  5. HTML5 Canvas绚丽的小球详解

    实例说明: 实例使用HTML5+CSS+JavaScript实现小球的运动效果 掌握Canvas的基本用法 技术要点: 从需求出发 分析Demo要实现的功能 擅于使用HTML5 Canvas 参考手册 ...

  6. webpack 大概

    entry output loader: rules: [ {test:匹配文件格式,  use: 使用的loader}, {test:匹配文件格式,  use: 使用的loader}, ...//l ...

  7. transfer model derived to fk model format

    It should be noted that when using fk, the definition of model format is as belows: 1: 2: when using ...

  8. effective_java 第34条:用接口模拟可伸缩的枚举

    例如: /** * 加减乘除枚举 * Created by yulinfeng on 8/20/17. */ public enum Operation { PLUS { double apply(d ...

  9. 牛客练习赛 43 B-Tachibana Kanade Loves Probability

    链接:https://ac.nowcoder.com/acm/contest/548/B 题目描述 立华奏在学习初中数学的时候遇到了这样一道大水题: “设箱子内有 n 个球,其中给 m 个球打上标记, ...

  10. callback回调函数的理解

    callback采用的设计模式是:模板模式,他的设计理念是基于面向对象中的多态的. 我们的程序中走到某个地方他会出现不一样的动作的时候,我们在这儿就使用回调函数.我们利用的就是 多态的原理,我们传递不 ...