Systemd和awk

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

核心概念unit

  • 相关配置文件进行标识,识别,配置,管理服务,监听socket,快照,init等
  • 路径在/usr/lib/systemd/system
  • /run/systemd/system
  • /etc/systemd/system

    unit类别

  • .service 系统服务
  • .target 模拟实现运行级别
  • .socket 标识进程间通信用到的socket文件
  • .mount 文件系统挂载点
  • .device 定义内核识别的设备
  • .snapshot 管理系统快照
  • .swap 管理swap设备
  • .automount 自动挂载
  • .path 文件系统目录

    关键特性

  • 基于socket激活,bus,device或path激活
  • 有系统快照功能,保存当前unit信息永久存储
  • 兼容/etc/init.d/
  • 非有systemd启动的无法兼容

    systemctl用法

  • 管理服务:systemctl start|stop|restart|status|reload NAME.service
  • status:loaded已装载 disabled/enabled 禁用/启用 inactive未激活/active激活
  • 条件重启:service NAME condrestart | systemctl try-restart NAME.service
  • 重载或重启: systemctl reload-or-restart NAME.service
  • 重载或条件式重启:systemctl reload-or-try-restart NAME.service
  • 查看服务是否激活:systemctl is-active NAME.service
  • 查看所有激活的服务:systemctl list-units -t service
  • 查看所有服务:systemctl list-units -t service -a
  • 设置服务开机自启动:systemctl enable NAME.service
  • 设置服务取消开机自启动:systemctl disable NAME.service
  • 禁止设置开机启动:systemctl mask | unmask NAME.service
  • 查看依赖服务:systemctl list-dependencies NAME.service

    管理target.units

  • 0 runlevel0.target poweroff.target
  • 1 1.target rescue.target
  • 2 2.target multi-user.target
  • 3 3.target ...
  • 4 4.target ...
  • 5 5.target graphical.target
  • 6 6.target reboot.target
  • init N 设置启动级别:systemctl isolate NAME.target
  • runlevel 查看启动级别:systemctl list-units -t target -a 全部
  • 获取默认运行级别:systemctl get-default
  • 设置默认运行级别:systemctl set-default NAME.target
  • 进入救援模式:systemctl rescue
  • 进入紧急模式:systemctl emergency
  • 其他:systemctl halt/poweroff/reboot/suspend/hibernate(快照)/hybird-sleep(快照并挂起)

.serivce文件的写法

  • 分为三部分:
  • 1.[Unit] 与unit有关的通用选项
  • 2.[Service] 与特定类型相关的选项
  • 3.[Install] systemctl enable|disable 时用到的选项
    Unit
  • Description:描述
  • After:启动次序 Before
  • Wants:弱依赖
  • Requires:强依赖
  • Conflicts:冲突关系
    Service
  • Type:类型(simple 主进程 forking oneshot dbus notify idle)
  • EnvironmentFile:环境配置路径
  • ExecStart:启动运行的脚本
  • ExecStop:关闭运行的脚本
  • Restart:重启运行的脚本
    Install
  • Alias:别名
  • Requires:依赖
  • Wants:依赖
    修改.service后
  • 要执行systemctl daemon-reload

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

    awk

  • awk就是gawk
  • awk [options] ‘program‘ FILE ...
  • program = PATTERN{ACTION STATEMENTS;}

    options

  • -F:指定分隔符 -F "[: +]" 指定多个分隔符
  • -v var=value 定义变量
  • 原理是处理每行$0,根据分隔符切片为$1,$2

    print

  • print $1,$2:逗号为分隔符,显示为空白
  • 也可以跟字符串,数值,变量,表达式
  • 如果省略item相当于print $0
[[email protected] ~]# awk -F "[- ]" ‘{print $1}‘ /etc/fstab

#
#
#
#
#
#
#
UUID=4f8f9662
UUID=2ffce847
UUID=200259c9

### 变量

  • 内建变量:$0 $1

    • FS 输入分隔符
    • OFS 输出分隔符
    • RS 输入换行符
    • ORS 输出换行符
    • NF 字段数
    • $NF 打印最后一个字段
    • NR 行号
    • FNR 每个文件的行号
    • FILENAME 文件名
    • ARGC 参数个数
    • ARGV 参数数组
  • 自定义变量:-v 或 program中
