介绍作为一个程序员,我们在进行项目部署和运维时,经常会用到一些linux命令,可是这些命令老是忘记,每次用到的时候都要去谷歌百度,很是麻烦!这不,为了自己使用方便,对常见的linux命令进行了系统的总结,以便在用到时能够快速地找到相关命令,同时有需要的朋友也可以参考收藏该篇文章!文章对讲到的每个命令都有详细的参数解释,并且给出一些常用例子,因此也非常适合用来学习!
全文命令分为以下6个模块:
常用系统工作命令系统状态检测命令工作目录切换命令文本文件编辑命令文件目录管理命令打包压缩与搜索命令
在说具体命令之前,读者应该清楚linux命令的基本格式,如下:
linux命令的格式
5、wget命令wget命令用于在终端中下载网络文件,格式为“ wget [参数] 下载地址”。
6、ps命令ps命令用于查看系统中的进程状态,格式为“ ps [参数 ]”。
常用用法:ps -ef 或 ps aux
一般来说,可以通过ps -ef | grep "process" 来查看目标进程的信息(这条命令其实是通过"|"管道符,将ps -ef得到的所有进程信息作为后面命令的输入,从而在所有进程信息中找到对应的进程信息) 。
7、top命令(相当于window中的任务管理器)top命令用于动态地监视进程活动与系统负载等信息,默认每10秒刷新一次。
各进程(任务)的状态监控:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
8、pidof命令pidof命令用于查询某个指定服务进程的 PID值,格式为“ pidof [参数 ] [服务名称 ]”。
9、kill命令kill命令用于终止某个指定 PID的服务进程,格式为“ kill [参数 ] [进程 PID]”。
此外,还有一些可以用来关闭进程的方式:
① pgrep 进程名 | xargs kill -s 9
② pkill -9 进程名
③ killall -9 进程名
④ kill -9 进程号(也就是pid)
注意:①和②中的pgrep和pkill只要给出进程名的一部分就可以终止进程,而③中的killall不行。一般来说④需要先获取进程对应的pid后,才可进行操作。
参考
10、killall命令通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这些进程会比较麻烦,此时可以使用 killall命令来批量结束某个服务程序带有的全部进程。下面以 服务程序为例,来结束其全部进程。
11、lsof命令lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
lsof语法格式是: lsof [options] filename
常用命令:
lsof -i :端口号 eg:lsof -i :6379
lsof abc.txt 显示开启文件abc.txt的进程
lsof -c abc 显示abc进程现在打开的文件
lsof -c -p 1234 列出进程号为1234的进程所打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 46 --> IPv4 or IPv6 protocol --> TCP or UDP hostname --> Internet host name hostaddr --> IPv4地址 service --> /etc/service中的 service name (可以不止一个) port --> 端口号 (可以不止一个)
具体参数可参考该文章:lsof的介绍
12、strace命令strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数、返回值、执行消耗的时间。
参考:strace详情
13、chmod命令chmod是linux中更改文件权限的命令。
参考:chmod详情
二、系统状态检测命令1、ifconfig命令此命令被用来获取网络接口配置信息并对此进行修改。
由于此命令较复杂,可以参考此篇文章进行学习:
2、uname命令uname命令用于查看系统内核与系统版本等信息,格式为“ uname [-a]”。
在使用uname命令时,一般会固定搭配上 -a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。
3、uptime命令uptime用于查看系统的负载信息,格式为 uptime。
uptime命令真的很棒,它可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近 1分钟、 5分钟、 15分钟内的压力情况(下面加粗的信息部分);负载值越低越好,尽量不要长期超过 1,在生产环境中不要超过 5。
4、free命令free用于显示当前系统中内存的使用量信息,格式为“ free [-h]”。
为了保证Linux系统不会因资源耗尽而突然宕机,运维人员需要时刻关注内存的使用量。
在使用 free命令时,可以结合使用 -h参数以更人性化的方式输出当前内存的实时使用量信息。
表 2-8所示为电脑上执行 free -h命令之后的输出信息。需要注意的是,输出信息中的中文注释是作者自行添加的内容,实际输出时没有相应的参数解释。
5、who命令who用于查看当前登录主机的用户终端信息,格式为“ who [参数]”。
这三个简单的字母可以快速显示出所有正在登录本机的用户的名称以及他们正在开启的终端信息。
6、last命令last命令用于查看所有系统的登录记录,格式为“ last [参数]”。
使用last命令可以查看本机的登录记录。但是,由于这些信息都是以日志文件的形式保存在系统中,因此黑客可以很容易地对内容进行篡改。千万不要单纯以该命令的输出信息而判断系统有无被恶意入侵!
7、history命令用于显示历史执行过的命令,格式为“ history [-c]”。
history命令应该是作者最喜欢的命令。执行 history命令能显示出当前用户在本地计算机中执行过的最近 1000条命令记录。如果觉得 1000不够用,还可以自定义 /etc/profile文件中的HISTSIZE变量值。在使用 history命令时,如果使用 -c参数则会清空所有的命令历史记录。还可以使用“!编码数字”的方式来重复执行某一次的命令。总之, history命令有很多有趣的玩法等待您去开发。历史命令会被保存到用户家目录中的.bash history文件中。 Linux系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用 cat命令查看其文件内容。
要清空当前用户在本机上执行的Linux命令历史记录信息,可执行如下命令:
8、df命令df(disk free)命令的作用是查看Linux磁盘剩余空间。
Df命令是以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息。
常用参数:df -h 用于人性化的显示磁盘剩余空间信息
9、vmstat命令vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:
2表示每隔两秒采集一次服务器状态,1表示只采集一次。
实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如:
这表示vmstat每2秒采集数据,一直采集,直到我结束程序,这里采集了5次数据我就结束了程序。
参考:vmstat详解