文件系统相关

==ls---list==:指定要显示列表的目录,也可以是具体的文件。

-a(all, 列出全部文件,包含隐藏文件)

-l(list, 输出格式为长格式,文件的详情)

ls-al.png

第一列第一位表示文件的类型

c:字符文件,s:socket文件,-:普通文件,d:目录文件,l:链接文件

第一列第二位到第十位表示文件的读写执行权限位,前三位为当前文件所属用户的权限,中间三位为该用户所在的用户组的权限,后三位为其他用户的权限。

第二列:代表文件或者目录的链接数,即目录或者文件下还包含几个目录或者文件数

下面图片来源于网络,解释的较为清晰:

ls.png

-i(inode, 显示文件的inode值)

-n(--numeric-uid-gid,list numeric user and group IDs)

inode.png

思考:将一个目录的权限设置为rw,是否可以进入目录;将一个目录的权限设置为x,是否可以在该目录下建立新文件?

文件的创建:==touch filename==;文件夹的创建==mkdir -p filename/1/2==

设置创建文件的指定权限掩码:==umask nnn== or ==umask u=,g=w,o=rwo==

利用umask命令可以指定哪些权限将在新文件的默认权限中被删除。例如,可以使用下面的命令创建掩码,使得组用户的写权限,其他用户的读、写和执行权限都被取消:

例如:==umask 002==:所对应的文件和目录创建缺省权限分别为6 6 4和7 7 5

umask.png

==umask (-S)==:查看当前的权限掩码

变更文件(目录)的权限:==chmod==

常见的两种命令形式:==chmod u+x,o-x filename==; ==chmod 664 filename==

变更文件(目录)的所有者和所属组:==chown -R new的所属者 filename==

-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)

查看文件内容:==cat/less/more/head/tail filename==

查看文件的第4行到7行之间的内容:head -n 7 filename | tail -n 4

==cat >> filename==:向文件后面追加内容

查找文件:==locate which find==

==locate==:locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用==updatedb==命令,手动更新数据库。

==which==:用于查找并显示给定命令的绝对路径,==which ls==

==find==:在指定的目录查找文件,用法较广,不细说。==find /home -name "*.txt"==

其他常见的命令:

删除:==rm==,一旦删除了一个文件,就无法再恢复它

拷贝:==cp==;==scp==(远程拷贝)

移动位置:==mv== , 也可以重命名。

==tree==:以树形结构显示当前目录下的文件;==pstree==:打印进程关系树

9.压缩与解压缩命令:

10.重要工具==lsof==(list open file)

网络相关的命令

假设场景为通过ssh登录失败如何排查

查看当前网卡的状态:==ifconfig==

查看网络的联通性:==ping host/域名/ip==

查看是否是因为22端口否开放,可以先尝试利用==telnet ip==远程登录,==telnet==采用明文传送报文,安全性不好。

正常的ssh登录一般命令:==ssh user@host -p 22==

网络抓包:==tcpdump==

实例利用tcpdump分析三次握手,四次挥手过程

网络系统的状态信息:==netstat==

-c或--continuous:持续列出网络状态

-s或--statistice:显示网络工作信息统计表

-t或--tcp:显示TCP传输协议的连线状况

-l或--listening:显示监控中的服务器的Socket

实例利用netstat分析TIME_WAIT状态

用来显示处于活动状态的套接字信息:==ss==

-l:显示处于监听状态的套接字;-t:只显示tcp套接字;-n:不解析服务名称,以数字方式显示

ss.png

由Recv-Q和Send-Q状态的含义引发的思考,==ss==获取到的 ==Recv-Q/Send-Q== 在 LISTEN 状态以及非 LISTEN 状态所表达的含义是不同:

当socket处于listen状态的时候

Recv-Q:表示全连接队列当前使用了多少,即当前等待服务器调用accept()取出的连接数量。

Send-Q:表示全连接队列的最大值,由min(backlog,somaxconn)决定

当socket处于其它状态的时候

Recv-Q:网络接受队列,表示接受到的数据己经在本地接收缓存了,但是还有多少没有被进程取走,recv()。如果Recv-Q一直不为0,说明可能遭受了拒绝服务 denial-of-service 攻击

Send-Q:网络发送队列,表示数据已经被进程下发,但是对方并未返回ACK的数据包,要先保存在本地发送缓存区,send()。

查看查询arp缓冲区中指定主机的arp条目:==arp==

路由相关的协议:==route==;==tracepath==;

进程相关的命令