[[email protected] ~]# awk -F "[- ]" -v OFS="\n" ‘{print $1,$2}‘ /etc/fstab

#

#
/etc/fstab
#
Created
#

#
Accessible
#
See
#

UUID=4f8f9662
22a0
UUID=2ffce847
9957
UUID=200259c9
e2bb
[[email protected] ~]# awk -F "[- ]" -v ORS="\t" ‘{print $1}‘ /etc/fstab
        # # # # # # # UUID=4f8f9662 UUID=2ffce847 UUID=200259c9 [
[[email protected] ~]# awk -F "[- ]" ‘{print NR}‘ /etc/fstab
1
2
3
4
5
6
7
8
9
10
11
[[email protected] ~]# awk -F "[- ]" ‘{print NF}‘ /etc/fstab
0
1
2
11
1
9
12
1
43
39
39
[[email protected] ~]# awk -F "[- ]" ‘{print $NF}‘ /etc/fstab

#
/etc/fstab
2018
#
‘/dev/disk‘
info
#
0
0
0
[[email protected] ~]# awk -F "[- ]" ‘{print FNR}‘ /etc/fstab /etc/hosts
1
2
3
4
5
6
7
8
9
10
11
1
2
[[email protected] ~]# awk -F "[- ]" ‘BEGIN{for (i in ARGV) print ARGV[i];print ARGC}‘ /etc/fstab
awk
/etc/fstab
2

printf

  • 格式化输出
  • printf FORMAT,item1,item2
  • FORMAT必填项
  • 不会自己换行,需要\n
  • 格式符号:
    • %c 字符
    • %d 整数
    • %e 科学计数法
    • %f 浮点数
    • %g %G 科学计数法或浮点数
    • %s 字符串
    • %u 无符号整数
    • %% %分号
  • 修饰符:%3.1f 左边为宽度,右边为精度,-可以左对齐,+显示数值的+号, 默认右对齐
[[email protected] ~]# awk -F "[- ]" ‘BEGIN{CMD="cmd\n";HELLO="hello\n";printf "%10s%10s",CMD,HELLO}‘ /etc/fstab
      cmd
    hello

操作符

  • 算术 +x 转为数值
  • 字符串操作符:空就可以字符串连接
  • 赋值
  • 比较
  • 模式匹配 ~ !~
  • 逻辑
  • 函数调用 func_name(arg1,arg2)
  • 条件表达式 selector?if-true:if-false
[[email protected] ~]# awk -F "[- ]" ‘BEGIN{CMD="cmd\n";HELLO="hello\n";YES=(HELLO=="hello\n")?"true\n":"false\n";printf "%10s",YES}‘ /etc/fstab
     true

PATTERN

  • 空:处理每一行
  • /RE/ :正则表达式
  • (条件表达式) :条件表达式
  • 地址定界:/PAT1/,/PAT2/
[[email protected] ~]# awk -F " " ‘/o$/{print $NF}‘ /etc/fstab
info
[[email protected] ~]# awk -F " " ‘(NR>=3&&NR<=4){print $NF}‘ /etc/fstab
/etc/fstab
2018

BEGIN/END

  • BEGIN{} 仅在开始处理前执行一次
  • END{} 仅在完成后执行一次

    ACTION

  • 表达式
  • 控制语句
  • 组合语句
  • 输入语句
  • 输出语句

    控制语句

  • if() {} else {}
  • while() {}
  • do {} while()
  • for(;;) {}
  • break continue
  • delete array[index] delete array exit
  • for(var in array) {}
  • switch() {case:value1;statement;case:value2;statement;default;statement}
  • next 行间未执行完处理下一行,类似continue

    数组

  • array[index]
  • 可以是任意字符串
  • 数组如果不存在,自动创建空数组
  • 判断是否存在 index in array
  • weekdays["day1"]="sunday";
  • 遍历:for(var in array) {print array[var]}
[[email protected] ~]# ss -tna|awk -F " " ‘(NR!=1){STATE[$1]++}END{for(i in STATE) {print i,STATE[i]}}‘
LISTEN 3
ESTAB 1

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

函数

  • 内置函数

    • rand() 0-1随机数
    • sin() cos()
    • length() 字符串长度
    • sub(r,s,t) 将t中r替换为s,第一次出现
    • gsub(r,s,t) 全局替换
    • split(s,a,r) 将s按r切割放到a数组,下标从1开始
