linux随笔
下面是linux系统默认不同类型文件的颜色:
- 白色:表示普通文件
- 蓝色:表示目录
- 绿色:表示可执行文件
- 红色:表示压缩文件
- 浅蓝色:链接文件
- 红色闪烁:表示链接的文件有问题
- 黄色:表示设备文件
- 灰色:表示其他文件
vi
编辑文本命令
:wq 编辑文本后保存退出
:q 不保存退出
echo
是我们常用的一个命令,它的主要作用功能是在屏幕上显示文字,也可以直接在文件中写入要写的内容
ehco的重定向
命令:1.echo “想要的内容”> 文件名 2.echo “想要的内容”>> 文件名
第一个的定向是将想要的内容覆盖到对应的文件当中去,文件当中之前的内容不复存在了,也就是说修改了原文件的内容,而第二个是将想要的内容追加到文件后,对文件之前的内容不修改,只进行增添,也叫追加重定向。
ln
ln –s 源文件 目标文件
- 软链接就是ln –s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间
- 硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
clear 清除命令
cd 切换目录
cd..切换至上级目录
ls-l 查看文件所有信息
ls-a 列出当前目录下所有文件
ls -lh 以易读的方式显示文件大小(显示为 MB,GB…)
touch 创建文件
mkdir 创建目录
echo 创建带有内容的文件
cat 查看文件内容
cp 拷贝
mv 重命名或者移动
rm-f 强制删除,不能删除带有文件的目录
rm-r 递归删除
grep 在文件中查找某个字符串
- grep am b.txt ,如果存在会返回包含该字符串am的行
tree 显示目录结构
env 显示系统环境变量
more/less 分页显示文件内容,less可以往前翻
head/tail 显示文件头尾内容
find 如何在 /usr 目录下找出大小超过 10MB 的文件?
-
输入命令
find /usr -name "string" -type f -size +10240k命令。
which 只能查可执行文件
whereis 只能查二进制文件、说明文件、源文件等
wc 统计文件内容的字节数、行数、单词数命令,- c 统计字节数 - l 统计行数 - w 统计字数。
du 显示目录或文件的大小
df 显示文件系统的磁盘使用情况
mount 如果要挂载一个文件系统,需要先创建一个目录,然后将这个文件系统挂载到这个目录上:
![]()
ssh 登录到远程主机:ssh username@remotehost.example.com
tar 命令
- 创建一个新的 tar 文件:
tar cvf archive_name.tar dirname/。 - 解压 tar 文件:
tar xvf archive_name.tar。 - 查看 tar 文件:
tar tvf archive_name.tar。
gzip 命令
- 创建一个
*.gz的压缩文件:gzip test.txt。 - 解压
*.gz文件:gzip -d test.txt.gz。
uptime 命令

