LINUXLinuxlinux

linux资料总章

2017-08-02  本文已影响3413人  数据革命

linux资料总章2.1

命令区

系统管理与维护命令

date

clear

alias

选项 说明
-p 打印已经设置的命令别名

blkid

clock

选项 说明
--adjust 自动调整硬件时钟时间
--debug 运行时,输出详细的处理过程
--directisa 不通过设备文件/etc/rtc,直接对硬件时钟进行存取
--getepoch 输出硬件时钟的数值到标准输出
--hctosys 时钟同步,使系统时钟和硬件时钟同步
--se--date 设置硬件时间
--show 显示硬件时钟到标准输出
--systohc 系统时间写入硬件时钟
--test 进行测试
--utc 将硬件时钟的时间设置为UTC

echo

选项 说明
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;
\nnn 插入nnn(八进制) 所代表的ASCII字符;

exit

logout

findfs

hwclock

选项 说明
--adjust hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟
--debug 显示hwclock执行时详细的信息
--directisa hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟
--hctosys 将系统时钟调整为与目前的硬件时钟一致
--set --date=<日期与时间> 设定硬件时钟
--show 显示硬件时钟的时间与日期
--systohc 将硬件时钟调整为与目前的系统时钟一致
--test 仅测试程序,而不会实际更改硬件时钟
--utc 若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作
--version 显示版本信息

init

选项 说明
0 停机(千万不能把initdefault 设置为0 )
1 单用户模式
2 多用户,没有 NFS
3 完全多用户模式(标准的运行级)
4 没有用到
5 X11 (xwindow) 桌面
6 重新启动 (千万不要把initdefault 设置为6 )

iostat

选项 说明
-c 仅显示CPU使用情况;
-d 仅显示设备利用率;
-k 显示状态以千字节每秒为单位,而不使用块每秒;
-m 显示状态以兆字节每秒为单位;
-p 仅显示块设备和所有被使用的其他分区的状态;
-t 显示每个报告产生时的时间;
-V 显示版号并退出;
-x 显示扩展状态

hostname

选项 说明
-v 详细信息模式
-a 显示主机别名
-d 显示DNS域名
-f 显示FQDN名称
-i 显示主机的ip地址
-s 显示短主机名称,在第一个点处截断
-y 显示NIS域名

history

选项 说明
-c 清空当前历史命令
-a 将历史命令缓冲区中命令写入历史命令文件中
-r 将历史命令文件中的命令读入当前历史命令缓冲区
-w 将当前历史命令缓冲区命令写入历史命令文件中

lscpu

lsblk

选项 说明
-a, --all 显示所有设备
-b, --bytes 以bytes方式显示设备大小
-d, --nodeps 不显示 slaves 或 holders
-D, --discard print discard capabilities
-e, --exclude 排除设备 (default: RAM disks)
-f, --fs 显示文件系统信息
-h, --help 显示帮助信息
-i, --ascii use ascii characters only
-m, --perms 显示权限信息
-l, --list 使用列表格式显示
-n, --noheadings 不显示标题
-o, --output 输出列
-P, --pairs 使用key="value"格式显示
-r, --raw 使用原始格式显示
-t, --topology 显示拓扑结构信息

lsof

选项 说明
-a 列出打开文件存在的进程
-c<进程名> 列出指定进程所打开的文件
-g 列出GID号进程详情
-d<文件号> 列出占用该文件号的进程
+d<目录> 列出目录下被打开的文件
+D<目录> 递归列出目录下被打开的文件
-n<目录> 列出使用NFS的文件
-i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号> 列出指定进程号所打开的文件
-u 列出UID号进程详情
-h 显示帮助信息
-v 显示版本信息

jobs

hexdump

选项 说明
-n length 只格式化输入文件的前length个字节。
-C 输出规范的十六进制和ASCII码。
-b 单字节八进制显示。
-c 单字节字符显示。
-d 双字节十进制显示。
-o 双字节八进制显示。
-x 双字节十六进制显示。
-s 从偏移量开始输出。
-e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:'a/b "format1" "format2"'

htop

| Shortcut Key | Function Key | Description | 中文说明
| :-------- | --------:|
| h, ?| F1| Invoke htop Help | 查看htop使用说明
| S | F2 | Htop Setup Menu | htop| 设定
| / | F3| Search for a Process | 搜索进程
| \ | F4 | Incremental process filtering | 增量进程过滤器
| t | F5 | Tree View | 显示树形结构
| <, >| F6 | Sort by a column | 选择排序方式
| [ | F7 | Nice - (change priority) | 可减少nice值,这样就可以提高对应进程的优先级
| ]| F8| Nice + (change priority) | 可增加nice值,这样就可以降低对应进程的优先级
| k | F9 | Kill a Process | 可对进程传递信号
| q | F10 | Quit htop| 结束htop

fuser

选项 说明
-l 显示信号
-4 IPv4
-6 IPv6
-a 与程序相关的所有文件
-k 删除程序相关的所有文件
-I 互交模式
-s 不显示处理信息
-u PID显示用户名
-v 运行时,显示相信处理信息
- 清零
-m 挂载文件系统
-signal 发送信号
-n 指定关键字进行搜索,如 文件、UDP、TCP
-V 显示版本显示
【文件类型说明】
c 当前目录
e 扩展
f 打开的文件
r 跟目录
m 共享库

finger

选项 说明
-l 列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容;
-m 排除查找用户的真实姓名;
-s 列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话;
-p 列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。

e2fsck

chage

选项 说明
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码
-M 密码保持有效的最大天数
-w 用户密码到期前,提前收到警告信息的天数
-E 帐号到期的日期。过了这天,此帐号将不可用
-d 上一次更改的日期
-i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期

chfn

chsh

crontab

选项 说明
-e 编辑该用户的计时器设置
-l 列出该用户的计时器设置
-r 删除该用户的计时器设置
-u<用户名称> 指定要设定计时器的用户名称

compress

选项 说明
-f 不提示用户,强制覆盖掉目标文件
-c 将结果送到标准输出,无文件被改变
-r 递归的操作方式
-b<压缩效率> 压缩效率是一个介于9~16的数值,预设值为"16",指定愈大的数值,压缩效率就愈高
-d 对文件进行解压缩而非压缩
-v 显示指令执行过程
-V 显示指令版本及程序预设值。

chown

dumpe2fs

选项 说明
-b 打印文件系统中预留的块信息
-ob<超级块> 指定检查文件系统时使用的超级块
-OB<块大小> 检查文件系统时使用的指定的块大小
-h 仅显示超级块信息
-i 从指定的文件系统映像文件中读取文件系统信息
-x 以16进制格式打印信息块成员

declare

选项 说明
-a 声明数组变量
-f 显示函数
-i 声明整数型变量
-x 设置变量为环境变量,同export命令功能相同
-r 设置变量为只读
+/- 改变属性 “-” 设置,+“+”取消

resize2fs

选项 说明
-d :打开调试特性
-p :打印已完成的百分比进度条
-f :强制执行调整大小操作,覆盖掉安全检查操作
-F :开始执行调整大小前,刷新文件系统设备的缓冲区

at

atrm

选项 说明
-v 显示版本号

bc

选项 说明
-e 文件存在
-f 文件是一个 普通文件(不是一个目录或设备文件)
-s 文件大小不为零
-d 文件是一个 目录
-b 文件是一个 块设备(软盘 、光驱、 等)
-c 文件是一个 字符设备(键盘、调制解调器、声卡、等)
-p 文件是一个 管道
-h 文件是一个 符号链接
-n 判断变量是否有值
-r 文件是否可读
-w 文件是否可写
-x 文件是否可执行
-z 代表的是该变量是否有值
-S 文件是一个 socket

查看文件及内容处理命令

cat

ln

