第八周作业

栏目: 服务器 · 发布时间: 6年前

内容简介:配置文件目录:不兼容: systemctl的命令固定不变的:非由systemd启动的服务,systemctl无法与之通信.注意: 对于心差un关键的unti文件或修改了的unit文件,要通知systemd重载此配置文件

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

systemd是Centos7版本中的init守护进程,unit由其它相关配置文件标识.识别和配置,文件中主要包含系统服务.监听的socket.保存的快照以及其它与init相关的信息.

systemd的新特性:

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

配置文件目录: /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无法与之通信.

配置及三字段的常用选项:

  • ·[Unit]: 定义与Unit类型无关的通用选项。用于体统unit的描述信息,unit行为及依赖关系等。
    • Description:描述信息,意义性描述。
    • After:定义unit的启动次序,表示当前unit应该晚于哪些unti启动,其功能与Before相反
    • Requies:依赖到的其他units,前依赖,被依赖的units无法激活时,当前unit即无法激活。
    • Wants:依赖到其他units,弱依赖,无论依赖的units是否激活,都不影响当前units激活。
    • Conflicts:定义units间冲突关系。
  • ·[Service]:与特特定类型相关的专用选项,此处为Service类型。
    • Type:用于定义影响ExecStart及相关阐述的功能的unit进程启动类型。
      • simple
      • forking
      • oneshot
      • dbus
      • notify
      • idle
    • Enviuronmentfile:环境配置文件
    • ExecStart:指定启动unit要运行命令或脚本, ExesStartPre,ExecStartPost
    • ExecStop:指明停止unit要运行的命令或脚本。
    • Restart
  • ·[Install]: 定义由”systmectl enable”以及”systemctl disable”命令在实现服务启动或禁用时用到的一些选项。
    • Alias:
    • RequiredBy:被哪些units所依赖,强
    • WantedBy:被哪些units所依赖,弱

注意: 对于心差un关键的unti文件或修改了的unit文件,要通知systemd重载此配置文件

重载命令 ~]# systemctl daemon-reload

系统管理服务:

unit的7️个运行级别: 0:runleve10.target,系统为停机状态  1: runleve11.target,单用户工作状态,多用于系统维护  2:runleve12.target,多用户状态,NFS未开启  3:runleve13.target,多用户状态,NFS已开启,进入命令行模式  4:runleve14.target,系统挂起  5:runleve15.target,图形控制模式 * 6:runleve16.target,关闭系统并重新启动

级别切换命令:

~]# init #
 或
 ~]# init systemctl isolate name.target

查看当前级别:

~]# runlevel
 或
 ~]# systemctl list-units --ttype target

查看所有级别:

~]# systemctl list-units -t target -a

获取默认运行级别:

~]# systemctl get-default

修改默认运行级别:

~]# systemctl set-default NAME.target

切换至紧急救援模式:

~]# systemctl rescue

切换至emergency模式:

~]# systemctl emergency

常用命令:

  • 关机:systemctl halt || systemctl poweroff
  • 重启:systemctl reboot
  • 挂起:systemctl suspend
  • 快照:systemctl hibernate
  • 快照并挂起: systemctl hybrid-sleep

示例:

systmectl 管理 nginx

nginx的准备及编译安装地址: (——————–)

1、编辑配置文件 /usr/lib/systemd/system/

~system]# vim nginx.service

2、nginx.service配置信息内容

[unit]
 Description=nginx
 After=network.target
 
 [Service]
 Type=forking
 ExecStart=/usr/local/nginx/sbin/nginx
 ExecReload=/usr/local/nginx/sbin/nginx -s reload
 ExecStop=/usr/local/nginx/sbin/nginx -s quit
 PrivateTmp=true
 
 [Install]
 WantedBy=multi-user.target

控制nginx的常用命令

启动nginx

~]# systemctl start nginx.service (service可省略)

停止nginx

~]# systemctl stop nginx

重启nginx

~]# systemctl restart nginx

