系统命令
runlevel # 查看当前的运行级别
systemctl status firewalld # 开启网络服务功能
stop # 关闭
restart # 重启
reload # 重载
reboot # 重启
halt # 关机
poweroff # 关机
文件操作
cat # 在命令提示符下查看文件内容
more # 在命令提示符中分页查看文件内容
less # 命令行中查看文件可以上下翻页反复浏览
head 5n /etc/passwd # 命令行中查看文件头几行
tail 5n /etc/passwd # 命令行中查看文件尾几行
wc # 统计文件的单词数 行数等信息
目录管理
pwd # 查看你当前所在的目录
cd # 切换目录
ls # 查看显示目录的内容
du # 统计目录和文件空间的占用情况
mkdir # 创建新目录
touch # 创建文件
rm # 删除文件
ln # 创建硬链接
ln -s # 创建软链接
cp # 复制文件或目录
mv # 移动文件或目录
which # 查看linux命令所在的目录
账号与权限
1.组管理
groupadd group_name # 创建一个新用户组
groupdel group_name # 删除一个用户组
groupmod -n new_group_name old_group_name # 重命名一个用户组
2.用户管理
useradd zhangsan # 创建账户张三
passwd zhangsan # 给用户设置密码
userdel -r zhangsan # 删除张三及他的宿主目录
3.用户组管理
gpasswd -a zhangsan root # 将张三用户加入root组
groups zhangsan # 确认zhangsan用户在root组
gpasswd -d lisi root # 将李zhangsan户从root组中删除
4.权限管理
chown -R zhangsan /aaa # 将文件夹/aaa的多有者修改为zhangsan
chown root:root /aaa # 将/aaa文件夹的属主和属组都改成root
chmod 777 /aaa # 给文件夹文件/aaa设置权限为777
磁盘
查看磁盘使
df -hl
:查看磁盘使用情况
[root@linux-node1 ~]# df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 37G 2.9G 35G 8% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 16K 910M 1% /dev/shm
tmpfs 910M 34M 877M 4% /run
查看指定目录使用
df -h /home
:查看指定目录磁盘使用情况
[root@linux-node1 ~]# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 37G 2.9G 35G 8% /
查看大于1G文件夹
du -sh ./* | grep G
: 查看当前目录下个文件大于1G的文件夹
[root@linux-node1 /]# du -sh ./*|grep G
2.2G ./usr
1.2G ./home
大于10M小于100M,倒序排列
find / -type f -size +10M -a -size -100M -print0 | xargs -0 du -h | sort -nr
: 查找文件大于10M小于100M,倒序排列
[root@linux-node1 /]# find / -type f -size +10M -a -size -100M -print0 | xargs -0 du -h | sort -nr
85M /usr/bin/docker
80M /var/lib/rpm/Packages
48M /usr/bin/containerd
47M /boot/initramfs-0-rescue-8b956f09fe0549c4b6182589acceab30.img
find / -type f -size +10M -a -size -100M # 查找根文件夹下大于 10M小于 100M
CPU
top
top
:查看cpu 内存等使用情况
[root@linux-node1 /]# top
top - 03:24:29 # 表示当前时间
up 4 days, 22:56, # 系统已经运行时间
2 users, # 当前登录用户数
load average: 0.01, 0.03, 0.05 # 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值
Tasks: 123 total(进程总数), 2 running(正在运行进程数), 121 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0
us, 0.0 # 用户空间占用CPU百分比
sy, 0.0 # 内核空间占用CPU百分比
ni,100.0 # 用户进程空间内改变过优先级的进程占用CPU百分比
id, 0.0 # 空闲CPU百分比
wa, 0.0 # 等待输入输出的CPU时间百分比
hi, 0.0 # 硬中断(Hardware IRQ)占用CPU的百分比
si, 0.0 # 软中断(Software Interrupts)占用CPU的百分比
st
KiB Mem : 1863224 total(物理内存总量), 219592 free, 498732 used, 1144900 buff/cache
KiB Swap: 2097148 total(交换区总量), 2094580 free, 2568 used. 1043628 avail Mem
进程id 进程所有者 优先级
PID USER PR RES SHR S %CPU %MEM TIME+ COMMAND
6583 root 20 5156 3796 S 0.3 0.3 10:54.90 vmtoolsd
7284 root 20 2252 1580 R 0.3 0.1 0:00.03 top
1 root 20 3844 2436 S 0.0 0.2 2:04.28 systemd
查看CPU是用率
sar -u 1 5
: 每1秒采集一次CPU使用率,共采集5次
[root@linux-node1 /]# yum install sysstat # 安装sar工具
[root@linux-node1 /]# sar -u 1 5 # 每1秒采集一次CPU使用率,共采集5次
03:58:40 AM CPU %user %nice %system %iowait %steal %idle
03:58:41 AM all 0.00 0.00 3.61 0.00 0.00 96.39
03:58:42 AM all 0.00 0.00 0.00 0.00 0.00 100.00
03:58:43 AM all 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.62 0.00 0.00 99.38
查看CPU基本信息
cat /proc/cpuinfo
: 查看CPU基本信息
[root@linux-node1 ~]# cat /proc/cpuinfo
processor : 0 # 系统中逻辑处理核的编号
vendor_id : GenuineIntel # CPU制造商
cpu family : 6 # CPU产品系列代号
model : 142 # CPU属于其系列中的哪一代的代号
model name : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz # CPU属于的名字及其编号、标称主频
stepping : 9 # CPU属于制作更新版本
cache size : 4096 KB # CPU二级缓存大小
physical id : 0 # 单个CPU的标号
siblings : 1 # 单个CPU逻辑物理核数
cpu cores : 1 # cpu个数
查看CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
:查看CPU个数
[root@linux-node1 ~]# cat /proc/cpuinfo
processor : 0 # 系统中逻辑处理核的编号
vendor_id : GenuineIntel # CPU制造商
cpu family : 6 # CPU产品系列代号
model : 142 # CPU属于其系列中的哪一代的代号
model name : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz # CPU属于的名字及其编号、标称主频
stepping : 9 # CPU属于制作更新版本
cache size : 4096 KB # CPU二级缓存大小
physical id : 0 # 单个CPU的标号
siblings : 1 # 单个CPU逻辑物理核数
cpu cores : 1 # cpu个数
内存
查询内存详情
free -m
:查询内存详情
[root@linux-node1 ~]# free -m
total used free shared buff/cache available
Mem: 1819 486 190 32 1142 1020
Swap: 2047 2 2045
总内存 已使用 可用空间 多进程共享内存 磁盘缓存大小
查看内存详细信息
cat /proc/meminfo
:查看内存详细信息
[root@linux-node1 ~]# cat /proc/meminfo
MemTotal: 1863224 kB
MemFree: 195568 kB
MemAvailable: 1044924 kB
Buffers: 0 kB
vmstat查看内存
vmstat
:查看内存
[root@linux-node1 shdir]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 2568 181696 0 1057272 0 0 9 52 107 155 2 1 97 0 0
r # 表示运行队列(就是说多少个进程真的分配到CPU),当这个值超过了CPU数目,就会出现CPU瓶颈了。
b # 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。
swpd # 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了
free #空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。
buff # 用来存储目录里面有什么内容,权限等的缓存,我本机大概占用300多M
cache # cache直接用来记忆我们打开的文件,给文件做缓冲
si # 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。
so # 每秒虚拟内存写入磁盘的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。
bi # 块设备每秒接收的块数量,当处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒
bo # 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
in # 每秒CPU的中断次数,包括时间中断
cs # 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好
us # 用户CPU使用百分比
sy # 系统CPU使用百分比
id # idle(空闲CPU百分比),一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wt # 等待IO CPU时间(大于0代表系统资源不足)
显示内存使用详细信息
vmstat -s
: 显示内存使用详细信息
[root@linux-node1 ~]# vmstat -s
1863224 K total memory
497780 K used memory
599272 K active memory
620812 K inactive memory
188652 K free memory
0 K buffer memory
1176792 K swap cache
2097148 K total swap
2568 K used swap
2094580 K free swap
608294 non-nice user cpu ticks
625 nice user cpu ticks
539067 system cpu ticks
63631049 idle cpu ticks
15051 IO-wait cpu ticks
0 IRQ cpu ticks
10324 softirq cpu ticks
0 stolen cpu ticks
420669 pages paged in
3118282 pages paged out
7 pages swapped in
627 pages swapped out
73440819 interrupts
111933117 CPU context switches
1574604468 boot time
1097163 forks
负载
什么是系统平均负载?
什么是系统平均负载?
# 1. 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。
# 2. 如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。
# 3. 如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
# 4. 如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。
# 5. 1可以被认为是最优的负载值。负载是会随着系统不同改变得。
# 6. 单CPU系统1-3和SMP系统6-10都是可能接受的。
查询系统当前负载信息
uptime
: 查询系统当前负载信息
[root@linux-node1 ~]# uptime
21:03:50 up 5 days, 5:14, 2 users, load average: 0.02, 0.04, 0.05
'''显示内容说明:'''
10:19:04 # 系统当前时间
up 257 days, 18:56 # 主机已运行时间,时间越大,说明你的机器越稳定。
12 user # 用户连接数,是总连接数而不是用户数
load average # 系统平均负载,统计最近1,5,15分钟的系统平均负载
查看负载信息
cat /proc/loadavg
:查看负载信息
[root@linux-node1 ~]# cat /proc/loadavg
0.00 0.01 0.05 2/384 4482
# 0.00 0.01 0.05 表示最近1分钟,5分钟,15分钟 系统的平均负载; 系统负载越高,代表CPU越繁忙;
# 2/384 2代表此时运行队列中的进程个数;384 代表系统中进程的总数
# 4482 代表到此为止创建的最后一个进程的ID.
进程查询常用命令
ps -ef
ps -ef|grep python
: 查看python相关进程
-e : 显示运行在系统上的所有进程
-f : 扩展显示输出
[root@linux-node1 ~]# ps -ef|grep python
所有者 进程id 父进程id
root 6852 1 0 Nov23 ? 00:01:23 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 37276 1 0 Nov24 ? 00:00:25 /usr/bin/python /usr/bin/salt-master
root 37285 37276 0 Nov24 ? 00:00:00 /usr/bin/python /usr/bin/salt-master
ps -aux
ps -aux | grep python
:查看python相关进程
-a : 显示现行终端机下的所有程序,包括其他用户的程序
-u : 以用户为主的格式来显示程序状况
-x : 显示所有程序,不以终端机来区分
[root@linux-node1 ~]# ps -aux | grep python
所有者 进程id cpu占用 内存占用
root 6852 0.0 0.8 573820 16424 ? Ssl Nov23 1:23 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 37276 0.0 2.1 389128 40640 ? Ss Nov24 0:25 /usr/bin/python /usr/bin/salt-master
root 37285 0.0 1.0 306196 20276 ? S Nov24 0:00 /usr/bin/python /usr/bin/salt-master
程序的名字来查询进程
pgrep -ln sshd
: 通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行
[root@linux-node1 ~]# pgrep -ln sshd
32946 sshd
显示进程间的关系
pstree -apnh|grep sshd
显示进程间的关系
-a : 显示每个程序的完整指令,包含路径
-p : 显示程序识别码
-n : 用程序识别码排序,预设是以程序名称来排序。
-h : 列出树状图时
[root@linux-node1 ~]# pstree -apnh|grep sshd
|-sshd,6851 -D
| `-sshd,32946
| `-grep,39535 --color=auto sshd
显示sshd进程的所有进程号
pidof sshd
:显示sshd进程的所有进程号
[root@linux-node1 ~]# pidof sshd
32946 6851
杀死进程
kill 和 pkill 杀死进程
[root@linux-node1 ~]# kill -9 2233 # 杀死进程2233
[root@linux-node1 ~]# pkill zabbix # 杀死zabbix进程
查看22端口运行的服务
netstat -anptu|grep 22
: 查看22端口运行的服务
[root@linux-node1 ~]# netstat -anptu|grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6851/sshd
tcp 0 0 192.168.56.11:22 192.168.56.1:62530 ESTABLISHED 32946/sshd: root@pt
tcp6 0 0 :::22 :::* LISTEN 6851/sshd
crond简介
什么是crond?
什么是crond?
- crond 是linux用来定期执行程序的命令。
- 当安装完成操作系统之后,默认便会启动此任务调度命令。
- crond命令每分锺会定期检查是否有要执行的工作,自动执行任务
crond作用
crond作用
- 系统执行:系统周期性所要执行的工作,如备份系统数据、清理缓存
- 个人执行:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信
crond管理
crond管理
/sbin/service crond start # 启动服务
/sbin/service crond stop # 关闭服务
/sbin/service crond restart # 重启服务
/sbin/service crond reload # 重新载入配置
crond语法
crond基本使用
crond基本使用
[root@linux-node1 ~]# crontab -l # 查看当前定时任务
[root@linux-node1 ~]# crontab -e # 添加新的定时任务
*/1 * * * * echo "Hello World!"
[root@linux-node1 ~]# tail -f /var/log/cron # 查看定时任务执行日志
[root@linux-node1 ~]# crontab -r # 清空任务计划
crond基本语法
crond基本语法
'''1. 每隔一分钟执行一次 ls 命令'''
*/1 12 * * * ls
#分 时 日 月 周 |《==============命令行=======================》|
'''2. 参数说明'''
"*" : 代表取值范围内的数字
"/" : 代表"每"
"-" : 代表从某个数字到某个数字
"," : 分开几个离散的数字
'''3. 定时任务常用配置'''
*/2 * * * * ls # 每2分钟执行一次ls命令
5 * * * * ls # 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls # 指定每天的 5:30 执行ls命令
30 7 8 * * ls # 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls # 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls # 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类
添加调度任务
新增调度任务可用两种方法
'''法1:在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出 '''
[root@linux-node1 ~]# crontab -e
*/1 * * * * echo "Hello World!"
'''法2: 直接编辑/etc/crontab 文件'''
[root@linux-node1 ~]# vim /etc/crontab
*/1 * * * * root echo "test02"
添加一块硬盘
先给VMware添加一块60G硬盘
必须重启虚拟机才能识别到新加磁盘
[root@linux-node1 ~]# fdisk -l # 查看硬盘信息和分区情况(下面这个sdb就是上面添加的硬盘)
磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
sda(第一块盘): sda1标识第一块盘中第一个分区
sdb(第二块盘)
sdc(第三开盘)
查看当前磁盘使用情况
[root@redis ~]# df -hl # 查看当前分区使用情况
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 13G 9.9G 2.8G 79% /
devtmpfs 3.8G 0 3.8G 0% /dev
格式化刚刚新加硬盘 /dev/sdb
创建分区
格式化分区
[root@redis ~]# mkfs.ext3 /dev/sdb1 # 将分区格式化为ext3类型
创建LVM扩展根分区
创建物理卷
[root@redis ~]# pvcreate /dev/sdb1 # 用刚刚添加硬盘,创建物理卷
查看创建的物理卷的详细信息
[root@redis ~]# pvscan # 查看当前所有物理卷
[root@redis ~]# pvdisplay # 查看创建的物理卷的详细信息(我们需要获取现有根分区使用的卷组名称,这里是 “cl”)
卷组扩容
[root@redis ~]# vgextend cl /dev/sdb1 # 对 cl 卷组扩容
[root@redis ~]# lvextend -L +60G /dev/mapper/cl-root
xfs用以下命令来扩磁盘空间
[root@redis ~]# xfs_growfs /dev/mapper/cl-root # 扩展磁盘空间
[root@redis ~]# df -hl # 可以看到根分区已经扩展
find命令
find作用
- Linux find命令用来在指定目录下查找文件。
- 任何位于参数之前的字符串都将被视为欲查找的目录名。
- 如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。
find常用参数
选项 | 含义 |
---|---|
-name | 根据文件名称查找 |
-size -n +n | 根据文件大小查找 |
-mtime -n | 根据文件修改时间查找 |
-type | 根据文件类型查找 |
-perm | 根据文件权限查找 |
find参数基本使用
您暂时无权查看此隐藏内容!
find应用
大于9M的文件
- 1.
find . -size +9M | xargs ls -lh
: 查找当前目录下大于9M的文件详细信息
[root@linux-node1 /]# find . -size +9M | xargs ls -lh
-rw-r--r-- 1 root root 24M Jul 7 04:18 ./aaa/Python-3.7.0/libpython3.7m.a
-rwxr-xr-x 1 root root 14M Jul 7 04:19 ./aaa/Python-3.7.0/Programs/_testembed
-rwxr-xr-x 1 root root 14M Jul 7 04:18 ./aaa/Python-3.7.0/python
-rw-r--r-- 1 root root 22M Jul 6 23:53 ./aaa/Python-3.7.0.tgz
-rw-------. 1 root root 47M Jan 7 2019 ./boot/initramfs-0-rescue-8b956f09fe0549c4b6182589acceab30.img
-rw-------. 1 root root 21M Jan 7 2019 ./boot/initramfs-3.10.0-514.el7.x86_64.img
-rw-------. 1 root root 14M Jan 7 2019 ./boot/initramfs-3.10.0-514.el7.x86_64kdump.img
以 .log 结尾且大于5M的文件
- 2.
find . -type f -name "\*.log" -size +1M -exec cp -av {} /tmp \;
- 查找当前目录下以 .log 结尾且大于5M的文件,并复制到/tmp目录下
[root@linux-node1 /]# find . -type f -name "*.log" -size +1M -exec cp -av {} /tmp \;
cp: ‘./tmp/audit.log’ and ‘/tmp/audit.log’ are the same file
cp: ‘./tmp/journal.log’ and ‘/tmp/journal.log’ are the same file
更改时间在三天到五天的文件
- 3.
find /var -mtime +3 -mtime -5
:在/var下查找更改时间在三天到五天的文件
您暂时无权查看此隐藏内容!
1分钟前3分钟内修改的文件
- 4.
find . -mmin +1 -mmin -3
:查找当前文件夹下1分钟前3分钟内修改的文件
[root@linux-node1 /]# find . -mmin +1 -mmin -3
./aa.py
grep命令
grep作用
- grep命是 文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来 。
- grep家族总共有三个成员构成:grep、egrep、fgrep
- grep 是linux中最为常用的三大文本(awk,sed,grep)处理工具之一
grep常用参数
选项 | 含义 |
---|---|
-v | 排除 |
-n | 显示行号 |
-E | 支持扩展正则表达式(与egrep作用相同) |
-i | ==ignore-case忽略大小写 |
-w | ==word以单词格式查找 |
-c | 统计匹配上的行数(统计包含xxx的有多少行) |
-o | 显示匹配过程 |
grep命令操作练习
您暂时无权查看此隐藏内容!
grep常用方法
查找包含root字符串的文件
- 1.
grep -n 'root' /etc/passwd
:查找/etc/passwd下包含 root字符串的文件
[root@linux-node1 /]# grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
查找不包含root关键字的行
- 2.
grep -Ev "root|nologin" /etc/passwd
:查找不包含root和nologin关键字的行
[root@linux-node1 /]# grep -Ev "root|nologin" /etc/passwd
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关键字的行
- 3.
grep "root" /etc/{passwd,shadow}
:查找/etc/passwd和/etc/shadow文件中包含root关键字的行
[root@linux-node1 /]# grep "root" /etc/{passwd,shadow}
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
统计文件包含root字符串行的数量
- 4.
grep -c root /etc/passwd
:统计/etc/passwd文件中包含root字符串行的数量
[root@linux-node1 /]# grep -c root /etc/passwd # 统计包含root单词的行数
2
[root@redis ~]# grep -o root /etc/passwd | wc -l # 统计root单词出现的次数
4
grep综合使用
grep -E -v "^$|^#" /etc/nginx/nginx.conf # 去除空号和以#号开头的行
seq 1 20 |grep -m 5 -E '[0-9]{2}' # 输出匹配的前五个结果
seq 1 20 |grep -c -E '[0-9]{2}' # 输出匹配多少行
echo "a bc de" |xargs -n1 |grep '^b' # 匹配以字符串"b"开头的行
echo "a ab abc abcd abcde" |xargs -n1 |grep -n 'de$' # 匹配以"de"字符串结尾的行
grep -r 'sshd' /etc --include *.conf # 递归搜索/etc 目录下包含 "sshd"字符串 的 conf 后缀文件
seq 41 45 |grep -E '4[12]' # 匹配41/42数字
sed命令
sed作用
- sed 命令将当前处理的行读入模式空间进行处理,处理完把结果输出,并清空模式空间。
- 然后再将下一行读入模式空间进行处理输出,以此类推,直到最后一行。
- 还有一个暂存空间,可以暂时存放一些处理的数据,但不能直接输出,只能放到模式空间输出。
- 这两个空间其实就是在内存中初始化的一个内存区域,存放正在处理的数据和临时存放的数据
sed常用参数
'''常用选项 '''
-n # 不打印模式空间
-e # 执行脚本、表达式来处理
-f # 执行动作从文件读取执行
-i # 修改原文件
-r # 使用扩展正则表达式
sed常用命令
'''常用命令 '''
s/regexp/replacement/ # 替换字符串
p # 打印当前模式空间
P # 打印模式空间的第一行
d # 删除模式空间,开始下一个循环
D # 删除模式空间的第一行,开始下一个循环
= # 打印当前行号
a \text # 当前行追加文本
i \text # 当前行上面插入文本
c \text # 所选行替换新文本
q # 立即退出 sed 脚本
r # 追加文本来自文件
w filename # 写入当前模式空间到文件
! # 取反、 否定
sed常用地址
'''常用地址 '''
$ # 匹配最后一行
/regexp/ # 正则表达式匹配行
number # 只匹配指定行
addr1,addr2 # 开始匹配 addr1 行开始,直接 addr2 行结束
addr1,+N # 从 addr1 行开始,向后的 N 行
addr1,~N # 从 addr1 行开始,到 N 行结束
02.sed常用方法
sed常用方法
nl /etc/passwd | sed '2,5d' # 将2~5行内容删除,然后打印到屏幕上
nl /etc/passwd | sed '2,5c "new content"' # 将2~5行的内容替换成字符串 "new content"
nl /etc/passwd | sed '/root/d' # 删除/etc/passwd所包含root的行
nl /etc/passwd | sed -e '3,$d' -e 's/root/mewusername/' # 提取到前两行数据,并将 root替换成 newusername
sed匹配打印
tail /etc/services |sed -n '/^blp5/p' # 打印匹配 blp5 开头的行
tail /etc/services |sed -n '1p' # 打印第一行
tail /etc/services |sed -n '1,3p' # 打印第一行至第三行
seq 10 |sed -n '1~2p' # 打印奇数行
tail /etc/services |sed -n '$p' # 打印最后一行
tail /etc/services |sed -n '$!p' # 不打印最后一行
tail /etc/services |sed -n '/^blp5/,/^com/p' # 匹配以"blp5开头"到"com开头"的所有行
tail /etc/services |sed -n '/blp5/,$p' # 匹配以"blp5"开头行到最后一行
tail /etc/services |sed -n "$a,3p" # 引用系统变量,用引号
sed匹配删除
tail /etc/services |sed '/blp5/d' # 删除包含"blp5"的行
tail /etc/services |sed '1d' # 删除第一行
tail /etc/services |sed '1~2d' # 删除第一到第二行
sed '/^#/d;/^$/d' /etc/nginx/nginx.conf # 去除空格或开头#号的行
sed匹配替换
tail /etc/services |sed 's/blp5/test/' # 替换 blp5 字符串为 test
tail /etc/services |sed -n 's/^blp5/test/p' # 替换开头是 blp5 的字符串并打印
tail /etc/services |sed 's/48049/&.0/' # 使用&命令引用匹配内容并替换
tail /etc/services | sed '1,4s/blp5/test/' # 将1到4行的"blp5"替换成"test"
tail /etc/services | sed '/48129\/tcp/s/blp5/test/' # 匹配"48129/tcp"并将此行的"blp5"替换成"test"
tail /etc/services |sed -e '1,2d' -e 's/blp5/test/' # 删除前两行并将"blp5"替换成"test"
sed添加新内容
i: 匹配行上面添加
a: 匹配航下面添加
c: 将匹配航替换成新内容
tail /etc/services |sed '/blp5/i \test' # 在 blp5 上一行添加 test
tail /etc/services |sed '/blp5/a \test' # 在 blp5 下一行添加 test
tail /etc/services |sed '/blp5/c \test' # 匹配"blp5"的行替换成"test"
tail /etc/services |sed '2a \test' # 在第二行下面添加"test"
sed文本操作
# vim a.txt : 编写一个测试文件
1 2 3
4 5 6
7 8 9
tail /etc/services |sed '/blp5/r a.txt' # 将文件读取追加到匹配行下面
tail /etc/services |sed '/blp5/w b.txt' # 将匹配行写入"b.txt"
awk命令
awk作用
- awk是一种编程语言,用于在linux下对文本和数据进行处理
- awk的处理文件和数据处理方式是逐行扫描,寻找到匹配的行,并在这些行上进行你想要的操作
- 如果没有指定处理动作,则把匹配的行显示到屏幕上
awk常用指令
// # 匹配代码块,可以是字符串或正则表达式
{} # 命令代码块,包含一条或多条命令
$0 # 表示整个当前行
$1 # 每行第一个字段
NF # 字段数量变量
NR # 每行的记录号,多文件记录递增
/[0-9][0-9]+/ # 两个或两个以上数字
/[0-9][0-9]*/ # 一个或一个以上数字
-F'[:#/]' # 定义三个分隔符
FNR # 与NR类似,不过多文件记录不递增,每个文件都从1开始
\t # 制表符
\n # 换行符
FS # BEGIN时定义分隔符
RS # 输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)
~ # 匹配,与==相比不是精确比较
!~ # 不匹配,不精确比较
== # 等于,必须全部相等,精确比较
!= # 不等于,精确比较
&& # 逻辑与
|| # 逻辑或
+ # 匹配时表示1个或1个以上
awk使用
awk常用指令
您暂时无权查看此隐藏内容!
awk基本语法
tail -n3 /etc/services |awk -F'[ /]+' '{print $2}' # 以"空格"或"斜线"分隔
awk -v a=123 'BEGIN{print a}' # 变量赋值
tail -n3 /etc/services |awk 'BEGIN{print "服务\t\t端口\t\t\t描述"}{print $0}END{print "===结束==="}'
# BEGIN{} END{}结合使用
正则匹配
tail /etc/services |awk '/^blp5/{print $0}' # 匹配开头是 blp5 的行
tail /etc/services |awk '/^[a-z0-9]{8} /{print $0}' # 匹配第一个字段是 8 个字符的行
tail /etc/services |awk '/blp5/ && /tcp/{print $0}' # 匹配记录中包含 blp5 或 tcp 的行
awk '! /^#|^$/' /etc/nginx/nginx.conf # 不匹配开头是#和空行
tail /etc/services |awk '/^blp5/,/^com/' # 匹配以 "blp5开头" 到 "com开头" 之间的所有行
NF
您暂时无权查看此隐藏内容!
NR
tail -n5 /etc/services |awk '{print NR,$0}' # 打印行号+内容
tail -n5 /etc/services |awk 'NR==3{print $2}' # 打印第三行第二列的值
tail -n5 /etc/services |awk 'NR<=3{print NR,$0}' # 打印前三行
操作符
'''数字 0,空字符串和未定义的值 '''
seq 3 |awk '{print $0*2}' # 乘法
seq 3 |awk '{print $0/2}' # 除法
seq 5 |awk '$0%2==0{print $0}' # 取余
seq 5 |shuf |awk '{print $0|"sort"}' # 先打乱再排序
附:
网络基础命令
ifconfig # 查看网卡信息
ip addr # 查看网卡信息
hostname # 设置主机名
route -n # 查看路由表和网关信息
netstat # 查看本机开启端口号
ping # 测试网络连通性
traceroute # 路由跟踪
nslookup # 域名解析测试
ifdown # 禁用网卡
ifup # 启用网卡
路由相关命令
route add -net # 加静态路由
route del -net # 删除静态路由
route add default gw # 加网关
route del default gw # 删网关