选项 说明
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用了- depth选项,那么-prune选项将被find命令忽略。
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件, -n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。
find 命令还有-atime和-ctime选项,但它们都和-mtime选项相似,所以我们在这里只介绍-mtime选项。
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
s - socket文件
-size n[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-maxdepth 查找最大目录层数 如 1,即只查找一层目录
-fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件
/etc/fstab 中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount 在查找文件时不跨越文件系统mount点。
-follow 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio 对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

cal

cut

选项 说明
-b 仅显示行中指定直接范围的内容
-c 仅显示行中指定范围的字符
-d 指定字段的分隔符,默认的字段分隔符为“TAB”
-f 显示指定字段的内容
-n 与“-b”选项连用,不分割多字节字符

hash

file

选项 说明
-b 列出辨识结果时,不显示文件名称
-c 详细显示指令执行过程,便于排错或分析程序执行的情形
-f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称
-L 直接显示符号连接所指向的文件类别
-m<魔法数字文件> 指定魔法数字文件
-v 显示版本信息
-z 尝试去解读压缩文件的内容

head

nano

chattr

locate

选项 说明
-b, --basename 匹配唯一的路径名称的基本文件名
-c, --count 只显示找到条目的号码
-d, --database DBPATH 用 DBPATH 替代默认的数据库(/var/lib/mlocate/mlocate.db)
-e, --existing 只显示当前存在的文件条目
-L, --follow 当文件存在时跟随蔓延的符号链接 (默认)
-h, --help 显示本帮助
-i, --ignore-case 匹配模式时忽略大小写区别
-l, --limit, -n LIMIT 限制为 LIMIT项目的输出 (或 计数)
-m, --mmap 忽略向后兼容性
-P, --nofollow, -H 当检查文件时不跟随蔓延的符号链接
-0, --null 输出时以 NUL 分隔项目
-S, --statistics 不搜索项目,显示有关每个已用数据库的统计信息
-q, --quiet 不报告关于读取数据库的错误消息
-r, --regexp REGEXP 搜索基本正则表达式 REGEXP 来代替模式
--regex 模式是扩展正则表达式
-s, --stdio 忽略向后兼容性
-V, --version 显示版本信息
-w, --wholename 匹配完整路径名 (默认)

more

less

选项 说明
-b<缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
- i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o<文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x<数字> 将“tab”键显示为规定的数字空格

tail

选项 说明
-c --bytes=N输出最后N个字节
-f --follow[={name descriptor}]当文件增长时,输出后续添加的数据; -f, --follow以及 --follow=descriptor 都是相同的意思
-n --lines=N输出最后N行,而非默认的最后10行
-q --quiet, --silent从不输出给出文件名的首部
-s --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
-v, --verbose 总是输出给出文件名的首部

split

paste

sort

选项 说明
-b 忽略每行前面开始出的空格字符
-c 检查文件是否已经按照顺序排序
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f 排序时,将小写字母视为大写字母
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符
-m 将几个排序号的文件进行合并
-M 将前面3个字母依照月份的缩写进行排序
-n 依照数值的大小排序
-o<输出文件> 将排序后的结果存入制定的文件
-r 以相反的顺序来排序
-t<分隔字符> 指定排序时所用的栏位分隔字符
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位

uniq

wc

iconv

dos2unix

diff

vimdiff

rev

grep/egrep

join

tr

vi/vim

文件压缩及解压缩命令

bzip2

gzip

选项 说明
-a或--ascii 使用ASCII文字模式。
-c或--stdout或--to-stdout 把解压后的文件输出到标准输出设备。
-f或-force 强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-h或--help 在线帮助。
-l或--list 列出压缩文件的相关信息。
-L或--license 显示版本与版权信息。
-n或--no-name 解压缩时,若压缩文件内含有远来的文件名称及时间戳记,则将其忽略不予处理。
-N或--name 解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。
-q或--quiet 不显示警告信息。
-r或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-S<压缩字尾字符串>或--suffix<压缩字尾字符串> 更改压缩字尾字符串。
-t或--test 测试压缩文件是否正确无误。
-v或--verbose 显示指令执行过程。
-V或--version 显示版本信息

bunzip2

选项 说明
-f或-force 解压缩时,若输出的文件与现有文件同名时,预设不会覆盖现有的文件
-k或—keep 在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数
-s或—small 降低程序执行时,内存的使用量
-v或—verbose 解压缩文件时,显示详细的信息
-l,-license 显示版本信息
-V或—version 显示版本信息

dd

选项 说明
bs=<字节数> 将ibs(输入)与欧巴桑(输出)设成指定的字节数
cbs=<字节数> 转换时,每次只转换指定的字节数
conv=<关键字> 指定文件转换的方式
count=<区块数> 仅读取指定的区块数
ibs=<字节数> 每次读取的字节数
obs=<字节数> 每次输出的字节数
of=<文件> 输出到文件
seek=<区块数> 一开始输出时,跳过指定的区块数
skip=<区块数> 一开始读取时,跳过指定的区块数

cpio

gunzip

bzcat

xz

选项 说明
-z, --compress 强制压缩
-d, --decompress 强制解压缩
-t, --test 测试压缩文件的完整性
-l, --list 列出压缩文件中的相关信息
-k, --keep 压缩但不删除,输入文件
-f, --force 解压强制覆盖文件
-c, --stdout 标准输入,但不删除文件
-0 .. -9 压缩等级;0-2快速压缩,3-5办好压缩,6-9优异的压缩,默认为6

uname

选项 说明
-a或--all 显示全部的信息;
-m或--machine 显示电脑类型;
-n或-nodename 显示在网络上的主机名称;
-r或--release 显示操作系统的发行编号;
-s或--sysname 显示操作系统名称;
-v 显示操作系统的版本
-p或--processor 输出处理器类型或"unknown";
-i或--hardware-platform 输出硬件平台或"unknown";
-o或--operating-system 输出操作系统名称;

unset

uncompress

选项 说明
-f 不提示用户,强制覆盖掉目标文件
-c 将结果送到标准输出,无文件被改变
-r 递归的操作方式

zcat

选项 说明
-S 指定gzip格式的压缩包的后缀。
-c 将文件内容写到标注输出;
-d 执行解压缩操作;
-l 显示压缩包中文件的列表
-L 显示软件许可信息;
-q 禁用警告信息;
-r 在目录上执行递归操作;
-t 测试压缩文件的完整性;
-V 显示指令的版本信息;
-l 更快的压缩速度;
-9 更高的压缩比。

有关磁盘与文件系统的命令

df

选项 说明
-a, --all 列出包括BLOCK为0的文件系统
--block-size=SIZE use SIZE-byte blocks 指定块的大小
-h,--huma-readable 用常见的格式显示出大小(例如:1K 234M 2G)
-H,--si 同上,但是这里的1k等于1000字节而不是1024字节
-i, --inodes 用信息索引点代替块表示使用状况
-k, --kilobytes 指定块大小等于1024字节来显示使用状况
-l, --local 只显示本地文件系统使用状况
-m, --megabytes 以指定块大小等于1048576字节(1M)来显示使用状况
--no-sync 在取得使用信息前禁止调用同步 (default)
-P, --portability 使用POSIX格式输出
--sync 在取得使用信息前调用同步
-t, --type=TYPE 只显示指定类型(TYPE)的文件系统
-T, --print-type 输出每个文件系统的类型
-x, --exclude-type=TYPE 只显示指定类型(TYPE)之外的文件系统.
-v (忽略)

fsck

fdisk

enable

选项 说明
-n 关闭指定的内部命令
-a 显示所有激活的内部命令
-f 从指定文件中读取内部命令

export

选项 说明
-f 带边环境变量为函数名称
-n 删除指定的环境变量
-p 列出所有的环境变量

edquota

选项 说明
-u 设置用户的quota,这是预设的参数
-g 设置群组的quota
-p<源用户名称> 将源用户的quota设置套用至其他用户或群组
-t 设置宽限期限

e2label

mount

umount

fsck

dd

dumpe2fs

dump

fdisk

parted

mkfs

partprobe

e2fsck

mkswap

swapon

swapoff

sync

resize2fs

网络设置与维护

ifconfig

ip

选项 说明
-V 显示指令版本信息;
-s 输出更详细的信息;
-f 强制使用指定的协议族;
-4 指定使用的网络层协议是IPv4协议;
-6 指定使用的网络层协议是IPv6协议;
-0 输出信息每条记录输出一行,即使内容较多也不换行显示;
-r 显示主机时,不使用IP地址,而使用主机的域名

ifdown

ifup

ethtool

选项 说明
-a 查看网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。
-A 修改网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。
-c display the Coalesce information of the specified ethernet card。
-C Change the Coalesce setting of the specified ethernet card。
-g Display the rx/tx ring parameter information of the specified ethernet card。
-G change the rx/tx ring setting of the specified ethernet card。
-i 显示网卡驱动的信息,如驱动的名称、版本等。
-d 显示register dump信息, 部分网卡驱动不支持该选项。
-e 显示EEPROM dump信息,部分网卡驱动不支持该选项。
-E 修改网卡EEPROM byte。
-k 显示网卡Offload参数的状态:on 或 off,包括rx-checksumming、tx-checksumming等。
-K 修改网卡Offload参数的状态。
-p 用于区别不同ethX对应网卡的物理位置,常用的方法是使网卡port上的led不断的闪;N指示了网卡闪的持续时间,以秒为单位。
-r 如果auto-negotiation模块的状态为on,则restarts auto-negotiation。
-S 显示NIC- and driver-specific 的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。
-t 让网卡执行自我检测,有两种模式:offline or online。
-s 修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等。

文件和目录操作命令

ls

选项 说明
-a 显示指定目录下的所有文件以及子目录,包含隐藏文件(Linux 下将“.” 开头的文件或者目录视为隐藏文档)
-d 只显示目录列表,不显示文件
-l 除文件名称外,同时将文件或者子目录的权限.使用者和大小等详细列出
-s 在每个文件后输出该文件的大小
-k 以k字节的形式表示文件的大小
-u 以文件上次被访问的时间排序
-t 以时间排序
-o 显示除组信息外的详细信息
-x 按列输出.横向排序
-r 对目录反向排序
-q 用“?” 代替不可输出的字符
-m 横向输出文件名,并以“,” 作为分割符
-S 以文件大小排序
-R 列出所有子目录下的文件
-pf 在每个文件名后附上一个字符以说明该文件的类型
-C 按列输出,纵向排序
-R 列出所有子目录下的文件
-Q 把输出的文件名用双引号括起来

cp

cd

选项 说明
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录
- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录
cd 进入用户主目录;
cd ~ 进入用户主目录;
cd - 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd../.. 返回上两级目录;
cd !$ 把上个命令的参数作为cd参数使用。

mkdir

find

mv

pwd

rename

rm

rmdir

touch

tree

选项 说明
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@"," "号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-L 层级显示
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外

basename

选项 说明
--help 显示帮助
--version 显示版本号

dirname

chattr

lsattr

file

md5sum

搜索文件命令

which

find

whereis

locate

信息显示命令

uname

hostname

dmesg

uptime

stat

du

df

top

free

date

cal

线上查询及帮助命令

mandb

help

man

进程管理相关命令

bg

fg

jobs

kill

killall

-通过进程名终止进程

pkill

crontab

ps

-显示进程的快照

pstree

nice

nohup

pgrep

-查找匹配条件的进程

runlevel

init

service

关机、重启、注销和查看系统信息的命令

shutdown

halt

poweroff

logout

exit

Ctrl+D快捷键

系统管理与性能监视命令

chkconfig

vmstat

mpstat

iostat

sar

ipcrm

strace

ltrace

内置命令及其他

echo

printf

rpm

yum

watch

alias

unalias

date

clear

history

-查看命令执行的历史记录

eject

time

nc

xargs

exec

export

unset

type

bc

查看系统用户登录信息的命令

whoami

who

w

last

lastlog

users

finger

系统及用户权限相关命令

useradd

选项 说明
-d<登入目录>:指定用户登入时的启始目录;
-D 变更预设值; -e<有效期限>:指定帐号的有效期限;
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号;
-g<群组> 指定用户所属的群组;
-G<群组> 指定用户所属的附加群组;
-m 自动建立用户的登入目录;
-M 不要自动建立用户的登入目录;
-n 取消建立以用户名称为名的群组;
-r 建立系统帐号;
-s 指定用户登入后所使用的shell;
-u 指定用户id。

usermod

userdel

选项 说明
-f 强制删除用户,即使用户当前已登录;
-r 删除用户的同时,删除与用户相关的所有文件。

chmod

chown

chgrp

umask

深入网络操作命令

nmap

lsof

mail

mutt

nslookup

dig

host

traceroute

tcpdump

基础网络操作命令

telnet

ssh

scp

wget

ping

route

ifconfig

ifup

ifdown

netstat

ss

用户管理命令

glances

选项 说明
-s, --service=CONFIG 要使用的服务配置
-?, --help 给出该系统求助列表
--usage 给出简要的用法信息
-V, --version 打印程序版本号

getfacl

groups

grpck

groupadd

选项 说明
-g 指定新建工作组的id
-r 创建系统工作组,系统工作组的组ID小于500
-K 覆盖配置文件“/ect/login.defs”
-o 允许添加组ID号不唯一的工作组

groupmod

选项 说明
-g<群组识别码> 设置欲使用的群组识别码
-o:重复使用群组识别码
-n<新群组名称> 设置欲使用的群组名称

groupdel

gpasswd

选项 说明
-a 添加用户到组
-d 从组删除用户
-A 指定管理员
-M 指定组成员和-A的用途差不多
-r 删除密码
-R 限制用户登入组,只有组中的成员才可以用newgrp加入该组

id

选项 说明
-g或--group 显示用户所属群组的ID。
-G或--groups 显示用户所属附加群组的ID。
-n或--name 显示用户,所属群组或附加群组的名称。
-r或--real 显示实际ID。
-u或--user 显示用户ID。 -help   显示帮助。
-version 显示版本信息。

useradd

userdel

usermod

groupadd

passwd

chage

su

visudo

sudo

其他命令

let

lsusb

lvscan

lvcreate

选项 说明
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(LE数)
-n 后面跟逻辑卷名
-s 创建快照

lvremove

lsmod

OpenSSL

pidof

选项 说明
-s 仅返回一个进程号;
-c 仅显示具有相同“root”目录的进程;
-x 显示由脚本开启的进程;
-o 指定不显示的进程ID。

pstree

选项 说明
-a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-c 不使用精简标示法;
-G 使用VT100终端机的列绘图字符;
-h 列出树状图时,特别标明现在执行的程序;
-H<程序识别码> 此参数的效果和指定"-h"参数类似,但特别标明指定的程序;
-l 采用长列格式显示树状图;
-n 用程序识别码排序。预设是以程序名称来排序;
-p 显示程序识别码;
-u 显示用户名称;
-U 使用UTF-8列绘图字符;
-V 显示版本信息。

pmap

选项 说明
-x 显示扩展格式;
-d 显示设备格式;
-q 不显示头尾行;
-V 显示指定版本。

ps

选项 说明
-a 显示所有终端机下执行的进程,除了阶段作业领导者之外。
a 显示现行终端机下的所有进程,包括其他用户的进程。
-A 显示所有进程。
-c 显示CLS和PRI栏位。
c 列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。
-C<指令名称> 指定执行指令的名称,并列出该指令的进程的状况。
-d 显示所有进程,但不包括阶段作业领导者的进程。
-e 此参数的效果和指定"A"参数相同。
e 列出进程时,显示每个进程所使用的环境变量。
-f 显示UID,PPIP,C与STIME栏位。
f 用ASCII字符显示树状结构,表达进程间的相互关系。
-g<群组名称> 此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。
g 显示现行终端机下的所有进程,包括群组领导者的进程。
-G<群组识别码> 列出属于该群组的进程的状况,也可使用群组名称来指定。
h 不显示标题列。
-H 显示树状结构,表示进程间的相互关系。
-j或j 采用工作控制的格式显示进程状况。
-l或l 采用详细的格式来显示进程状况。
L 列出栏位的相关信息。
-m或m 显示所有的执行绪。
n 以数字来表示USER和WCHAN栏位。
-N 显示所有的进程,除了执行ps指令终端机下的进程之外。
-p<进程识别码> 指定进程识别码,并列出该进程的状况。
p<进程识别码> 此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。
r 只列出现行终端机正在执行中的进程。
-s<阶段作业> 指定阶段作业的进程识别码,并列出隶属该阶段作业的进程的状况。
s 采用进程信号的格式显示进程状况。
S 列出进程时,包括已中断的子进程资料。
-t<终端机编号> 指定终端机编号,并列出属于该终端机的进程的状况。
t<终端机编号> 此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。
-T 显示现行终端机下的所有进程。
-u<用户识别码> 此参数的效果和指定"-U"参数相同。
u 以用户为主的格式来显示进程状况。
-U<用户识别码> 列出属于该用户的进程的状况,也可使用用户名称来指定。
U<用户名称> 列出属于该用户的进程的状况。
v 采用虚拟内存的格式显示进程状况。
-V或V 显示版本信息。
-w或w 采用宽阔的格式来显示进程状况。
x 显示所有进程,不以终端机来区分。
X 采用旧式的Linux i386登陆格式显示进程状况

pvcreate

选项 说明
-f 强制创建物理卷,不需要用户确认
-u 指定设备的UUID
-y 所有的问题都回答“yes”
-Z 是否利用前4个扇区

pvs

pvdisplay

pvremove

选项 说明
-d 调试模式
-f 强制删除
-y 对提问回答“yes”

pvmove

paste

partx

选项 说明
-a 增加制定的分区或读磁盘新增的分区
-d 删除制定或所有的分区
-l 列出分区
--type 指定分区类型。dos,bsd,solaris,unix,或者gpt
--nr M-N 指定分区范围

partprobe

选项 说明
-d 不更新内核
-s 显示摘要和分区
-h 显示帮助信息
-v 显示版本信息

parted

选项 说明
-h 显示帮助信息;
-i 交互式模式;
-s 脚本模式,不提示用户;
-v 显示版本号。

pwconv

pwunconv

pwd

passwd

选项 说明
-d 删除密码,仅有系统管理者才能使用;
-f 强制执行;
-k 设置只有在密码过期失效后,方能更新;
-l 锁住密码;
-s 列出密码的相关信息,仅有系统管理者才能使用;
-u 解开已上锁的帐号。

pgrep

pkill

quotacheck

quotaon

选项 说明
-a 开启在/ect/fstab文件里,有加入quota设置的分区的空间限制;
-g 开启群组的磁盘空间限制;
-u 开启用户的磁盘空间限制;
-v 显示指令指令执行过程。

quotaoff

quota

kill

选项 说明
-l <信号变化>,若不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户

killall

mdadm

mdadm --create device options...
用未使用的设备,创建raid选项,
mdadm --assemble device options...
合并先前创建的raid阵列。
mdadm --build device options...
创建或合并没有元数据的一个raid。
mdadm --manage device options...
对现有阵列进行更改
mdadm --misc options... devices
报告或修改各种MD相关设备的。
mdadm --grow options device
调整以激活的raid阵列
mdadm --incremental device
从一个raid中,添加/删除设备
mdadm --monitor options...
监视一个或多个raid阵列的变化
mdadm device options...
--manage的简写

mkfs

选项 说明
fs 指定建立文件系统时的参数;
-t<文件系统类型> 指定要建立何种文件系统;
-v 显示版本信息与详细的使用方法;
-V 显示简要的使用方法;
-c 在制做档案系统前,检查该partition是否有坏轨。

mtr

mke2fs

选项 说明
-E <扩展参数> 为要创建的文件系统指定一些参数
-f <不连续区段大小> 不知道连续区段的大小
-F 强制执行,即使指定设备没有被挂载或者不是块设备
-l <文件> 从指定文件中读取坏的块列表
-i <字节> 指定每个inode的字节数
-j 创建使用ext3卷号的文件系统
-J <扩展参数> 为使用ext3卷号的文件系统指定一些参数
-L 设置创建的文件系统的标签
-N 指定iniode的数量
-q 执行时不显示任何信息
-E <扩展选项> 为要创建的文件系统指定一些可选项
-f <不连续区段大小> 指定不连接区段的大小
-F 强制执行,即使指定设备没有被挂载或者不是块设备
-l <文件> 从指定的文件中读取坏的块列表
-i <字节> 指定每个inode的字节数
-j 创建使用ext3卷号的文件系统
-J <扩展选项> 为使用ext3卷号文件系统指定一些选项
-L 设置创建的文件系统的标签
-m <百分比值> 指定给管理员保留区块的比例,预设为5%。
-N 指定inode的数量
-q 执行时不显示任何信息
-V 显示版本信息

mount

选项 说明
-a 加载文件/etc/fstab中设置的所有设备
-f 不实际加载设备。可与-v等参数同时使用以查看mount的执行过程
-F 需与-a参数同时使用。所有在/etc/fstab中设置的设备会被同时加载,可加快执行速度
-h 显示在线帮助信息
-L <标签> 加载文件系统标签为<标签>的设备
-l 显示已加载的文件系统列表(同直接执行mount)
-n 不将加载信息记录在/etc/mtab文件中

modprobe

选项 说明
-m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask
-p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理
-v, --verbose 每次创建新目录都显示信息
-Z, --context=CTX 将每个创建的目录的SELinux 安全环境设置为CTX

mknod

mesg

mkswap

mkisofs

nl

netstat

newgrp

ntpdate

nc

repquota

rmmod

reboot

rz

route

read

sed

ss

sleep

swapon

swapoff

setfacl

| -b,--remove-all | 删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留
| -k,--remove-default | 删除缺省的acl规则。如果没有缺省规则,将不提示
| -n,--no-mask | 不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定
| --mask | 重新计算有效权限,即使ACL mask被明确指定。 -d,--default:设定默认的acl规则
| -R,--recursive | 递归的对所有文件及目录进行操作
| -L,--logical | 跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录
| -P |--physical | 跳过所有符号链接,包括符号链接文件

ssh

source

scp

shred

stat

-L, --dereference 跟随链接
-f, --file-system 显示文件系统状态而非文件状态
-c --format=格式 使用指定输出格式代替默认值,每用一次指定格式换一新行
--printf=格式 类似 --format,但是会解释反斜杠转义符,不使用换行作
输出结尾。如果您仍希望使用换行,可以在格式中
加入"\n"
-t, --terse 使用简洁格式输出
--help 显示此帮助信息并退出
--version 显示版本信息并退出

startx

screen

shutdown

选项 说明
-c 当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令
-f 重新启动时不执行fsck;
-F 重新启动时执行fsck
-h 将系统关机;
-k 只是送出信息给所有用户,但不会实际关机;
-n 不调用init程序进行关机,而由shutdown自己进行;
-r shutdown之后重新启动; -t<秒数>:送出警告信息和删除信息之间要延迟多少秒。

su

选项 说明
-, -l --login 使得shell为可登录的shell
-c --commmand=COMMAND 传递单个COMMAND给-c的shell.
-f --fast 传递-f给shell(针对csh或tcsh)
-m --preserve-environment 不重置环境变量
-p 与-m同
-s, --shell=SHELL 如果/etc/shells允许,运行SHELL.

set

top

traceroute

选项 说明
-d 使用Socket层级的排错功能
-f<存活数值> 设置第一个检测数据包的存活数值TTL的大小
-F 设置勿离断位
-g<网关> 设置来源路由网关,最多可设置8个
-i<网络界面> 使用指定的网络界面送出数据包
-I 使用ICMP回应取代UDP资料信息
-m<存活数值> 设置检测数据包的最大存活数值TTL的大小
-n 直接使用IP地址而非主机名称
-p<通信端口> 设置UDP传输协议的通信端口
-q 设置每一跳的探测包数量。默认是3
-r 忽略普通的Routing Table,直接将数据包送到远端主机上
-s<来源地址> 设置本地主机送出数据包的IP地址
-t<服务类型> 设置检测数据包的TOS数值
-v 详细显示指令的执行过程
-w<超时秒数> 设置等待远端主机回报的时间
-x 开启或关闭数据包的正确性检验

tracepath

tune2fs

test

选项 说明
-b<文件>v如果文件为一个块特殊文件,则为真
-c<文件> 如果文件为一个字符特殊文件,则为真
-d<文件> 如果文件为一个目录,则为真
-e<文件> 如果文件存在,则为真
-f<文件> 如果文件为一个普通文件,则为真
-g<文件> 如果设置了文件的SGID位,则为真
-G<文件> 如果文件存在且归该组所有,则为真
-k<文件> 如果设置了文件的粘着位,则为真
-O<文件> 如果文件存在并且归该用户所有,则为真
-p<文件> 如果文件为一个命名管道,则为真
-r<文件> 如果文件可读,则为真
-s<文件> 如果文件的长度不为零,则为真
-S<文件> 如果文件为一个套接字特殊文件,则为真
-u<文件> 如果设置了文件的SUID位,则为真
-w<文件> 如果文件可写,则为真
-x<文件> 如果文件可执行,则为真

tac

tty

time

type

tar

xargs

选项 说明
-i 用 {} 代替 传递的数据
-I string 用string来代替传递的数据-n[数字] 设置每次传递几行数据
-n 选项限制单个命令行的参数个数
-t 显示执行详情
-p 交互模式
-P n 允许的最大线程数量为n
-s[大小] 设置传递参数的最大字节数(小于131072字节)
-x 大于 -s 设置的最大长度结束 xargs命令执行

uptime

umask

选项 说明
-p 输出的权限掩码可直接作为指令来执行
-S 以符号方式输出权限掩码

umount

| -a | 卸除/etc/mtab中记录的所有文件系统;
| -h | 显示帮助;
| -n | 卸除时不要将信息存入/etc/mtab文件中
| -r | 若无法成功卸除,则尝试以只读的方式重新挂入文件系统;
| -t<文件系统类型> | 仅卸除选项中所指定的文件系统;
| -v | 执行时显示详细的信息;
| -V | 显示版本信息

vmstat

vipw

| -s, --shadow | 编辑 shadow 或 gshadow 数据库

write

wall

watch

w

who

whoami

which

whereis

whatis

grup install

seek

- 跳过扇区

sync

vgs

vgdisplay

vgcreate

vgextend

vgreduce

vgremove

vgchange

文件系统区

Linux的文件系统

Linux文件系统结构

/etc目录

文件名和目录 主要作用
passwd 用户库文件、每个用户的用户名、UID、GID和工作目录等都存放在此文件中
shadow 存放用户密码的文件,每个用户的密码加密后都放入此文件
group 主要存储用户组信息
fstab 系统开机启动自动挂载分区列表,需要设置开机自动挂载的分区,都可以在此文件加入
systemd systemd的配置文件目录是CaentOS7.x版本之后新增目录,此目录是Linux启动的重要部分,用来完成对整个系统的基本初始化配置
hosts 设定用户自己的IP与名字的对应表,类似于Windiws下的hosts文件
resolv.conf 客户端DNS配置文件
systemd/system/*.wants 此目录包含所有服务启动脚本,开机时系统将自动启动这些服务,是CentOS7.x版本之后新增目录
sysconfig/network-scripts/ufcfg-eth0... IP地址配置文件,CentOS7.x版本之后网卡名从类似、eth0/eth1的标识变为enp0s3/enp0s4等标识
X11 X-windwos的配置文件
rsyslog.conf 系统日志输出配置文件,在CentOS5.x版本以及之前版本中对应的文件是syslog,CentOS6.x版本以及以后版本中是rsyslog.conf
crontab 系统级别的守护进程配置文件
sysctl.conf 系统内核参数配置文件,在CenOS7.x版本之后,内核参数配置文件转移到了/usr/lib/sysctl.d目录下,但sysctl.conf文件仍是有效,并且可覆盖/usr/lib/sysctl.d中的配置文件
services 定义系统服务与端口的对应关系
profile 系统全家环境变量配置文件

/usr目录

文件或目录 主要作用
lib64以及local/lib64 64位操作系统中的函数库目录
src 该目录包含所有程序的源代码,其中主要是Linux核心程序源代码
bin以及cocal/bin 该目录存放本地安装的软件和其他文件,与Linux系统无关
lib以及cocal/lib 32位操作系统使用的函数看目录
sbin以及local/sbin 该目录存放系统管理员才能执行的指令
include 此目录包含C语言的头文件,文件扩展名大多是.h
share 该目录存放共享的文件和数据库

/var目录

/dev目录

文件或目录 主要作用
fd* 代表软盘设备,fd0代表变化的第一个软盘设备,fd1代表第二个软盘设备
audio* 代表声卡设备
hd* 代表IDE硬盘设备,hda代表第一块IDE硬盘,hdb代表第二块IDE设备,以此类推
sd* 代表SCSI设备 ,sda代表第一块SCSI设备,adb代表第二块SCSI硬盘,以此类推
lp* 代表并行串口
pty* 代表网络中登录的远程终端设备
ram* 代表系统内存
tty* 代表Linux上的虚拟控制台,也叫字符控制台。tty1代表第一个虚拟控制,tty2代表第二个虚拟控制台,以此类推,Linux上一共有6个虚拟控制台
ttyS* 代表串行端口。tty0代表串行端口1,tty1代表串行端口2,类似于Windows下的COM1,COM2
console* 代表系统控制台,也就是桌面控制台,可以直接链接到显示器
null 输出空设备

/proc

文件或目录 主要作用
cpuinfo 关于系统CPU的详细信息,包括CPU名称、型号和类型等
meninfo 内存信息、包括物理内存和虚拟内存
fiesystems 当前系统支持的文件系统类型
devices 内核中的设备驱动程序列表
net 网络使用协议以及状态信息
dma 当前使用的dma通道
iopots 当前使用的I/O
modules 当前系统加载的内核模块信息
stat 系统的各种状态信息
uptime 系统总的时间和空闲时间,以秒为单位
version 内核版本信息
loadavg 系统平均负载
kcore 系统物理内存的映射,与物理内存大小完全一样,但实际不占用这么大的空间
kmsg 内核输出信息,同时被输出到rsyslog

其他目录

CentOS5和6开启启动流程区

ROM

RAM

启动流程介绍

POST加电自检

MBR引导

bootloader:引导加载器,引导程序

GRUB

加载内核

启动流程进阶

MBR:第一阶段

1.5阶段

GRUB:第二阶段

kernel:

ramdisk命令

/sbin/init CentOS6之前

系统初始化:

- POST-->BootSequence(BIOS)-->Bootloader(MBR)--> kernel(ramdisk)-->rootfs(只读)--> init(systemd

init程序的类型

CentOS 5的inittab文件

init初始化

/etc/rc.d/rc.sysinit: 系统初始化脚本

错误解决方案区

CentOS5和6启动解决方案

CentOS5和6第一阶段修复

CentOS5和6(1.5)阶段修复

CentOS5和6第二阶段修复

grub文件损坏修复

给单用户模式加密

/sbin/init 文本破坏修复

内核编译区

Linux基础之内核编译

内核介绍

内核编译

环境检查

检查yum源

[root@localhost ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base epel
Cleaning up everything
Cleaning up list of fastest mirrors
[root@localhost ~]# yum makecache
Loaded plugins: fastestmirror
base                                                 | 3.6 kB     00:00     
epel                                                 | 4.3 kB     00:00     
(1/9): base/group_gz                                   | 155 kB   00:00     
(2/9): base/filelists_db                               | 6.6 MB   00:00     
(3/9): base/other_db                                   | 2.4 MB   00:00     
(4/9): epel/group_gz                                   | 170 kB   00:00     
(5/9): base/primary_db                                 | 5.6 MB   00:00     
(6/9): epel/updateinfo                                 | 757 kB   00:00     
(7/9): epel/filelists_db                               | 7.6 MB   00:00     
(8/9): epel/other_db                                   | 2.1 MB   00:00     
(9/9): epel/primary_db                                 | 4.6 MB   00:00     
Determining fastest mirrors
Metadata Cache Created

开发组包安装或检查

[root@localhost ~]# yum grouplist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Environment Groups:
   Minimal Install
   Compute Node
   Infrastructure Server
   File and Print Server
   MATE Desktop
   Basic Web Server
   Virtualization Host
   Server with GUI
   GNOME Desktop
   KDE Plasma Workspaces
   Development and Creative Workstation
Installed Groups: <<<<<<<<<<已安装的包组
   Development Tools
Available Groups:
   CIFS file server
   Compatibility Libraries
   Console Internet Tools
   Desktop
   Desktop Platform
   Desktop Platform Development
   Eclipse
   Educational Software
   Electronic Lab
   FCoE Storage Client
   Fedora Packager
   General Purpose Desktop
   Graphical Administration Tools
   Haskell
   Legacy UNIX Compatibility
   Messaging Client Support
   Messaging Server Support
   Milkymist
   MySQL Database client
   MySQL Database server
   NFS file server
   Network Storage Server
   SNMP Support
   Scientific Support
   Security Tools
   Server Platform
   Server Platform Development
   Smart Card Support
   Storage Availability Tools
   System Administration Tools
   System Management
   TeX support
   TurboGears application framework
   Virtualization
   Web-Based Enterprise Management
   Xfce
   iSCSI Storage Client
Done

开始编译

编译事项

- [root@localhost ~]# ll /boot/vmlinuz-3.10.0-327.el7.x86_64 
-rwxr-xr-x. 1 root root 5156528 Nov 19  2015 /boot/vmlinuz-3.10.0-327.el7.x86_64
- 那为什么要用他,因为这个模板对应的有个配置文件在/boot/config 里面,里面给我们说了当前那些模块打到里面去了,那些没有打进去
[root@localhost ~]# ll /boot/config-3.10.0-327.el7.x86_64 
-rw-r--r--. 1 root root 126426 Nov 19  2015 /boot/config-3.10.0-327.el7.x86_64

编译开始

[root@localhost ~]# ls
anaconda-ks.cfg  linux-4.12.tar.xz
[root@localhost ~]# ll
total 96868
-rw-------. 1 root root     1147 Jul  5 17:13 anaconda-ks.cfg
-rw-r--r--. 1 root root 99186576 Jul 11 08:47 linux-4.12.tar.xz
4.12.tar.xz
[root@localhost ~]# tar xfv linux-4.12.tar.xz 
linux-4.12/virt/kvm/arm/vgic/vgic-v3.c
linux-4.12/virt/kvm/arm/vgic/vgic.c
linux-4.12/virt/kvm/arm/vgic/vgic.h
linux-4.12/virt/kvm/async_pf.c
linux-4.12/virt/kvm/async_pf.h
linux-4.12/virt/kvm/coalesced_mmio.c
linux-4.12/virt/kvm/coalesced_mmio.h
linux-4.12/virt/kvm/eventfd.c
linux-4.12/virt/kvm/irqchip.c
linux-4.12/virt/kvm/kvm_main.c
linux-4.12/virt/kvm/vfio.c
linux-4.12/virt/kvm/vfio.h
linux-4.12/virt/lib/
linux-4.12/virt/lib/Kconfig
linux-4.12/virt/lib/Makefile
linux-4.12/virt/lib/irqbypass.c
 
[root@localhost ~]# ls
anaconda-ks.cfg  linux-4.12  linux-4.12.tar.xz
[root@localhost ~]# du -sh linux-4.12
842M    linux-4.12

编译功能模块

 [root@localhost boot]# ls /boot/config-3.10.0-327.el7.x86_64 
/boot/config-3.10.0-327.el7.x86_64
[root@localhost boot]# vim  /boot/config-3.10.0-327.el7.x86_64 
# Automatically generated file; DO NOT EDIT.
# Linux/x86_64 3.10.0-327.el7.x86_64 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_WESTWOOD=m
CONFIG_TCP_CONG_HTCP=m
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
CONFIG_TCP_CONG_SCALABLE=m
CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
CONFIG_TCP_CONG_DCTCP=m
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
# CONFIG_NTFS_FS is not set    《《《没有启用状态

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_VMCORE=y
CONFIG_PROC_SYSCTL=y
[root@localhost boot]# cp  /boot/config-3.10.0-327.el7.x86_64  /root/linux-4.12/.config
[root@localhost linux-4.12]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             4
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 58
Model name:            Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
Stepping:              9
CPU MHz:               2594.107
BogoMIPS:              5188.21
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3
[root@localhost linux-4.12]# make -j 4
  HOSTCC  scripts/sign-file
scripts/sign-file.c:25:30: fatal error: openssl/opensslv.h: No such file or directory
 #include <openssl/opensslv.h>
- [root@localhost linux-4.12]# yum -y install openssl-devel
  IHEX2FW firmware/emi26/firmware.fw
  IHEX2FW firmware/emi26/bitstream.fw
  IHEX2FW firmware/emi62/loader.fw
  IHEX2FW firmware/emi62/bitstream.fw
  IHEX2FW firmware/emi62/spdif.fw
  IHEX2FW firmware/emi62/midi.fw
  H16TOFW firmware/edgeport/boot.fw
  H16TOFW firmware/edgeport/boot2.fw
  H16TOFW firmware/edgeport/down.fw
  H16TOFW firmware/edgeport/down2.fw
  IHEX2FW firmware/whiteheat_loader.fw
  IHEX2FW firmware/whiteheat.fw
  IHEX2FW firmware/keyspan_pda/keyspan_pda.fw
  IHEX2FW firmware/keyspan_pda/xircom_pgs.fw
[root@localhost linux-4.12]# make modules_install
[root@localhost linux-4.12]# ls /lib/modules
3.10.0-327.el7.x86_64  4.12.0-1.0-li-linux
[root@localhost linux-4.12]# make install
sh ./arch/x86/boot/install.sh 4.12.0-1.0-li-linux arch/x86/boot/bzImage \
    System.map "/boot"

Linux基础之三剑客AWK基础篇

awk介绍

awk基本用法

-awk程序
- awk 程序通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块,共3部分组成

[root@localhost ~]# awk -F: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-bus-proxy
systemd-network
dbus
polkitd
colord
abrt
libstoragemgmt
rpc
 -  -v :var=value: 自定义变量
[root@localhost ~]# awk -v RS=':' '{print }'  /etc/passwd
root
x
0
0
root
/root
/bin/bash
bin
x
1
1
bin
/bin
/sbin/nologin
daemon
x
2
2
daemon
/sbin

awk语言

awk工作原理

print

    [root@localhost ~]# awk '{print "hello,awk"}' /etc/passwd
hello,awk
hello,awk
hello,awk
hello,awk
hello,awk
hello,awk
hello,awk
hello,awk
[root@localhost ~]# awk -F: '{print $1$4}' /etc/passwd 
root0
bin1
daemon2
adm4
lp7
sync0
shutdown0
halt0
mail12
operator0
games100
ftp50
nobody99
systemd-bus-proxy997
systemd-network192
dbus81
polkitd996
colord995
abrt173
[root@localhost ~]# awk -F: '{print $1,$4}' /etc/passwd 
root 0
bin 1
daemon 2
adm 4
lp 7
sync 0
shutdown 0
halt 0
mail 12
operator 0
games 100
ftp 50
nobody 99
systemd-bus-proxy 997
systemd-network 192
dbus 81
polkitd 996
colord 995
abrt 173
[root@localhost ~]# awk -F: '{print $1"===="$4}' /etc/passwd 
root====0
bin====1
daemon====2
adm====4
lp====7
sync====0
shutdown====0
halt====0
mail====12
operator====0
games====100
ftp====50
nobody====99
systemd-bus-proxy====997
systemd-network====192
dbus====81
polkitd====996
colord====995
abrt====173
[root@localhost ~]# awk -F: '{print $1====$4}' /etc/passwd  
awk: cmd. line:1: {print $1====$4}
awk: cmd. line:1:            ^ syntax error
[root@localhost ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       41922560  385320  41537240   1% /
devtmpfs         2008832       0   2008832   0% /dev
tmpfs            2023456       0   2023456   0% /dev/shm
tmpfs            2023456    8772   2014684   1% /run
tmpfs            2023456       0   2023456   0% /sys/fs/cgroup
/dev/sda3       20961280 2679012  18282268  13% /usr
/dev/sda1         508580  148756    359824  30% /boot
tmpfs             404692       0    404692   0% /run/user/0
[root@localhost ~]# df|awk '{print $5}'
Use%
1%
0%
0%
1%
0%
13%
30%
0%
[root@localhost ~]# df|grep '^/dev/sd'|awk '{print $5}'|awk -F% '{print $1 }'
1
13
30
[root@localhost ~]# awk '{print }' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
[root@localhost ~]# awk -F: '{print $1,$5,$3}' /etc/passwd
root root 0
bin bin 1
daemon daemon 2
adm adm 3
lp lp 4
sync sync 5
shutdown shutdown 6
halt halt 7
mail mail 8
operator operator 11
games games 12
ftp FTP User 14
nobody Nobody 99
[root@localhost ~]# awk -F: '{print $1-3}' /etc/passwd     
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
[root@localhost ~]# awk -F: '{print $1"\t\t\t"$3}' /etc/passwd
root                    0
bin                     1
daemon                  2
adm                     3
lp                      4
sync                    5

awk变量

内置变量

[root@localhost ~]# awk -v FS=: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
[root@localhost ~]# awk -v FS=':' '{print $1,FS,$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
[root@localhost ~]# awk -F: -v OFS='-' '{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
[root@localhost ~]# awk -v RS=' ' '{print }' /etc/passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@localhost ~]# awk -F: -v ORS="---" '{print $1}' /etc/passwd 
root---bin---daemon---adm---lp---sync---shutdown---halt---mail---operator---games---ftp---nobody---systemd-bus-proxy---systemd-network---dbus---polkitd---colord---abrt---libstoragemgmt---rpc---setroubleshoot---rtkit---usbmuxd---tss---geoclue---chrony---mysql---pulse---gdm---rpcuser---nfsnobody---postfix---ntp---ssh
[root@localhost ~]# awk -F: 'END{print NF}' /etc/passwd   
7
[root@localhost ~]# awk -F: '{print NR,$1}'  /etc/passwd
1 root
2 bin
3 daemon
4 adm
5 lp
6 sync
7 shutdown
8 halt
9 mail
10 operator
11 games
12 ftp
13 nobody
14 systemd-bus-proxy
15 systemd-network
16 dbus
17 polkitd
18 colord
19 abrt
[root@localhost ~]# awk '{print FNR,$0}' /etc/issue  /etc/fstab 
1 \S
2 Kernel \r on an \m
3 
4 Mage Education Learning Services
5 http://www.magedu.com
6 
1 
2 #
3 # /etc/fstab
4 # Created by anaconda on Thu Jul 13 08:26:25 2017
5 #
6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
8 #
[root@localhost ~]# awk -F: '{print FILENAME,$0}' /etc/issue
/etc/issue \S
/etc/issue Kernel \r on an \m
/etc/issue 
/etc/issue Mage Education Learning Services
/etc/issue http://www.magedu.com
/etc/issue 
[root@localhost ~]# awk -F: '{print ARGC}'  /etc/passwd /etc/issue /etc/fstab 
4
4
4
4
4
4
4
4
4
[root@localhost ~]# awk -F: '{print ARGC,ARGV[0]}'  /etc/passwd /etc/issue /etc/fstab  
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
4 awk
变量名 属性
$0 当前记录
$1~$n 当前记录的第n个字段
FS 输入只读分割符 默认的是空格
RS 输入记录分割符 默认为换行符
NF 当前记录中的字段个数,就是有多少列
NR 已经独处的记录数,就是行号,从1开始
OFS 输出字段分割符 默认也是空格
ORS 输出的记录分割符 默认为换行符
FNR 分别计数
FILENAME 显示当前文件名
ARGC 显示参数个数
ARGV 打印数组参数

注:内置变量很多,参阅相关资料

自定义变量

[root@localhost ~]# awk -v name=root '{print name}' /etc/passwd  
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
[root@localhost ~]# awk '{sex="male";print sex }'  /etc/passwd
male
male
male
male
male
male
male
male
male
male
male
male
male
male
male
[root@localhost ~]# vi f1.awk 
 {sex="male";print sex}  
~                                                                 
~                                                                 
[root@localhost ~]# awk -f  f1.awk /etc/passwd
male
male
male
male
male
male
male
male
male
male
male

printf

[root@localhost ~]# awk -F: '{printf "%s---%d\n", $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-bus-proxy---999
systemd-network---192
dbus---81
[root@localhost ~]# awk -F: '{printf "%s---%d\n", $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-bus-proxy---999
systemd-network---192
dbus---81
[root@localhost ~]# awk -F: '{printf "%-30s---%d\n", $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-bus-proxy             ---999
systemd-network               ---192
[root@localhost ~]# awk -F: '{printf "%+30s---%+30d\n", $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
[root@localhost ~]# awk -F: '{printf "username:%-30s%-10d\n", $1,$3}'  /etc/passwd
username:root                          0         
username:bin                           1         
username:daemon                        2         
username:adm                           3         
username:lp                            4         
username:sync                          5         
username:shutdown                      6         
username:halt                          7         
username:mail                          8         
username:operator                      11        
username:games                         12        
username:ftp                           14        
username:nobody                        99        
username:systemd-bus-proxy             999       
username:systemd-network               192       
username:dbus                          81        

操作符

[root@localhost ~]# awk -F: '$0 ~ /root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# awk -F: '$3<=1000{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-bus-proxy 999
systemd-network 192
[root@localhost ~]# awk -F: '$3>=1000{print $1,$3}'  /etc/passwd
nfsnobody 65534
mageedu 1000
[root@localhost ~]# awk -F: '$3>=0 && $3<=1000 {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-bus-proxy 999
systemd-network 192
dbus 81
[root@localhost ~]# awk -F: '$3<=0 || $3>=1000 {print $1,$3}' /etc/passwd  
root 0
nfsnobody 65534
mageedu 1000
[root@localhost ~]# awk -F: '  !  ($3>1000) {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-bus-proxy 999
systemd-network 192
dbus 81

正则表达式

[root@localhost ~]# df|awk '$0 ~ "^/dev/sd"' 
/dev/sda2       41922560  388520  41534040   1% /
/dev/sda3       20961280 2679012  18282268  13% /usr
/dev/sda1         508580  148756    359824  30% /boot
[root@localhost ~]# df|awk '$0 !~ "^/dev/sd"' 
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs         2008832       0   2008832   0% /dev
tmpfs            2023456       0   2023456   0% /dev/shm
tmpfs            2023456    8800   2014656   1% /run
tmpfs            2023456       0   2023456   0% /sys/fs/cgroup
tmpfs             404692       0    404692   0% /run/user/0

BEGIN 和END 模块

三目表达式

[root@localhost ~]# awk -F: '{$3>=1000?username="common user":username="sysuser";printf "%s  %s  %d\n" ,username,$1,$3}' /etc/passwd
sysuser  root  0
sysuser  bin  1
sysuser  daemon  2
sysuser  adm  3
sysuser  lp  4
sysuser  sync  5
sysuser  shutdown  6
sysuser  halt  7
sysuser  mail  8
sysuser  operator  11
sysuser  games  12
sysuser  ftp  14
sysuser  nobody  99
[root@localhost ~]# awk -F: '{$3>=1000?username="common user":username="sysuser";printf "%s  %20s  %20d\n" ,username,$1,$3}' /etc/passwd 
sysuser                  root                     0
sysuser                   bin                     1
sysuser                daemon                     2
sysuser                   adm                     3
sysuser                    lp                     4
sysuser                  sync                     5
sysuser              shutdown                     6
sysuser                  halt                     7
sysuser                  mail                     8
sysuser              operator                    11
sysuser                 games                    12
sysuser                   ftp                    14
sysuser                nobody                    99
sysuser     systemd-bus-proxy                   999
sysuser       systemd-network                   192
sysuser                  dbus                    81
sysuser               polkitd                   998
sysuser                colord                   997
sysuser                  abrt                   173
sysuser        libstoragemgmt                   996
sysuser                   rpc                    32

linux三剑客之sed基础篇

sed介绍

sed选项详解

-n选项

[root@localhost app]# sed -n  'p' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@localhost app]# sed   'p' passwd    
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

d选项

[root@localhost app]# cat -n passwd|sed '2d'
     1  root:x:0:0:root:/root:/bin/bash
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost app]# cat -n passwd|sed '1~2d'
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     8  halt:x:7:0:halt:/sbin:/sbin/halt
    10  operator:x:11:0:operator:/root:/sbin/nologin
    12  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    14  systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
    16  dbus:x:81:81:System message bus:/:/sbin/nologin
    18  abrt:x:173:173::/etc/abrt:/sbin/nologin
    20  tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    22  usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
    24  saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
    26  rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
    28  chrony:x:991:988::/var/lib/chrony:/sbin/nologin
    30  qemu:x:107:107:qemu user:/:/sbin/nologin

a选项

[root@localhost app]# cat -n passwd|sed '5aasdasdasdasdasdasdasdasd' 
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin  << 我追加的行
asdasdasdasdasdasdasdasd
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin
    11  games:x:12:100:games:/usr/games:/sbin/nologin
[root@localhost app]# cat -n passwd|sed '5a\asdasdas\ndfdsdsd\nsdsdsdsd'
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
asdasdas
dfdsdsd
sdsdsdsd
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin

i选项

[root@localhost app]# cat -n passwd|sed '5i\asdasdas\ndfdsdsd\nsdsdsdsd'
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
asdasdas
dfdsdsd
sdsdsdsd
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin

c选项

[root@localhost app]# cat -n passwd|sed '5c\asdasdas'
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
asdasdas
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost app]# cat -n passwd|sed '5,7c\asdasdas'
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
asdasdas
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin

w选项

[root@localhost app]# cat -n passwd|sed '11,21w /app/qqq'    
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin
    11  games:x:12:100:games:/usr/games:/sbin/nologin
    12  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13  nobody:x:99:99:Nobody:/:/sbin/nologin
    14  systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
    15  systemd-network:x:998:997:systemd Network Management:/:/sbin/nologin
    16  dbus:x:81:81:System message bus:/:/sbin/nologin
    17  polkitd:x:997:996:User for polkitd:/:/sbin/nologin
    18  abrt:x:173:173::/etc/abrt:/sbin/nologin
    19  unbound:x:996:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
    20  tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    21  colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin
[root@localhost app]# cat /app/qqq 
    11  games:x:12:100:games:/usr/games:/sbin/nologin
    12  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13  nobody:x:99:99:Nobody:/:/sbin/nologin
    14  systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
    15  systemd-network:x:998:997:systemd Network Management:/:/sbin/nologin
    16  dbus:x:81:81:System message bus:/:/sbin/nologin
    17  polkitd:x:997:996:User for polkitd:/:/sbin/nologin
    18  abrt:x:173:173::/etc/abrt:/sbin/nologin
    19  unbound:x:996:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
    20  tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    21  colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin

r选项

[root@localhost app]# cat -n passwd|sed '5r /etc/issue'
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
\S
Kernel \r on an \m        <<<意思是把他读到第5行下面

     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost app]# cat -n passwd|sed '5,7r /etc/issue'
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
\S
Kernel \r on an \m

     6  sync:x:5:0:sync:/sbin:/bin/sync
\S
Kernel \r on an \m

     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
\S
Kernel \r on an \m

     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin

=号选项

[root@localhost app]# sed  '='  passwd     
1
root:x:0:0:root:/root:/bin/bash
2
bin:x:1:1:bin:/bin:/sbin/nologin
3
daemon:x:2:2:daemon:/sbin:/sbin/nologin
4
adm:x:3:4:adm:/var/adm:/sbin/nologin
5
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6
sync:x:5:0:sync:/sbin:/bin/sync
7
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8
halt:x:7:0:halt:/sbin:/sbin/halt
9
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10
operator:x:11:0:operator:/root:/sbin/nologin
11

!选项

[root@localhost app]#  cat -n passwd |sed -n '10!p'
     1  root:x:0:0:root:/root:/bin/bash 
     2  bin:x:1:1:bin:/bin:/sbin/nologin  
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    11  games:x:12:100:games:/usr/games:/sbin/nologin
    12  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13  nobody:x:99:99:Nobody:/:/sbin/nologin
    14  systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
    15  systemd-network:x:998:997:systemd Network Management:/:/sbin/nologin
    16  dbus:x:81:81:System message bus:/:/sbin/nologin
    17  polkitd:x:997:996:User for polkitd:/:/sbin/nologin
    18  abrt:x:173:173::/etc/abrt:/sbin/nologin

sed工具

s/// :查找替换,#

[root@localhost ~]# sed 's/root/ROOT/' qqq 
ROOT  root root root
ROOT 
ROOT
ROOT
ROOT
ROOT
ROOT
ROOT
ROOT
ROOT
[root@localhost ~]# sed '2~2s/root/ROOT/' qqq       
root  root root root
ROOT 
root
ROOT
root
ROOT
root
ROOT
root
ROOT
[root@localhost ~]# sed '2~2s@root@ROOT@' qqq   
root  root root root
ROOT 
root
ROOT
root
ROOT
root
ROOT
root
ROOT

p选项

[root@localhost ~]# sed '2~2s@root@ROOT@gp' qqq
root  root root root
ROOT 
ROOT   <<<把匹配成功的行在打印一遍
root
ROOT
ROOT
root
ROOT
ROOT
root
ROOT
ROOT
root
ROOT
ROOT

地址定界

[root@localhost app]# sed '2p' passwd   
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin   把第2行显示2次
daemon:x:2:2:daemon:/sbin:/sbin/nologin 
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@localhost app]# sed  -n /^r/p passwd 
root:x:0:0:root:/root:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin 

地址范围详解(1)

[root@localhost app]# sed  -n 3,6p passwd   
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
[root@localhost app]# sed  -n 3,10p passwd  
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost app]# cat -n /etc/passwd
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost app]# sed  -n 3,+10p passwd          
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

地址范围详解(2)

[root@localhost app]# sed -n '/^h/,/^s/p' passwd 
halt:x:7:0:halt:/sbin:/sbin/halt    <<<<<<<这是开头
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin 
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin  <这是结尾

地址范围详解(3)

 [root@localhost app]# sed -n '3,/^s/p' passwd 
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

步进

[root@localhost app]# cat -n passwd|sed -n '1~2p' 
     1  root:x:0:0:root:/root:/bin/bash
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    11  games:x:12:100:games:/usr/games:/sbin/nologin
    13  nobody:x:99:99:Nobody:/:/sbin/nologin
    15  systemd-network:x:998:997:systemd Network Management:/:/sbin/nologin
    17  polkitd:x:997:996:User for polkitd:/:/sbin/nologin
    19  unbound:x:996:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
    21  colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin
    23  geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin
    25  libstoragemgmt:x:992:990:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
    27  rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
    29  radvd:x:75:75:radvd user:/:/sbin/nologin
    31  ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@localhost app]# cat -n passwd|sed -n '2~2p'  
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     8  halt:x:7:0:halt:/sbin:/sbin/halt
    10  operator:x:11:0:operator:/root:/sbin/nologin
    12  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    14  systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
    16  dbus:x:81:81:System message bus:/:/sbin/nologin
    18  abrt:x:173:173::/etc/abrt:/sbin/nologin
    20  tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
    22  usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
    24  saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
    26  rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
    28  chrony:x:991:988::/var/lib/chrony:/sbin/nologin
    30  qemu:x:107:107:qemu user:/:/sbin/nologin 

Linux基础之三剑客AWK进阶

awk工作原理

awk PATTERN

不过PATTERN有多种写法

 - 如果为指定:空模式,匹配每一行 ,意思就是说不写PATTERN,只写action
 - 示例
     [root@localhost ~]# awk -F: '{print $1,3}' /etc/passwd
root 3
bin 3
daemon 3
adm 3
lp 3
sync 3
shutdown 3
halt 3
mail 3
operator 3
games 3
ftp 3
nobody 3
systemd-bus-proxy 3
systemd-network 3
dbus 3
polkitd 3
colord 3
abrt 3
[root@localhost ~]# awk  /^UUID/ /etc/fstab 
UUID=5fa28b49-456d-4303-81d0-811b1bfa3ae9 /                       xfs     defaults        0 0
UUID=b0e8912e-cb67-4973-8557-f190f961c0cd /boot                   xfs     defaults        0 0
UUID=c204831a-efc0-4b13-bc39-259bd22cb677 /usr                    xfs     defaults        0 0
UUID=c8298654-edd5-44df-8014-1dbf1fb8dba7 swap                    swap    defaults        0 0
[root@localhost ~]# awk  '/^UUID/ {print $0  }' /etc/fstab 
UUID=5fa28b49-456d-4303-81d0-811b1bfa3ae9 /                       xfs     defaults        0 0
UUID=b0e8912e-cb67-4973-8557-f190f961c0cd /boot                   xfs     defaults        0 0
UUID=c204831a-efc0-4b13-bc39-259bd22cb677 /usr                    xfs     defaults        0 0
UUID=c8298654-edd5-44df-8014-1dbf1fb8dba7 swap                    swap    defaults        0 0
#
# /etc/fstab
# Created by anaconda on Thu Jul 13 08:26:25 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
[root@localhost ~]# df| awk '/^\/dev\/sd/ {print $5}'
1%
13%
30%
[root@localhost ~]# awk -F: '"" {print $0  }' /etc/fstab  
[root@localhost ~]# awk -F: '"rrr" {print $0  }' /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Thu Jul 13 08:26:25 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=5fa28b49-456d-4303-81d0-811b1bfa3ae9 /                       xfs     defaults        0 0
UUID=b0e8912e-cb67-4973-8557-f190f961c0cd /boot                   xfs     defaults        0 0
UUID=c204831a-efc0-4b13-bc39-259bd22cb677 /usr                    xfs     defaults        0 0
UUID=c8298654-edd5-44df-8014-1dbf1fb8dba7 swap                    swap    defaults        0 0

line ranges:行范围

[root@localhost ~]# awk -F: '/^b/,/^f/' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

-还可以取中间

[root@localhost ~]# awk -F: 'NR>=10&&NR<=20{print NR,$0}'  /etc/passwd  
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
14 systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
15 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
16 dbus:x:81:81:System message bus:/:/sbin/nologin
17 polkitd:x:998:996:User for polkitd:/:/sbin/nologin
18 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
19 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
20 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

BEGIN/END模式

[root@localhost ~]# awk -F: 'BEGIN{print" linenumber     username    userid"}NR>=10&&NR<=20{printf  "%s-12   %+15s %+10d \n " ,NR,$1,$3}'  /etc/passwd
 linenumber     username    userid
10-12          operator        +11 
 11-12             games        +12 
 12-12               ftp        +14 
 13-12            nobody        +99 
 14-12   systemd-bus-proxy       +999 
 15-12   systemd-network       +192 
 16-12              dbus        +81 
 17-12           polkitd       +998 
 18-12               tss        +59 
 19-12           postfix        +89 
 20-12              sshd        +74 

awk action,循环,数组

awk控制语句if-else

[root@localhost ~]# awk -F: '{if($NF=="/bin/bash") print $1}' /etc/passwd
root

-第二判断

[root@localhost ~]# awk '{if(NF>5) print $0}' /etc/fstab
# Created by anaconda on Fri Jul 14 03:57:39 2017
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/dev/mapper/cl-root     /                       xfs     defaults        0 0
/dev/mapper/cl-app      /app                    xfs     defaults        0 0
UUID=c15af5a4-49d5-4551-abda-921540bf8424 /boot                   xfs     defaults        0 0
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
[root@localhost ~]# df -h|awk -F% '/^\/dev/{print $1}'|awk '$NF>=10{print $1,$5}' 
/dev/sda1 14

awk控制语句

{ 
 if ( $1== "foo" ) { 
 if ( $2== "foo" ) { 
 print "uno" 
 } else { 
 print "one" 
 } 
 } elseif ($1== "bar" ) { 
 print "two" 
 } else { 
 print "three" 
 } 
} 
[root@localhost ~]# awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {print $i,length($i); i++}}' /etc/grub2.cfg
linux16 7
/vmlinuz-3.10.0-514.el7.x86_64 30
root=/dev/mapper/cl-root 24
ro 2
crashkernel=auto 16
rd.lvm.lv=cl/root 17
rd.lvm.lv=cl/swap 17
rhgb 4
quiet 5
LANG=en_US.UTF-8 16
net.ifnames=0 13
linux16 7
/vmlinuz-0-rescue-a8151f75d28c4b7ba1db0b5ad8c60cd6 50
root=/dev/mapper/cl-root 24
ro 2
crashkernel=auto 16
rd.lvm.lv=cl/root 17
rd.lvm.lv=cl/swap 17
rhgb 4
quiet 5
[root@localhost ~]# awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {if(length($i)>=10) {print $i,length($i)}; i++}}' /etc/grub2.cfg
/vmlinuz-3.10.0-514.el7.x86_64 30
root=/dev/mapper/cl-root 24
crashkernel=auto 16
rd.lvm.lv=cl/root 17
rd.lvm.lv=cl/swap 17
LANG=en_US.UTF-8 16
net.ifnames=0 13
/vmlinuz-0-rescue-a8151f75d28c4b7ba1db0b5ad8c60cd6 50
root=/dev/mapper/cl-root 24
crashkernel=auto 16
rd.lvm.lv=cl/root 17
rd.lvm.lv=cl/swap 17
[root@localhost ~]#  awk 'BEGIN{ total=0;i=0;do{ total+=i;i++;}while(i<=100);print total}'
5050

for循环

[root@localhost ~]# awk '/^[[:space:]]*linux16/{for(i=1;i<=NF;i++) {print $i,length($i)}}' /etc/grub2.cfg
linux16 7
/vmlinuz-3.10.0-514.el7.x86_64 30
root=/dev/mapper/cl-root 24
ro 2
crashkernel=auto 16
rd.lvm.lv=cl/root 17
rd.lvm.lv=cl/swap 17
rhgb 4
quiet 5
LANG=en_US.UTF-8 16
net.ifnames=0 13
linux16 7
/vmlinuz-0-rescue-a8151f75d28c4b7ba1db0b5ad8c60cd6 50
root=/dev/mapper/cl-root 24
ro 2
crashkernel=auto 16
rd.lvm.lv=cl/root 17
rd.lvm.lv=cl/swap 17
rhgb 4
quiet 5

其他语句

[root@localhost ~]# awk -F: '{if($3%2!=0) next; print $1,$3}' /etc/passwd
root 0
daemon 2
lp 4
shutdown 6
mail 8
games 12
ftp 14
systemd-network 192
polkitd 998
libstoragemgmt 996
rpc 32
rtkit 172
geoclue 994
gdm 42
nfsnobody 65534
ntp 38
sshd 74
tcpdump 72
mageedu 1000

AWK数组

[root@localhost ~]# awk 'BEGIN{weekdays["mon"]="Monday";weekdays["tue"]="Tuesday";print weekdays["mon"]}'
Monday
上一篇下一篇

猜你喜欢

热点阅读