systemd 管理 apache httpd

yum 环境支持包:

~]# yum -y install apr apr-util pcre pcre-devel

官方网站 http://httpd.apache.org/

~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.33.tar.gz
 
 ~]# cd  httpe-2.4.33
 
 ~]# ./configure 
 
 ~]# make && make install

systemd 服务管理命令配置文件/usr/lib/systemd/system 下的 httpd.service

[Unit]
 Description=The Apache HTTP Server
 After=network.target remote-fs.target nss-lookup.target
 Documentation=man:httpd(8)
 Documentation=man:apachectl(8)
 
 [Service]
 Type=notify
 EnvironmentFile=/etc/sysconfig/httpd
 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
 ExecStop=/bin/kill -WINCH ${MAINPID}
 # We want systemd to give httpd some time to finish gracefully, but still want
 # it to kill httpd after TimeoutStopSec if something went wrong during the
 # graceful stop. Normally, Systemd sends SIGTERM signal right after the
 # ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
 # httpd time to finish.
 KillSignal=SIGCONT
 PrivateTmp=true
 
 [Install]
 WantedBy=multi-user.target

启动服务

~]# systemctl start httpd.service

停止服务

~]# systemctl stop httpd

重启服务

~]# systemctl restart httpd

参考资料:

马哥 linux 笔记 网络笔记

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

文本三剑客之 awk

awk是一种报表生成器,可以将编辑的文本进行格式化排版处理后以更加美观的形式输出。在linux上使用的awk是GUN awk简称gawk。gawk是awk的套接字文件因此两者相同。

gawk – pattern scanning and processing language(模式扫描及处理语言)

gawk是一种过程式编程题语言,并且支持:

  • 条件判断
  • 数组
  • 循环也可以称为脚本语言解释器

基本用法:

gawk [OPTIONS] ‘program’ FILE …

OPTIONS选项:

  • -F[]:指明输入字字段分隔符;
  • -v VAR_NAME=VALUE:变量赋值;
  • -f/PATH/FRPM/AWKSCRIPT;

程序program:PATTERN{ACTION STATEMENTS}

  • 译-程序:模式{动作语句}

动作语句即用法 :

1、 print

用法: print item1,item2,…

item1值 可作为字符串,用双引号引用  作为变量被引用 * 数值引用,无需添加引号

注意及要点: item值需要使用单引号。  多个item之间需要使用逗号分隔,逗号显示为空白符。  print $0显示整段内容时,$0可忽略不写  输出的item值可以为字符串或数字、当前记录的字段($#)、变量或awk的表达式会转换为对应的字符串显示。 * 输出空白行可使用 awk ‘{print “” }’。

示例:

1、打印/etc/passwd 的后5行输出”one”,”two”和源文件的第3列,在尾部插入数字666

~]# tail -5 /etc/passwd | awk -F: '{print "one","two",$3,666}'

2、中间引用并且使用:符号分隔

 ~]# tail -5 /etc/fstab | awk '{print "hello:::::::",$3 }'

3、打印/etc/fstab下的空个

~]# tail -5 /etc/fstab | awk '{print ""}'

2、变量

  • FS: input Field Swperator,输出字段分隔符,默认为空白。
  • RS:input Record Seperator,输入时的字段分隔符,默认为换行符。
  • OFS:Output Field Seperator,输出是的字段分隔符,默认为空白字符。
  • ORS:output record seperator,输出时的换行符。
  • NF:number of field,字段数量(引用$变量式不能加$符号,引用字段的时候需要好似用$符号)(例如:print NF,print $NF)
  • NR:number of record,行数。
  • FNR:个文件分别计数,行数。
  • FILENAME:当前文件名。
  • ARGC:命令行参数的个数。
  • ARGC:数组,保存的是命令那个行所给定的各参数。

示例:

1、FS:默认空白符,可忽略

~]# tail -5 /etc/passwd | awk -v FS=':' '{print $2,$4}'

2、RS:以/为换行符

