324笔记

理解linux的数据流

执行linux命令时,linux默认为用户进程提供了3种数据流

- stdin
  - 标准输入、0
  - 一般是键盘输入数据
  - 比如cat命令等待用户输入
- stdout
  - 标准输出、1
  - 程序执行结果,输出到终端
- stderr
  - 标准错误输出,代号,2
  - 程序执行结果,输出到终端

标准输入重定向

cat   <   /etc/passwd   # 输入重定向,原本是来自于终端的键盘输入,改为了,可以是来自于文件的输入

比如用在数据库的,数据导入
mysql <  /opt/back.sql 

练习数据流

[root@localhost ~~10:49:49]#llllllllllll  /tmp
-bash: llllllllllll: command not found
[root@localhost ~~10:49:58]#


[root@localhost ~~10:50:00]#ls /opt/  >  /tmp/ll.txt 
[root@localhost ~~10:50:21]#cat /tmp/ll.txt 
log
messages
[root@localhost ~~10:50:33]#ls /opt/  >>  /tmp/ll.txt 
[root@localhost ~~10:51:06]#ls /opt/  >>  /tmp/ll.txt 
[root@localhost ~~10:51:07]#ls /opt/  >>  /tmp/ll.txt 
[root@localhost ~~10:51:08]#cat /tmp/ll.txt 
log
messages
log
messages
log
messages
log
messages
[root@localhost ~~10:51:16]#cat -n  /tmp/ll.txt 
     1	log
     2	messages
     3	log
     4	messages
     5	log
     6	messages
     7	log
     8	messages
[root@localhost ~~10:51:26]#


[root@localhost ~~10:51:34]#ls /jianqiang > /tmp/ll.txt 
ls: cannot access /jianqiang: No such file or directory
[root@localhost ~~10:51:49]#


[root@localhost ~~10:51:54]#ls /jianqiang > /tmp/ll.txt 
ls: cannot access /jianqiang: No such file or directory
[root@localhost ~~10:52:04]#ls /jianqiang > /tmp/ll.txt 
ls: cannot access /jianqiang: No such file or directory
[root@localhost ~~10:52:04]#ls /jianqiang > /tmp/ll.txt 
ls: cannot access /jianqiang: No such file or directory
[root@localhost ~~10:52:05]#


[root@localhost ~~10:52:21]#ls /jianqiang > /tmp/ll.txt   2>&1
[root@localhost ~~10:52:41]#ls /jianqiang > /tmp/ll.txt   2>&1
[root@localhost ~~10:52:42]#ls /jianqiang > /tmp/ll.txt   2>&1
[root@localhost ~~10:52:42]#ls /jianqiang > /tmp/ll.txt   2>&1
[root@localhost ~~10:52:43]#cat /tmp/ll.txt 
ls: cannot access /jianqiang: No such file or directory


[root@localhost ~~10:52:56]#ls /jianqiang >> /tmp/ll.txt   2>&1
[root@localhost ~~10:53:03]#ls /jianqiang >> /tmp/ll.txt   2>&1
[root@localhost ~~10:53:03]#ls /jianqiang >> /tmp/ll.txt   2>&1
[root@localhost ~~10:53:04]#cat /tmp/ll.txt 
ls: cannot access /jianqiang: No such file or directory
ls: cannot access /jianqiang: No such file or directory
ls: cannot access /jianqiang: No such file or directory
ls: cannot access /jianqiang: No such file or directory
[root@localhost ~~10:53:06]#


[root@localhost ~~10:53:17]#jianqiang /opt  &>> /tmp/ll.txt 
[root@localhost ~~10:53:42]#jianqiang /opt  &>> /tmp/ll.txt 
[root@localhost ~~10:53:44]#cat /tmp/ll.txt 
ls: cannot access /jianqiang: No such file or directory
ls: cannot access /jianqiang: No such file or directory
ls: cannot access /jianqiang: No such file or directory
ls: cannot access /jianqiang: No such file or directory
-bash: jianqiang: command not found
-bash: jianqiang: command not found
[root@localhost ~~10:53:52]#

