简述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. Mac搭建SVN服务器+Cornerstone连接服务器

    Mac自带svn,我们只需配置并开启就可以了,打开终端,输入svnserve --version查看svn版本 可以看到我的mac自带的svn版本号为1.9.7,下面开始配置服务器: 1.终端输入su ...

  2. bzoj2369

    题解: 显然把每一个环求出来 然后做一个lcm即可 代码: #include<cstdio> using namespace std; ],f[],n; int gcd(int x,int ...

  3. 最长公共子串和子序列的Python实现,带图示。

    使用矩阵来记录两个子串之间各个字符之间的对应关系. 最长子串:矩阵中数字最大的就是最长子串的长度.若对应位置字符相同,则c[i][j] = c[i-1][j-1] + 1 def longSubStr ...

  4. intellij idea 程序包不可见问题

    刚用intellij idea不久,出现了个程序包不可见的问题. 原因:jdk9的问题,用的是jdk9就会出现这个问题. 解决办法:把jsk9换成jdk1.8就能解决.

  5. MNIST机器学习入门

    "python: 3.5" # -*- coding: utf-8 -*-"""Created on Tue Oct 16 15:29:38 2018 ...

  6. Spring源码学习(8)——SpringMVC

    spring框架提供了构建Web应用程序的全功能MVC模块.通过实现servlet接口的DispatcherServlet来封装其核心功能实现,通过将请求分派给处理程序,同时带有可配置的处理程序映射. ...

  7. makefile笔记4 - makefile命令

    每条规则中的命令和操作系统 Shell 的命令行是一致的. make 会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的. 在命令行之间中的空 ...

  8. 实践作业4 Web测试(软件评测)

    经过我们小组的讨论之后,我们选择的待检测产品为产品三:学校相关网站. 我们测的是华中科技大学软件学院官方网站和华中科技大学计算机学院官方网站. 我们比较的有: 一.功能缺陷一:网页显示信息不全 英文网 ...

  9. 异常处理——java基础

    Evernote Export 异常处理   异常处理的套路模板: try//创建异常处理{   throw new();//抛出异常 //一旦有异常, 抛出异常后,后面的语句不再执行 语句;{ …… ...

  10. Laravel Scout 开启队列, 自定义queue name和queue connection

    scout.php的默认配置: 'queue' => env('SCOUT_QUEUE', false), 修改为: 'queue' => [ 'queue' => env('SCO ...