~]# tail -5 /etc/passwd | awk -v RS='/' '{print }'

3、打印/etc/passwd下行数

~]# awk '{print NR,$0}' /etc/passwd

2.2、 自定义变量

有两种方式: -v var=value 变量名区分大小写;  在program中直接定义

示例:

1、自定义变量space=date在/etc/passwd的每一行打印出来

~]# awk -v space='date' '{print space }' /etc/passwd

另一种无需给出定义文件表现形式

~]# awk -v space='date' 'BEGIN{print space}'

2、直接program中定义space=date

~]# awk '{space="date";print space}' /etc/passwd

另一种无需给出定义文件表现形式

~]# awk 'BEGIN{space="date";print space}'

3、printf 命令:

格式化的输出机制:

awk [OPTION] printf FORMAT,item1,item2,…

格式符: %c:显示字符的ASCII码。  %d,%i:显示十进制的整数。  %e,%E: 科学计数法数值显示。  %f:显示为浮点数。 %g,%G: 以科学计数法或浮点数形式显示数值。  %s: 显示字符串。 * %%;显示%自身。

修饰符:

  • [#]: 第一个数字控制显示的宽度,第二个#标示小数点后的精度。例如: %3.1f

  • -#:左对齐。
  • +#:右对齐,可忽略不写

(#) 代表数字。

注意要点:

  • FORMAT必须给出。
  • 不会自动换行,需要显示给出换行控制符,\n
  • FORMA 中需要分别为后面的每个itme指定一个格式化符号。

示例

1、打印/etc/passed/以:为分隔的第二列以字符串的形式。

~]# tail -2 /etc/passwd | awk -F: '{printf "%s\n",$2}'

2、打印/etc/passwd/以:为分隔符的username和bin 并且左对齐的方式。

~]# awk -F: '{printf "username: %-25s  Bin:%s\n",$1,$6}' /etc/passwd

3、打印/etc/passwd/以:为分隔符的UID和GID 并且右对齐

~]# awk -F: '{printf "UID:%9d  |  GID:%9d\n",$3,$4}' /etc/passwd

4、awk的操作符

awk的操作符 算数操作符:进行算数运算,  -x:负值 * +x:转换为数值

例如: x+y,x-y,x y,x/y,x^y,x%y  字符操作符:字符串连接  赋值操作符:通常为变量的赋值,赋值操作符有:  =,+=,-=, =,/=,%=,^=  ++ ,–  比较长政府:字符串或者数值的大小比较  ,>,>=,<,<=,==,!=  模式匹配操作符:根据右侧的模式进行匹配操作符  ~:是否能由右侧指定的模式所匹配。  !~:是否不能有右侧指定模式所匹配。  逻辑操作符:进行逻辑的运算 &&:与运算  ||:或运算  条件表达式:  selector?if-true-expression:if-false-expression (条件为真:条件为假)  函数调用:调用函数进行数据的处理  格式: function_nam(argu1,argu2,..) (参数1,参数2,…)

示例:

1、判断/etc/passwd/用户id是系统用户还是管理用户。

awk -F: '{$3>=1000?usertype="Common User":usertype="Sysadmin or Sysuser";printf"%-15s:%s\n",$1,usertype}' /etc/passwd

5、PATTERN 模式:对哪些内容进行处理。

  • empty:控模式,匹配所有行;
  • /Regular Expression/:仅将ACTION应用于能被Regular Expression所匹配到的行。
    • (例如:awk -F:’/^[ab]/{print $1,$3}’ /etc/passwd)
  • relational expression: 关系表达式,即结果为“真”、“假”的表达式,或这其结果能类同于“真”或“假”的表达:一般来说,其结果为非0数值或非空字符串即可类同为“真”,否则,类同为“假”。
    • (例如: awk -F:’$3>=500{print $1,$3}’/etc/passwd)
    • (例如: awk -F:’$1~/root/{print $1,$3}’ /etc/passwd)
  • line ranges:行范围,类sed或vim中的地址定界方式如:startline,endline(起始行,结束行)
  • BEGIN/END:两个特殊模式。
    • BEGIN:仅处理文本前执行一次
    • END:仅处理文本完成后执行一次

      示例:

      显示当前登陆的root用户

      [aaa@MiWiFi-R3-srv ~]$ who | awk '$1~/root/{print $1,$3,$4}'
       root 2018-03-30 11:01
       root 2018-03-30 11:01
       root 2018-03-31 05:42
       root 2018-03-31 06:09