这个命令可以快速查看机器的负载情况。在 Linux 系统中,这些数据表示等待 CPU 资源的进程和阻塞在不可中断 IO 进程(进程状态为 D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。
命令的输出分别表示 1 分钟、5 分钟、15 分钟的平均负载情况。通过这三个数据,可以了解服务器负载是在趋于紧张还是趋于缓解。
- 如果 1 分钟平均负载很高,而 15 分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查 CPU 资源都消耗在了哪里。
- 反之,如果 15 分钟平均负载很高,1 分钟平均负载较低,则有可能是 CPU 资源紧张时刻已经过去。
- 上面例子中的输出,可以看见最近 1 分钟的平均负载非常高,且远高于最近 15 分钟负载,因此我们需要继续排查当前系统中有什么进程消耗了大量的资源。可以通过下文将会介绍的 vmstat、mpstat 等命令进一步排查。
vmstat 命令

示例命令的输出可以看见,大量 CPU 时间消耗在用户态,也就是用户应用程序消耗了 CPU 时间。这不一定是性能问题,需要结合 r 队列,一起分析。
vmstat 命令,每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态。后面跟的参数 1 ,表示每秒输出一次统计信息,表头提示了每一列的含义,这几介绍一些和性能调优相关的列:
- r:等待在 CPU 资源的进程数。这个数据比平均负载更加能够体现 CPU 负载情况,数据中不包含等待 IO 的进程。如果这个数值大于机器 CPU 核数,那么机器的 CPU 资源已经饱和。
- free:系统可用内存数(以千字节为单位),如果剩余内存不足,也会导致系统性能问题。下文介绍到的 free 命令,可以更详细的了解系统内存的使用情况。
- si,so:交换区写入和读取的数量。如果这个数据不为 0 ,说明系统已经在使用交换区(swap),机器物理内存已经不足。
- us, sy, id, wa, st:这些都代表了 CPU 时间的消耗,它们分别表示用户时间(user)、系统(内核)时间(sys)、空闲时间(idle)、IO等待时间(wait)和被偷走的时间(stolen,一般被其他虚拟机消耗)。
上述这些 CPU 时间,可以让我们很快了解 CPU 是否处于繁忙状态。一般情况下,如果用户时间和系统时间相加非常大,CPU 出于忙于执行指令。如果IO等待时间很长,那么系统的瓶颈可能在磁盘 IO 。
mpstat 命令

该命令可以显示每个 CPU 的占用情况,如果有一个 CPU 占用率特别高,那么有可能是一个单线程应用程序引起的。
pidstat 命令

pidstat 命令输出进程的 CPU 占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态。如上的输出,可以看见两个 JAVA 进程占用了将近 1600% 的CPU时间,既消耗了大约 16 个 CPU 核心的运算资源。
iostat 命令

- r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。
- await:IO 操作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括 IO 等待和实际操作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。
- avgqu-sz:向设备发出的请求平均数量。如果这个数值大于 1 ,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)。
- %util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过 60 ,可能会影响 IO 性能(可以参照 IO 操作平均等待时间)。如果到达 100% ,说明硬件设备已经饱和。
如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使 IO 性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能。
free 命令

