Linux关键命令

文件系统相关

  1. ==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,是否可以在该目录下建立新文件?
  1. 文件的创建:==touch filename==;文件夹的创建==mkdir -p filename/1/2==

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

利用umask命令可以指定哪些权限将在新文件的默认权限中被删除。例如,可以使用下面的命令创建掩码,使得组用户的写权限,其他用户的读、写和执行权限都被取消:
例如:==umask 002==:所对应的文件和目录创建缺省权限分别为6 6 4和7 7 5

umask.png

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

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

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

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

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

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

查看文件的第4行到7行之间的内容:head -n 7 filename | tail -n 4
==cat >> filename==:向文件后面追加内容

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

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

  1. 其他常见的命令:

删除:==rm==,一旦删除了一个文件,就无法再恢复它
拷贝:==cp==;==scp==(远程拷贝)
移动位置:==mv== , 也可以重命名。
==tree==:以树形结构显示当前目录下的文件;==pstree==:打印进程关系树

9.压缩与解压缩命令:

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

网络相关的命令

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

查看当前网卡的状态:==ifconfig==
查看网络的联通性:==ping host/域名/ip==
查看是否是因为22端口否开放,可以先尝试利用==telnet ip==远程登录,==telnet==采用明文传送报文,安全性不好。
正常的ssh登录一般命令:==ssh user@host -p 22==

  1. 网络抓包:==tcpdump==

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

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

-c或--continuous:持续列出网络状态
-s或--statistice:显示网络工作信息统计表
-t或--tcp:显示TCP传输协议的连线状况
-l或--listening:显示监控中的服务器的Socket

实例利用netstat分析TIME_WAIT状态

  1. 用来显示处于活动状态的套接字信息:==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()。

  1. 查看查询arp缓冲区中指定主机的arp条目:==arp==
  2. 路由相关的协议:==route==;==tracepath==;

进程相关的命令

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

  1. ==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==)

  1. swap行中的used值在不断变化时,说明物理内存正在与swap交换数据,这时候真的内存出现了不够用情况。==avail==和==free==和==buff/cache==解释参考
  2. ==cat /proc/meminfo==可以查看更详细的内存信息
  3. ==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. 输入1:列出全部的CPU使用情况
  2. 输入P:根据CPU使用百分比大小进行排序;
  3. 输入M:根据驻留内存大小进行排序;
  4. 输入f:从当前显示中添加或者删除项目

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


dstat.png

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


htop.png
  1. ==ps==:查看当前系统的进程相关信息
    常用的命令为==ps -aux==和==ps -ef==

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

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

  4. cpu亲和技术

  5. ==oom killer==

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

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

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

strace.png

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

磁盘相关的命令

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

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

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

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

  1. 测试磁盘读写速度
    ==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==

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

  2. 硬链接和软链接的区别

参看Linux Tools Quick Tutorial

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,134评论 2 34
  • 内核的引导(BIOS OS Read /boot 内核文件) - 运行init(所有进程的父进程 /etc/ini...
    时待吾阅读 581评论 0 1
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,156评论 9 467
  • 昨天下午召集部门人员开会,20分钟会议,主要说考核,会后请大家去吃饭。 少不了喝酒,目的是给大家联络感情,鼓励大家...
    雪木912阅读 603评论 0 0
  • 小明:女的,她也不知道为什么叫小明,反正就成了小明小新:男的,嘴毒,专门插刀小白:男的,在国外念书,不常回来 小明...
    无言ai阅读 116评论 0 0