linux关键命令,Linux关键命令

文件系统相关

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

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

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

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

ls-al.png

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

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

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

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

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

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

ls.png

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

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

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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:不解析服务名称,以数字方式显示

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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==:多方信息监测系统性能和运行信息的实用工具

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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==,还有网络。

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

dstat.png

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

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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==:跟踪进程执行时的系统调用和所接收的信号

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

strace.png

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

磁盘相关的命令

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

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

df.png

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

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

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

测试磁盘读写速度

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

参数详解

0bf92a8bd8d2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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中的磁盘调度算法以及调优

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值