后台运行命令

[root@localhost ~~10:59:08]#ping baidu.com > /tmp/ll.txt  &
[1] 1651
[root@localhost ~~10:59:22]#jobs
[1]+  Running                 ping baidu.com > /tmp/ll.txt &
[root@localhost ~~10:59:32]#fg 1
ping baidu.com > /tmp/ll.txt




^Z
[1]+  Stopped                 ping baidu.com > /tmp/ll.txt
[root@localhost ~~11:00:06]#ps -ef |grep ping
root       1651   1535  0 10:59 pts/0    00:00:00 ping baidu.com
root       1653   1535  0 11:00 pts/0    00:00:00 grep --color=auto ping
[root@localhost ~~11:00:25]#jobs
[1]+  Stopped                 ping baidu.com > /tmp/ll.txt
[root@localhost ~~11:00:44]#bg 1
[1]+ ping baidu.com > /tmp/ll.txt &

nohup命令

用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下
如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out 文件中
一般和&符一起使用

linux资源管理

机器负载查看

uptime命令

系统负载指的是在单位时间内,系统分配给CPU处理的进程数量,必然是数量越多,负载值越高,机器的压力越大

[root@localhost ~~16:04:47]#uptime
 16:04:51 up  3:12,  3 users,  load average: 0.16, 0.05, 0.05
[root@localhost ~~16:04:51]#



理想化的状态是每个CPU都在运行着进程,充分让cpu工作起来,效率最大化,你得先看看你机器上有几个CPU(几个核,就是有几个cpu可以工作)
 发现是8核的
[root@localhost ~~16:04:51]#lscpu |grep -i '^cpu(s)'
CPU(s):                8


# 以及用top命令,按下数字1,查看几核。
top


2. 如何理解uptime看到的负载
分别是1、5、15分钟内的平均负载情况,表示是1~15分钟内CPU的负载变化情况。

1. 三个值如果差不多,表示系统很稳定的运行中,15分钟以内,CPU都没有很忙
2. 如果1分钟内的值,远大于15分钟的值,表示机器在1分钟内压力在直线上升
3. 如果1分钟内的值,小于15分钟的值,表示系统的负载正在下降中

查看当前机器是几核的cpu

[root@localhost ~~16:04:51]#lscpu |grep -i '^cpu(s)'
CPU(s):                8


通过cpu的文件,确定是几颗CPU

[root@localhost ~~16:08:43]#cat /proc/cpuinfo |grep 'core id' | sort |uniq|wc -l
4

stress压力测试命令

运行多进程,测试查看cpu压力

安装stress工具
yum install stress -y

使用stress命令,给机器进行压力测试,这个命令会让你的机器,cpu达到100%,以此实现最高压的环境
# --cpu 4 让4个cpu
stress --cpu 1  --timeout 600    #这是一个cpu100%

stress  --cpu 4  --timeout  600   #这是4个cpu100%

free命令

[root@localhost ~~16:14:57]#free

-m 以MB形式显示

-h 以GB形式显示
              total        used        free      shared  buff/cache   available
Mem:        4028428      146124     3688096       11872      194208     3632804
Swap:       2097148           0     2097148
[root@localhost ~~16:15:05]#free -m
              total        used        free      shared  buff/cache   available
Mem:           3934         142        3602          11         189        3548
Swap:          2047           0        2047
[root@localhost ~~16:15:13]#free -h
              total        used        free      shared  buff/cache   available
Mem:           3.8G        142M        3.5G         11M        189M        3.5G
Swap:          2.0G          0B        2.0G
[root@localhost ~~16:15:17]#

cache,缓存的和buffer,缓冲区的

cache是:把磁盘读取的数据保存在内存中,再次读取就不用读取磁盘,而是直接从内存中读取,加速数据读取过程,
Cache,==缓存==,Cached是给==读取数据==时加速的