free 命令可以查看系统内存的使用情况,-m 参数表示按照兆字节展示。最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数。需要注意的是,第二行 -/+ buffers/cache ,看上去缓存占用了大量内存空间。
这是 Linux 系统的内存使用策略,尽可能的利用内存,如果应用程序需要内存,这部分内存会立即被回收并分配给应用程序。因此,这部分内存一般也被当成是可用内存。
如果可用内存非常少,系统可能会动用交换区(如果配置了的话),这样会增加 IO 开销(可以在 iostat 命令中体现),降低系统性能。
buffer 和 cache 如何区分
Buffer 和 Cache 都是内存中的一块区域。
- 当 CPU 需要写数据到磁盘时,由于磁盘速度比较慢,所以 CPU 先把数据存进 Buffer ,然后 CPU 去执行其他任务,Buffer中的数据会定期写入磁。
- 当 CPU 需要从磁盘读入数据时,由于磁盘速度比较慢,可以把即将用到的数据提前存入 Cache ,CPU 直接从 Cache中 拿数据要快的多。
什么叫 CC 攻击?什么叫 DDOS 攻击?
-
CC 攻击,主要是用来攻击页面的,模拟多个用户不停的对你的页面进行访问,从而使你的系统资源消耗殆尽。
-
DDOS 攻击,中文名叫分布式拒绝服务攻击,指借助服务器技术将多个计算机联合起来作为攻击平台,来对一个或多个目标发动 DDOS 攻击。
- 攻击,即是通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。
怎么预防 CC 攻击和 DDOS 攻击?
防 CC、DDOS 攻击,这些只能是用硬件防火墙做流量清洗,将攻击流量引入黑洞。
什么是网站数据库注入?
- 由于程序员的水平及经验参差不齐,大部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断。
- 应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的 SQL 注入。
- SQL注入,是从正常的 WWW 端口访问,而且表面看起来跟一般的 Web 页面访问没什么区别,如果管理员没查看日志的习惯,可能被入侵很长时间都不会发觉。
如何过滤与预防?
数据库网页端注入这种,可以考虑使用 nginx_waf 做过滤与预防。
针对网站访问慢,怎么去排查?
-
1、首先要确定是用户端还是服务端的问题。当接到用户反馈访问慢,那边自己立即访问网站看看,如果自己这边访问快,基本断定是用户端问题,就需要耐心跟客户解释,协助客户解决问题。
艿艿:不要上来就看服务端的问题。一定要从源头开始,逐步逐步往下。
-
2、如果访问也慢,那么可以利用浏览器的调试功能,看看加载那一项数据消耗时间过多,是图片加载慢,还是某些数据加载慢。
-
3、针对服务器负载情况。查看服务器硬件(网络、CPU、内存)的消耗情况。如果是购买的云主机,比如阿里云,可以登录阿里云平台提供各方面的监控,比如 CPU、内存、带宽的使用情况。
-
4、如果发现硬件资源消耗都不高,那么就需要通过查日志,比如看看 MySQL慢查询的日志,看看是不是某条 SQL 语句查询慢,导致网站访问慢。
有哪些方面的因素会导致网站网站访问慢?
-
1、服务器出口带宽不够用
- 本身服务器购买的出口带宽比较小。一旦并发量大的话,就会造成分给每个用户的出口带宽就小,访问速度自然就会慢。
- 跨运营商网络导致带宽缩减。例如,公司网站放在电信的网络上,那么客户这边对接是长城宽带或联通,这也可能导致带宽的缩减。
-
2、服务器负载过大,导致响应不过来
可以从两个方面入手分析:
- 分析系统负载,使用 w 命令或者 uptime 命令查看系统负载。如果负载很高,则使用 top 命令查看 CPU ,MEM 等占用情况,要么是 CPU 繁忙,要么是内存不够。
- 如果这二者都正常,再去使用 sar 命令分析网卡流量,分析是不是遭到了攻击。一旦分析出问题的原因,采取对应的措施解决,如决定要不要杀死一些进程,或者禁止一些访问等。
-
3、数据库瓶颈
- 如果慢查询比较多。那么就要开发人员或 DBA 协助进行 SQL 语句的优化。
- 如果数据库响应慢,考虑可以加一个数据库缓存,如 Redis 等。然后,也可以搭建 MySQL 主从,一台 MySQL 服务器负责写,其他几台从数据库负责读。
-
4、网站开发代码没有优化好
- 例如 SQL 语句没有优化,导致数据库读写相当耗时。
怎么去解决?
- 1、如果是出口带宽问题,那么久申请加大出口带宽。
- 2、如果慢查询比较多,那么就要开发人员或 DBA 协助进行 SQL 语句的优化。
- 3、如果数据库响应慢,考虑可以加一个数据库缓存,如 Redis 等等。然后也可以搭建MySQL 主从,一台 MySQL 服务器负责写,其他几台从数据库负责读。
- 4、申请购买 CDN 服务,加载用户的访问。
- 5、如果访问还比较慢,那就需要从整体架构上进行优化咯。做到专角色专用,多台服务器提供同一个服务。
如何排查 CPU load 过高问题?
linux常用网络命令
1.curl 抓取网页内容
curl www.baidu.com
2.netstat 显示网络状态信息
3.telnet 用于登录远程主机
telnet 127.0.0.1
liunx常用系统命令
1.ping 测试网络连通
2.man 查看帮助
3.top查看系统进程
4.kill 杀死进程
kill 33798 数字为PID
5.ps:显示瞬间进程状态,ps -ef显示所有进程
6.df查看磁盘大小
df-h 带有单位显示磁盘信息
7.查看所有java进程
ps -ef|grep java
ps-aux|grep java aux显示所有状态
8.kill杀掉进程,-9强迫进程立即停止
kill -9 PID ,这里需要ps-ef|grep 查询pid
9.启动服务,以tomcat为例,先切换到启动的.sh目录
启动服务
>cd /java/tomact/bin >./startup.sh
停止服务 >./shutdown.sh
10.查看日志
1 如何查看测试项目的日志 tail -f xx.out 2 tail -f 动态实时查看后端日志 3 这时屏幕上会动态显示当前的日志,ctr+c停止 4 5 如何查看最近1000行日志 tail -1000 xx.out
11.查看端口
1 //linux中如何查看查看端口是否被占用 2 netstat -anp|grep 端口号 3// 查看当前所有已经使用的端口情况 4 netstat -nultp
浙公网安备 33010602011771号