6、常用ACTION

  • EXPRESSIONS:例如变量赋值。
  • Control Statements:控制语句,例如if、while等
  • Compound Statements:复合语句。
  • input statements
  • output statements

7、控制语句

7.1、if-else

语法: if(condition) {statements}[else{statement}]

使用场景:对awk去的的整行或某字段做条件判断。

示例:

~]# awk -F: '{if($3=$4) print $1,$3,$4}' /etc/passwd

7.2、while循环

语法:while(condition) {statement}

使用场景:对一样内的多个字段逐一类似处理时使用;对数组中的各元素逐一处理时使用。

示例:

7.3、do-while循环

语法:do {statement} while (condition)

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

7.4 for循环

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

for (expr1;expr2;expr3) {statements}

for (variable assinment;codition;iteration process){for-body}

特殊用法:能够遍历属数组中的元素:

语法: for (var in array) {for-body}

for (变量 数组名)

7.5 switch语句 (类似多分支的if语句case)

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

7.6 break和continue

break [n]:退出当前循环,n是一个数字,用于指定退出几层循环。 continue:提前结束本轮循环而进入下一轮。

7.7 next

提前结束对本行文本的处理,而提前进入下一行的处理操作。

示例:

8、array 数组

关联数组:array[index-expression]

数组[表达式]

index-expression: 可以使用任意字符串,字符串需要使用双引号。  如果某数组元素事先不存在,在引用时,awk会自动创建此元素,并将其初始化为“空串”

若要判断数组中是否存在某元素,要使用”index in array” 格式进行。

weekdays[mon]=”Monday”

若要遍历数组中的每个元素,要使用for循环的方式进行。var_name会遍历array的每个索引,所示显示数组元素的值,要使用array[var_name]:

for (var in arry) {for-body}

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

9、函数

9.1 内建函数:

  • 数值处理: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所表示的数组中。

注意:awk的数组下标从1开始编号,而非0.

awk ‘{split($0,userinfo,”:”);print userinfo[1]}’/etc/passwd

substr(s,i[,n]):从s所表示的字符串中取子串,取法:从i表示的位置开始,取n个字符;时间类函数:systime(),取当前系统实际按,结果形式为时间戳;

示例:

length

 ~]# awk 'length>80' /etc/passwd

sub

~]# netstat -tan | awk 'sub(/tcp/,"ccc")'

gsub

 ~]# cat /etc/fstab | awk 'gsub(/#/,"%")'

9.2 用户自定义函数

functrion f_name(p,q){ … }

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/94767


以上所述就是小编给大家介绍的《第八周作业》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Rails 5敏捷开发

Rails 5敏捷开发

[美] Sam Ruby、[美] Dave Thomas、[美] David Heinemeier Hansson / 安道、叶炜、大疆Ruby技术团队 / 华中科技大学出版社 / 2017-12-30 / 115.00

本书以讲解“购书网站”案例为主线,逐步介绍Rails的内置功能。全书分为3部分,第一部分介绍Rails的安装、应用程序验证、Rails框架的体系结构,以及Ruby语言知识;第二部分用迭代方式构建应用程序,然后依据敏捷开发模式开展测试,最后用Capistrano完成部署;第三部分补充日常实用的开发知识。本书既有直观的示例,又有深入的分析,同时涵盖了Web开发各方面的知识,堪称一部内容全面而又深入浅出......一起来看看 《Rails 5敏捷开发》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具