案例分析:当服务器出现卡吨,如何排查问题?{进程占用cpu和内存问题}

==top==:多方信息监测系统性能和运行信息的实用工具

cpu.png

==top==显示的区域分为统计信息区和进程信息区。

统计信息区的说明

第一行:任务队列信息,与==uptime==命令执行的结果一致

依次为:系统当前时间;主机已经运行的时间;用户连接数(==who==);

系统的平均负载,统计最近1,5,15分钟的系统平均负载。(如果高于逻辑cpu的数目就会超负载)

第二行:进程信息,依次为:进程总数;正在运行的进程;睡眠的进程;停止的进程数;僵尸进程数。

第三行:cpu信息

==us==:用户空间占用cpu的百分比

==sy==:内核空间占用cpu的百分比

==ni==:用户进程空间内改变进程的优先级的进程占用cpu的百分比。

==id==:空闲cpu的百分比

==wa==:IO等待占用CPU的百分比

==hi==:硬中断(Hardware IRQ)占用CPU的百分比

==si==:软中断(Software Interrupts)占用CPU的百分比

==st==:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)

第四、五行物理内存和swap的使用情况(==free==)

swap行中的used值在不断变化时,说明物理内存正在与swap交换数据,这时候真的内存出现了不够用情况。==avail==和==free==和==buff/cache==解释参考

==cat /proc/meminfo==可以查看更详细的内存信息

==vmstat==:虚拟内存状态(“Viryual Memor Statics”),同样可以显示内存,I/O,cpu的使用情况。

进程信息区的说明:

==PID==:进程ID,进程的唯一标识符

==USER==:进程所有者的实际用户名。

==PR==:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。

==NI==:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级

==VIRT==:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

==RES==:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

==SHR==:SHR是进程使用的共享内存。共享内存大小,单位kb

==S==:这个是进程的状态(需要详细了解)。它有以下不同的值:

D - 不可中断的睡眠态。

R – 运行态

S – 睡眠态

T – 被跟踪或已停止

Z – 僵尸态

==%CPU==自从上一次更新时到现在任务所使用的CPU时间百分比。

==%MEM==:进程使用的可用物理内存百分比。

==TIME+==:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

==COMMAND==:运行进程所使用的命令。进程名称(命令名/命令行)

备注:==top==使用过程中常用的技术

输入1:列出全部的CPU使用情况

输入P:根据CPU使用百分比大小进行排序;

输入M:根据驻留内存大小进行排序;

输入f:从当前显示中添加或者删除项目

更厉害的工具==dstat==:结合的==vmstat==和==iostat==,还有网络。

dstat.png

更厉害的工具==htop==:友好美观的界面,吸引人。

htop.png

==ps==:查看当前系统的进程相关信息

常用的命令为==ps -aux==和==ps -ef==

==kill==:向进程发生信号,==kill -l==:显示信号的类型;==kill -9 pid==:无条件的杀死pid进程。

重写 ==/proc/sys/vm/drop-caches==释放内存资源,(释放内存前的一个好习惯是将当前缓存同步到磁盘==sync==)

cpu亲和技术

==oom killer==

调整进程优先级==nice==;==renice==

==pstack pid==:跟踪进程栈空间,ubuntu系统安装可能会出现可执行文件==/usr/bin/pstack==出现乱码,需要手动更改该文件。

==strace==:跟踪进程执行时的系统调用和所接收的信号

strace.png

每一行都是一条系统调用,strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。可以利用==pstack== 和==strace==分析程序在哪里耗时

磁盘相关的命令

报告文件系统整个磁盘空间的使用情况==df -mh==

df.png

更多的信息参考==cat /proc/diskstats==

对文件和目录磁盘使用的空间的查看==du filename==

