Linux与Bash-可乔

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的优点:免费,功能强大
image

image

image

配置 ssh 连接名

Host my_ali
  HostName ip地址
  User root
  Port 22
  # PreferredAuthentications publickey
  # IdentityFile C:\Users\Administrator\.ssh\id_rsa

Linux 文件树

image

image

image

image

image

image

image

image

image

image

image

image

image

当文件过大的时候,使用cat就不太方便

less和more可以分屏显示

image

image

vim可以进行编程

image

Linux 常用命令之性能统计

最常使用进程级别性能数据分析,一个应用,一个进程

查询 Linux 系统负载与进程使用top命令

ps和top命令都能很准确的统计出内存的使用情况。

ps aux |less:看系统详细的一个指标

进程级别的内存分析可以使用ps top 都是可以分析出来的

了解总的内存大小,有没有可用内存

网络连接(net)统计
netstat -tlnp :统计当前开放的端口

netstat -tnp

netstat -tn 统计当前的连接数

重点需要掌握的命令:
free
top
ps
netstat


Linux 常用统计命令

image


image

做去重的时候会先进行排序

进程是线程的一个容器

进程是由操作系统来维护的

只要执行了一个命令就是在创建进程

可以看到当前哪些进程在运行:
image

查看详细手册: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

image

image

image

Linux 三剑客之 awk

man awk

$0 代表整行的记录
image

image

image

image

RS表示记录分隔:

Linux 三剑客之 sed

man sed

image

Linux 三剑客与管道使用

程序运行环境输入与输出

  • 标准输入 0
    • read a;echo $a
  • 标准输出 1
    • echo ceshiren.com
  • 错误输出
    • ls not_exist_dir
scale 1000 width
[标准输入0] -> [程序]
[程序] -> [标准输出1]
[程序] -down-> [错误输出2]

image

image

管道重定向

  • 管道与管道之间可以重定向
  • 管道与文件之间可以重定向
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)基础上的扩展
  • ? 非贪婪匹配
  • + 一个或者多个
  • () 分组
  • {} 范围约束
  • | 匹配多个表达式的任何一个
    image

三剑客实战之 Nginx 日志分析实战

image

grep是对整行的匹配
awk是对单个字段的匹配

~代表匹配正则表达式
双斜杠代表的是正则表达式

【实战】三剑客实战之性能、网络统计实战

实战帖子:Shell实战之Linux性能统计

top -b 表示批处理

打印网络连接,接口统计:

l 表示本地有几个应用在进行监听

p 到底是哪个进程

Linux 进阶命令

curl命令用户网络的发送 get/post
可以定制化发送的内容

image

jq是json的提取器,把json进行美化

image

image

image

image

image

image

image

Bash 脚本编写

image

image

image

image

image

image

image