赞
踩
# 案例1.打印指定行(-n 取消默认输出,只输出匹配行;指定第2到3行)
sed -n '2,3p' oldgirl.txt
# 案例2.查询字符串(/ /表示过滤,p打印匹配信息)
sed -n '/oldboy/p' oldgirl.txt
# 案例3.删除字符串(/ /表示过滤,d删除匹配字符串)
sed '/oldboy/d' oldgirl.txt
# 案例4.替换字符串(s/想替换啥/用啥替换/g,s表示替换,g表示全局, -i 直接修改文件)
sed -i 's/oldboy/oldgirl/g' oldgirl.txt
# 案例5.多次编辑(-e 多次修改文件)
sed -e 's/oldgirl/oldboy/g' -e 's/123/321/g'oldgirl.txt
# 案例6.在第2行后追加信息(a指定行后添加一行或文本,插到了第3行)
sed '2a hello world!' oldgirl.txt
sed -i '2a hello world!' oldgirl.txt (直接修改文件)
# 案例7.在第2行插入信息(i指定行插入一行或文本,插到了第2行,\n换行)
sed '2i hello world!\n one \n two' oldgirl.txt
sed -i '2i hello world!\n one \n two' oldgirl.txt
# 案例8.删除第3行
sed -i '3d' oldgirl.txt
# 案例9.删除第3到8行
sed -i '3,8d' oldgirl.txt
# 案例11.删除包含'101'的行到包含'105'的行
sed -i '/101/,/105/p' oldgirl.txt
# 案例10.获取ifconfig中的第二行的ip地址(-r对"/"进行转义,-n取消默认输出,2s对第二行进行替换,g全局,p打印匹配结果)
ifconfig ens33 | sed -rn '2s#^.*inet (.*) netm.*$#/1#gp'
sed -i '3,8d' oldgirl.txt
sed工作流程主要包括读取、执行和显示三个过程
awk 参数 ‘找谁{干啥}’ 文件
awk 参数 ‘条件’ 文件
awk 选项 内置命令 文件
列:
内置变量:
条件
BEGIN{}
END{}
统计
数组+for循环
内置函数
# 案例1.以:为分隔符,取第一列(-F 指定分隔符,'{}'内置命令默认格式,print打印操作,$1代表取第一列)
awk -F ":" '{print $1}' oldboy.txt
# 案例2.以:为分隔符,打印第1,3,最后一列
awk -F ":" '{print $1,$3,$NF}' oldboy.txt - awk '{$6~/Failed/{h[$(NF-5)]++}END{for(n in h) pirnt n,h[n]}' secure-20161219|sort -rnk2 |head
# 案例3.取第2,3行
awk 'NR>1&&NR<4' oldboy.txt
awk 'NR==2&&NR==3' oldboy.txt
# 案例4.取第2行的最后一列
awk -F ":" 'NR==2{print $NF}' oldboy.txt
# 案例5.过滤出含有root的行(/ /表示过滤)
awk '/root/' oldboy.txt
# 案例6.过滤出以非r开头的行(/ /表示过滤,[^r]非r,^[^r]以非r开头)
awk '^[^r]' oldboy.txt
# 案例7.以:或/为分隔符,打印第1,3,最后一列
awk -F [:/] '{print $1,$3,$NF}' oldboy.txt
# 案例8.以:或连续空格为分隔符,打印第4列,取出ip地址("[:/]+")
ifconfig ens33|awk -F "[:/]+" 'NR==2{print $4}'
# 案例9.匹配第一列内容为root,把符合行的最后一列输出(~为匹配)
awk -F ":" '$1~/root/{print $NF}' test.txt
# 案例10.匹配第三列内容大于70小于95,把符合行输出
awk -F ":" '$3>70&&$3<95/root/{print $0}' score.txt
awk命令执行过程
定时任务存放在/var/spool/cron/
共六列:
* * * * * command
(minute) (hour) (day) (month) (week) 命令
特殊符号|举例|含义
|00 23 * * * cmd|每天23:00
-|00 8-23 * * * cmd|连续区间(8-23点)的整点
,|00 1,3,5 * * * cmd|举例(1点、3点、5点)
/n|/10 * * * * cmd|每隔(10分钟)
# 案例1.从8:30-18:30,每隔2个小时
30 8-18/2 * * * cmd
# 案例2.每周六日的1:10分
10 1 * * 6,0 cmd
# 案例3.定时打包任务
00 00 * * * tar zcf /data/html_$(date +、%F).tar.gz /var/www/html &>/dev/null
(1) 命令行执行
tar zcf /data/html_$(date +%F).tar.gz /var/www/html
(2) 使用脚本文件实现(直接编辑定时任务命令时需要注意转义:时间变量%需要\转义)
mkdir /server/scripts -p # 创建存放脚本的文件夹
# 将命令写入bak.sh脚本文件中
cat >bak.sh<EOF
tar zcf /data/html_$(date +%F).tar.gz /var/www/html
EOF
# 测试执行脚本
/bin/sh /server/scripts/bak.sh
(3) 编辑定时任务
crontab -e
# bak html dir by oldbot at 20240321
00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null
定时任务出错
检查/var/log/cron日志
RAID(Redundant Array of Inexpensive Disks)廉价冗余磁盘阵列,将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性和安全性。
LVM(Logic Volume Management Manager)逻辑卷管理,灵活的管理磁盘容量,让磁盘可以随意放大和缩小,便于更好的应用磁盘剩余空间。
IDE /dev/hda hdb
SCSI /dev/sda sdb
注意事项:
- 1 <= 主分区数量 <= 4
- 2 <= 主分区+扩展分区 <= 4
- 若总分区数量 >= 4,必须要分一个扩展分区,扩展分区最多只能有一个
磁盘分区的本质:
修改64节的分区表
fdisk命令 选项 磁盘文件
parted命令
添加磁盘
查看磁盘信息
方法一:ll /dev/sd*
方法二:lsblk
创建分区:
创建文件系统(没有格式化,不可以挂载)
手动挂载点(一个分区一个挂载点)
查看磁盘信息
取消挂载:
命令:umount
选项:-lf 强制卸载
umount /mnt/disk1
内容:
挂载:/dev/sdc1 /mnt/disk1 ext4 defaults 0 0
# ps aux |less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 1.0 0.3 128236 6952 ? Ss 19:28 0:01 命令名称
USER:所属用户
PID:进程ID号
%CPU:CPU占用率
%MEM:物理内存占用率
VSZ:占用虚拟内存,单位KB;
RSS:占用实际物理内存,单位KB;
TTY:进程运行的终端。tty1-tty7代表本地终端,pts/0-255代表虚拟终端,?表示内核启动的。
STAT:进程状态
START:进程启动时间
TIME:占用CPU总时间,
COMMAND:命令名
# 案例1. 按cpu占用率排序
ps aux --sort %cpu
# 案例2. 按cpu占用率逆序排序
ps aux --sort -%cpu
# ps -ef | head -3
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 19:28 ? 00:00:01 /usr/lib/systemd/systemd
root 2 0 0 19:28 ? 00:00:00 [kthreadd]
UID:用户ID,即进程的拥有者
PID:进程ID
PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程被称为僵尸进程
C:cpu的占用率,形式是百分数(%)
STIME:进程开始启动时间
TTY:终端设备,发起该进程的设备识别符号,如果显示‘ ?’表示该进程并不是由终端发起
TIME:进程的执行时间
CMD:该进程的名称或对应的路径
# ps axo user,pid,ppid,%mem,command | head -3
USER PID PPID %MEM COMMAND
root 1 0 0.3 /usr/lib/systemd/systemd
root 2 0 0.0 [kthreadd]
# 案例1. 每隔3秒显式所有进程的资源占用情况
top
# 案例2. 每隔1秒显式所有进程的资源占用情况
top -d 1
# 案例3. 每隔3秒显示pid是28820和pid是38830的两个进程的资源占用情况
top -p 28820 -p 38830
# 案例4. 每隔2秒显示pid是69358的进程的资源使用情况,并显式该进程启动的命令行参数
top -d 2 -c -p 69358
#top
top - 16:07:37 up 241 days, 20:11, 1 user, load average: 0.96, 1.13, 1.25
Tasks: 231 total, 1 running, 230 sleeping, 0 stopped, 0 zombie
Cpu(s): 12.7%us, 8.4%sy, 0.0%ni, 77.1%id, 0.0%wa, 0.0%hi, 1.8%si, 0.0%st
Mem: 12196436k total, 12056552k used, 139884k free, 64564k buffers
Swap: 2097144k total, 151016k used, 1946128k free, 3120236k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18411 pplive 20 0 11.9g 7.8g 5372 S 220.2 67.1 16761:00 java
1875 pplive 20 0 3958m 127m 4564 S 4.6 1.1 12497:35 java
4 root 20 0 0 0 0 S 0.3 0.0 184:01.76 ksoftirqd/0
13 root 20 0 0 0 0 S 0.3 0.0 135:49.83 ksoftirqd/2
第一行: top - 16:07:37 up 241 days, 20:11, 1 user, load average: 0.96, 1.13, 1.25
程序名 - 系统时间 运行时间 登录用户数 CPU负载 : 1,5,15分钟
第二行: Tasks: 231 total, 1 running, 230 sleeping, 0 stopped, 0 zombie
总进程数:总数 运行数1 睡眠进程数207 停止数0 僵死数0
第三行: Cpu(s): 12.7%us, 8.4%sy, 0.0%ni, 77.1%id, 0.0%wa, 0.0%hi, 1.8%si, 0.0%st
CPU使用占比:us用户 sy系统 ni优先级 id空闲 wa等待 hi硬件 si软件 st虚拟机
第三行: Mem: 12196436k total, 12056552k used, 139884k free, 64564k buffers
物理内存:total总共2G userd使用1G free空闲1G cache缓存硬盘内容1G
第四行: Swap: 2097144k total, 151016k used, 1946128k free, 3120236k cached
交换分区内存
编号 | 信号名 |
---|---|
1 | SIGHUP 重新加载配置 |
2 | SIGINT 键盘中断Ctrl+C |
3 | SIGQUIT 键盘退出Ctrl+\,类似SIGINT |
9 | SIGKILL 强制终止,无条件 |
15 | SIGTERM 终止(正常结束),却省略号 |
18 | SIGCONT 继续 |
19 | SIGSTOP 暂停 |
20 | SIGTSTP 键盘暂停Ctrl+Z |
# 案例1. 正常结束进程4834
kill -15 4834
# 案例2. 强制终止进程4835
kill -9 4834
软件包分类 | 概念 | 优点 | 缺点 |
---|---|---|---|
二进制包(RPM包) | 编译之后的安装包,无需编译 | 1.代码开源,可修改;2.自由选择所需功能;3.编译安装,效率高;4.卸载方便 | 1.步骤多,时间长;2.编译时间长;3.安装过程易出错 |
源码包 | 需要经过GCC,C++编译环境编译才能运行 | 1.包的管理系统简单,通过命令对包进行增加删除;2.安装速度快 | 1.看不到源代码;2.功能选择不灵活;3.包之间的依赖性 是个麻烦 |
源码包优缺点:
二进制包安装路径:
# 案例1. 安装
rpm -ivh wget-1.14-15.el.x86_64.rpm
# 案例2. 查询
rpm -q wget
# 案例3. 卸载
rpm -evh wget-1.14-15.el7.x86_64
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。