cache是指,把读取磁盘而来,的数据保存在内存中,再次读取,下一次不用读取硬盘,而直接从内存中读取,加速数据读取过程。
buffer,==缓冲区==,buffers是给==写入数据==加速的
总结cache、buffer
这俩都是计算机的重要属性,不仅在内存,磁盘里有使用,后面的网站架构篇,也多处使用到缓存的概念。
cache解决的时间问题,提高数据读取速度
cache利用的是内存极快的速度特性,读写速度是磁盘的很多倍。
buffer解决的是空间问题,给数据写入提供一个暂存空间
磁盘对碎片化的数据处理,是很低效的,我们后面学习磁盘管理,即可更深入理解
buffer利用的是内存的存储特性。
图解cache

查看机器负载

df 命令查看磁盘的空间

-h表示可读性较高的形式展示大小

[root@localhost ~~16:33:51]#df -h
文件系统                 容量   已用  可用   已用%  挂载点
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  3.6G   14G  22% /
devtmpfs                 2.0G     0  2.0G   0% /dev
tmpfs                    2.0G     0  2.0G   0% /dev/shm
tmpfs                    2.0G   12M  2.0G   1% /run
tmpfs                    2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M  13% /boot
tmpfs                    394M     0  394M   0% /run/user/0
[root@localhost ~~16:33:54]#


监控磁盘io动态

iotop命令是一个用来监视磁盘I/O使用状况的top类工具。

iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息

yum install iotop -y  安装命令

常用命令参数
-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。
-u USER:监控的进程用户。
-k 以kB单位显示读写数据信息

3.常用快捷键
左右箭头:改变排序方式,默认是按IO排序。
r:改变排序顺序。
o:只显示有IO输出的进程。

p:进程/线程的显示方式的切换,切换pid、tid

a:显示累积使用量
q:退出。

网络资源监控

网络端口查看

- ip地址,对应了tcp/ip协议的,ip地址号

- 端口号,对应了应用层的  如80(伴随着http协议的服务,如nginx这样的网站服务)端口

好比你发快递,记住发送人是谁,收件人是谁,具体这个快递是经过了山路十八弯,还是去南极跑了一圈,你不用管,你关心最后快递能送到即可
你只需要关心,你和对方的服务器,是否能通信即可

tcp和udp的区别

tcp 安全传输,熟读慢,
tcp 用在如网站的通信,比如你要登录淘宝网,淘宝网需要保留你的用户信息,因此你和淘宝网之间,就有了一个长链接,相互确认身份,要建立一个可靠的连接


udp 传输速度快,不管你要不要,直接给你传过去,
比如有一个黑客,疯狂的发出udp类型的请求
大量的让对方机器接收到无用的流量,导致网卡瘫痪,机器故障

netstat命令

network status,网络状态命令

命令:netstat

作用:查看网络连接状态

语法:netstat -tnlp



选项:

-t:表示只列出tcp 协议的连接;(你可以看到你的nginx的运行)

-n:表示将地址从字母组合转化成ip 地址,将协议转化成端口号来显示;(netsta默认会看到机器的主机名 -n 直接显示ip)

-l :表示过滤出"state(状态)"列中其值为LISTEN(监听)的连接;(你的nginx是否监听了0.0.0.0:80)确认端口在运行中,等待客户来访问

-p:表示显示发起连接的进程pid 和进程名称; (显示使用该端口的进程的id号)

-u  :查看udp连接  (ntpd服务)

netstat -tunlp |grep nginx  

netstat -tunlp | grep ntp

ss命令

用法和netstat一模一样

ss -tunlp |grep nginx

备注

在高并发场景下,也就是机器的链接数特别多的时候,使用ss性能比netstat更高一些。

iftop

yum install iftop -y

用起来和top命令很像,动态的掌握服务器的流量情况

能够看到你机器,有多少流量进来,有多少流量出去


df 查看磁盘信息

-h表示可读性较高的形式展示大小

ip地址

ifconfig

ip addr show
版权声明:本文为yujiejie原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yujiejie/p/16052007.html