==sudo du -smh /tmp/*== 以易读的形式显示文件夹占用磁盘空间的总和。

测试磁盘读写速度

==iostat -x==:显示当前系统磁盘IO情况。

参数详解

iostat.png

==dd==:测试磁盘读写的速度

测试磁盘写:==sudo time dd if=/dev/zero of=/tmp/test bs=50K count=12000==

测试磁盘读:==sudo time dd if=/dev/sda1 of=/dev/null bs=50K count=12000==

同时测试磁盘读写:==sudo time dd if=/dev/sda1 of=/tmp/text2 bs=50K count=12000==

linux中的磁盘调度算法以及调优

linux关键命令,Linux关键命令相关推荐

  1. 检查Linux服务器性能的关键十条命令

    检查Linux服务器性能的关键十条命令 概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. uptime dmesg | tail vmstat 1 mpstat -P ALL ...

  2. 【Linux】备份与压缩命令命令

    1.compress 命令 生成.Z 压缩文件,如果没带任何参数,源文件将被.Z取代,如果想制作出另一个文件名时,可以利用数据流重导向,及大于符号(>)将原本输出到屏幕的数据存储到其他文件,当然 ...

  3. Linux必学60个命令文件处理

    Linux系统信息存放在文件里,文件与普通的公务文件类似.每个文件都有自己的名字.内容.存放地址及其它一些管理信息,如文件的用户.文件的大小 等.文件可以是一封信.一个通讯录,或者是程序的源语句.程序 ...

  4. linux指令笔试,Linux笔试常用命令

    Linux笔试常用命令 时间:2019-01-01 [www.unjs.com - 资料大全] 文件操作命令 ls 作用:列目录,Linux笔试常用命令>(https://www.unjs.co ...

  5. mysql执行shell命令_关键Docker命令:使用Docker必须掌握的公认宝典

    读者可以将下面的命令纲要当作成功使用Docker必须掌握的公认宝典--从搜索和构建镜像到创建自己的Dockerfile.我们先看一些简单的命令,然后在此基础上接触更复杂的命令. 7.1.1 docke ...

  6. 备份关键信息linux

    大多数 UNIX 管理员都有相应的方法来备份 UNIX 计算机中的数据和信息,但对于配置文件和提供计算机运行所需配置数据的其他内容,又应该如何处理呢?本文提供了相关技术的详细信息,这些技术用于针对关键 ...

  7. Linux基础概念及常用命令

    Linux基础概念及常用命令 文章目录 Linux基础概念及常用命令 1 Linux概述 1.1 为什么要学Linux 1.2 Linux简介 1.3 Linux 发行版 1.4 Linux 应用领域 ...

  8. 基本BASH SHELL脚本命令——Linux系统管理命令-检测程序、检测磁盘空间

    详细介绍Linux系统管理命令,演示如何通过命令行命令来探查Linux系统的内部信息 一.监测程序 Linux系统管理员面临的最复杂的任务之一就是跟踪运行在系统中的程序--尤其是现在,图形化桌面集成了 ...

  9. shell脚本和linux命令,Linux shell脚本全面学习(一)

    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...

  10. Linux学习笔记---常用shell命令

    目录 目录信息查看命令ls 清屏命令 clear 目录切换命令 cd 自动补全Tab键的妙用 创建文件夹 mkdir 删除文件夹 rmdir 删除命令 rm 查看路径命令pwd 移动或修改命令  mv ...

最新文章

  1. C++substr()用法
  2. 浏览器内核与web标准
  3. 打开c语言运行不了_C语言——菜鸟和大神的分水岭:内存、线程、进程
  4. reportng定制修改
  5. 二叉树层次遍历--广度遍历和深度遍历
  6. 移动端ajax分页,移动端分页加载 - 花乐天的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. C++全局函数与成员函数的区别
  8. 改winpe注册信息及OEM信息
  9. Flutter Switch
  10. 免费拥有个人云主机——AWS免费EC2套餐
  11. 跨域问题No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
  12. 智慧停车(十一) 前期运营策略-停车人,合伙人,授权人
  13. Vue前端模板框架--vue-admin-template
  14. 【计蒜客】等边三角形
  15. C/C++ 小型餐馆订餐管理系统
  16. 【leetcode】771. 宝石与石头 (简单)
  17. YYYY/MM/dd 日期format的幺蛾子
  18. 计算机教师继续教育心得,教师继续教育培训个人心得体会(精选6篇)
  19. 借助新电商平台,湖北荷塘三宝直达全国餐桌
  20. Git史上最详细教程(详细图解)

热门文章

  1. 【2021版】想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(二)
  2. 如何对文本框进行功能测试
  3. 辽宁启迪:拼多多直通车对搜索流量有什么影响?
  4. 如何建立广泛、牢固的人脉?
  5. iOS14 YYAnimatedImageView图片不显示,多数用在YYLabel的富文本中添加的图片
  6. 基于51单片机智能温控风扇LCD1602液晶显示红外遥控设计
  7. VUE 开发一套自己的时间轴
  8. 取消Steam软件设置在本机上保存账户凭据
  9. 美团外卖推荐系统之智能流量分发的实践与探索
  10. mysql 查询dual报错_MYSQL基础02(查询)