[[email protected] ~]# ss -tna|awk -F " " ‘(NR!=1){gsub("L","l",$1);print $1}‘
lISTEN
lISTEN
ESTAB
lISTEN
[[email protected] ~]# ss -tna|awk -F " " ‘(NR!=1){split($1,ARRAY,"E");for(i in ARRAY) {print ARRAY[i]};print "----"}‘
LIST
N
----
LIST
N
----

STAB
----
LIST
N
----

原文地址:https://www.cnblogs.com/xuluchuan/p/9313256.html

时间: 2024-08-29 15:43:33

Systemd和awk的相关文章

Linux的systemd特性及awk使用

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

LINUX PID 1和SYSTEMD

LINUX PID 1和SYSTEMDhttp://coolshell.cn/articles/17998.html 要说清 Systemd,得先从 Linux 操作系统的启动说起.Linux 操作系统的启动首先从 BIOS 开始,然后由 Boot Loader 载入内核,并初始化内核.内核初始化的最后一步就是启动 init 进程.这个进程是系统的第一个进程,PID 为 1,又叫超级进程,也叫根进程.它负责产生其他所有用户进程.所有的进程都会被挂在这个进程下,如果这个进程退出了,那么所有的进程都

awk,systemctl,破解7root口令

awk -F 指明输入时用到的字段分隔符 默认空格为分隔符 -v 自定义变量 基本格式:awk [options] 'program' file $1,$2..$n称为域标识,$0为所有域. 文件的每一行称为记录 awk '{print}' /etc/passwd 默认 print $0 显示全段 awk 'BEGIN{print "hello,awd"}' awk '{print "hello,awd"}' 支持输入 df |awk '{print $5}' df

9.6-9.7 awk

9.6-9.7 awk 扩展 把这里面的所有练习题做一下 http://www.apelearn.com/study_v2/chapter14.html # 9.6 awk 上 ![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170827/145543851.png?imageslim) - 同样的 创建一个目录awk,把/etc/passwd 文件拷贝到 目录awk下,改名为test.txt ``` [[email protected] ~]# 

awk使用简介

awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理,然后输出 awk命令形式: awk [-F|-f|-v] 'BEGIN{} //{command1; command2} END{}' file [-F|-f|-v]   大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value '  '          引用代码块 BEGIN   初始化代码块,在对每一行进行处理之前,初始

LINUX PID 1和SYSTEMD PID 0 是内核的一部分,主要用于内进换页,内核初始化的最后一步就是启动 init 进程。这个进程是系统的第一个进程,PID 为 1,又叫超级进程

要说清 Systemd,得先从 Linux 操作系统的启动说起.Linux 操作系统的启动首先从 BIOS 开始,然后由 Boot Loader 载入内核,并初始化内核.内核初始化的最后一步就是启动 init 进程.这个进程是系统的第一个进程,PID 为 1,又叫超级进程,也叫根进程.它负责产生其他所有用户进程.所有的进程都会被挂在这个进程下,如果这个进程退出了,那么所有的进程都被 kill .如果一个子进程的父进程退了,那么这个子进程会被挂到 PID 1 下面.(注:PID 0 是内核的一部分

Linux sed和awk

sed strem editor  流编辑器 sed  编辑器是一行一行的处理文件内容的.正在处理的内容存放在模式空间(缓冲区)内,处理完成后按照选项的规定进行输出或文件的修改. sed主要用来自动编辑一个或多个文件:简化文件的反复操作:非交互式编译文件 语法: sed [options]  '[command]' [filename] options: -n 抑制自动(默认的)输出  读取下一个输入行,-n要读取的行号 -e 执行多个sed命令 -f 运行脚本 -i 编辑文件内容 -i.bak

awk 解析maps文件中的地址

maps文件一般是这个样子: [email protected]:~ $ sudo cat /proc/1/maps 54b88000-54c8d000 r-xp 00000000 b3:07 655537 /lib/systemd/systemd 54c9c000-54cac000 r--p 00104000 b3:07 655537 /lib/systemd/systemd 54cac000-54cad000 rw-p 00114000 b3:07 655537 /lib/systemd/s

Linux 之centos7 制作服务自启动systemd

摘要: - Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实质差别.systemd是靠管理unit的方式来控制开机服务,开机级别等功能. 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等,这里临时介绍关于service后缀的文件. Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实