Linux 系统与 Shell 环境准备
Linux 安装
安装包下载
-
https://www.centos.org/download/
- CentOS-xx-DVD-xx.iso : 标准安装版,一般下载这个就可以了(推荐)
- CentOS-xx-NetInstall-xx.iso : 网络安装镜像(从网络安装或者救援系统)
- CentOS-xx-Everything-xx.iso: 对完整版安装盘的软件进行补充,集成所有软件。(包含 centos7 的一套完整的软件包,可以用来安装系统或者填充本地镜像)
- CentOS-xx-GnomeLive-xx.iso: GNOME 桌面版
- CentOS-xx-KdeLive-xx.iso: KDE 桌面版
- CentOS-xx-livecd-xx.iso : 光盘上运行的系统,类拟于 winpe
- CentOS-xx-minimal-xx.iso : 精简版,自带的软件最少
虚拟机安装 Linux
Linux 的访问方式
- ssh 登录
- 图形界面登录
远程登录方式
- 远程客户端:SecureCRT, Putty, SSH Secure Shell, Moba
- cmd/powershell 等命令行
远程登录软件
以 mobaxterm 为例
mobaxterm 的使用
使用电脑命令行连接
- Mac 的 terminal
- Win 的 cmd 或者 powershell
sshd 的启动状态
systemctl status sshd
ssh 的安装
# centos 系统:
yum install -y openssl openssh-server
# Ubuntu 系统:
apt install openssh-server openssh-client
systemctl start sshd
连接方式
ssh [ -p 端口 ] 用户名@服务的 ip
保持心跳
Host *
ServerAliveInterval 40
bash的优点:免费,功能强大
配置 ssh 连接名
Host my_ali
HostName ip地址
User root
Port 22
# PreferredAuthentications publickey
# IdentityFile C:\Users\Administrator\.ssh\id_rsa
Linux 文件树
当文件过大的时候,使用cat就不太方便
less和more可以分屏显示
vim可以进行编程
Linux 常用命令之性能统计
最常使用进程级别性能数据分析,一个应用,一个进程
查询 Linux 系统负载与进程使用top命令
ps和top命令都能很准确的统计出内存的使用情况。
ps aux |less:看系统详细的一个指标
进程级别的内存分析可以使用ps top 都是可以分析出来的
了解总的内存大小,有没有可用内存
网络连接(net)统计
netstat -tlnp :统计当前开放的端口
netstat -tnp
netstat -tn 统计当前的连接数
重点需要掌握的命令:
free
top
ps
netstat
Linux 常用统计命令
做去重的时候会先进行排序
进程是线程的一个容器
进程是由操作系统来维护的
只要执行了一个命令就是在创建进程
可以看到当前哪些进程在运行:
查看详细手册:man ps
top命令运维用得要多一点,用来交互式的观测,观察当前哪一个进程CPU占用得多。
线程没有内存数据
Linux 三剑客之 grep
内容检索
- 获取行
grep pattern file
- 获取内容
grep -o pattern file
- 获取上下文
grep -A -B -C pattern file
文件检索
- 递归搜索
grep pattern -r dir/
- 展示匹配文件名
grep -H 111 /tmp/1
- 只展示匹配文件名
grep -l 111 /tmp/1
范围约束
- 忽略大小写
grep -i pattern file
- 不显示匹配的行
grep -v pattern file
- 使用扩展正则表达式
grep -E pattern file
- 文件范围和目录范围约束
grep 111 -r /tmp/demo/ --include "11*"
进程检索
- 进程过滤场景比较特殊,需要注意
- grep 本身会开启新进程,所以需要单独过滤掉 grep 进程
ps -ef | grep ssh
503 2507 1 0 29 821 ?? 0:00.08 /usr/bin/ssh-agent
503 50022 11154 0 8:11下午 ttys002 0:00.00 grep ssh
ps -ef | grep ssh | grep -v grep
503 2507 1 0 29 821 ?? 0:00.08 /usr/bin/ssh-agent
Linux 三剑客之 awk
man awk
$0 代表整行的记录
RS表示记录分隔:
Linux 三剑客之 sed
man sed
Linux 三剑客与管道使用
程序运行环境输入与输出
- 标准输入 0
read a;echo $a
- 标准输出 1
echo ceshiren.com
- 错误输出
ls not_exist_dir
scale 1000 width
[标准输入0] -> [程序]
[程序] -> [标准输出1]
[程序] -down-> [错误输出2]
管道重定向
- 管道与管道之间可以重定向
- 管道与文件之间可以重定向
echo 11 > /tmp/1
read var </tmp/1
echo $var
ls not_exist_dir > /tmp/output
ls not_exist_dir > /tmp/output 2>&1
管道连接符 |
- 管道连接符
|
可以连接多个程序的执行 - 管道连接是以子进程的方式启动的
echo hogwarts | { read line; echo input is $line; }
#结果:ninput is hogwarts
curl https://ceshiren.com/categories.json \
| grep -o '{"id[^}]*}' \
| awk -F, '{print $2,$6}' \
| awk -F '"' '{print $7,$4}' \
| sed 's#:##' \
| sort -nr \
| head -5
管道执行的上下文控制
- 使用 { command; } 注意花括号与内部命令之间的空格与分号
- 使用控制逻辑 while read 组合
- 使用 $() ``
#这个方式无法获得变量x
echo hello world | read x; echo $x
#如下两个方式可以获得变量x
echo hello world | { read x; echo $x; }
#打印:hello world
echo hello world | while read x; do echo $x; done
Linux 三剑客
Linux 三剑客介绍
grep
global search regular expression(RE) and print out the line 基于正则表达式查找满足条件的行
awk
名字来源于三个作者的名字简称
根据定位到的数据行处理其中的分段
sed
stream editor
根据定位到的数据行修改数据
与 SQL 的对比
Linux 三剑客 | SQL Structured Query Language |
---|---|
grep 数据查找定位 | select * from table like ‘%xx’ |
awk 数据切片 | select field from table |
sed 数据修改 | update table set field=new where field=old |
官方文档
BRE 基本正则表达式
- ^ 开头 $结尾
-
[a-z]
[0-9]
区间,如果开头带有^表示不能匹配区间内的元素 -
*
0 个或多个 -
.
表示任意字符
ERE 扩展正则表达式
- 基本正则表达式(BRE)基础上的扩展
-
?
非贪婪匹配 -
+
一个或者多个 -
()
分组 -
{}
范围约束 -
|
匹配多个表达式的任何一个
三剑客实战之 Nginx 日志分析实战
grep是对整行的匹配
awk是对单个字段的匹配
~代表匹配正则表达式
双斜杠代表的是正则表达式
【实战】三剑客实战之性能、网络统计实战
实战帖子:Shell实战之Linux性能统计
top -b 表示批处理
打印网络连接,接口统计:
l 表示本地有几个应用在进行监听
p 到底是哪个进程
Linux 进阶命令
curl命令用户网络的发送 get/post
可以定制化发送的内容
jq是json的提取器,把json进行美化
Bash 脚本编写