Linux常用命令

简介: Linux常用命令

一、常识


(1)tab键命令补全

(2)常规操作

ctrl + l或clear 清屏
ctrl + c 强制中断程序
ctrl + z 任务中断,但是此任务并没有结束,在进程中处于挂起状态
ctrl + r 搜寻历史记录
ctrl + u 清除整行输入
ctrl + w 清除最后一个单词
ctrl + a 跳转至行首
ctrl + e 跳转至行尾
alt + . 上一行指令最后一个单词
tab 命令自动填充

(3)命令历史

history:查看所有输入的命令
history -c:清楚历史命令
!n:执行编号为n的命令
!-n:执行倒数第n条命令
!!:表示上一条命令,相当于i-1
!keyword:查找包含该keyword的历史命令

(4)查看文件常用命令(一般用来查看系统日志)

cat [options] filename:查看文件全部内容
-A:--show-all 等价于 -vET
-b:--number-nonblank 对非空输出行编号,即在每行前显示所在行号
-e:等价于 -vE
-E: --show-ends 在每行结束处显示 $
-n:--number 对输出的所有行编号,即在每行前显示所在行号
-s:--squeeze-blank 不输出多行空行
-t:与 -vT 等价
-T:--show-tabs 将跳 字符显示为 ^I
-u :(被忽略)
-v: --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
head [ -n Number] filename:查看文件头部内容

参数解释:

-n Number 查看文件前Number行

示例:

head -n 50 access.log 查看access.log的前50行
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]:查看文件尾部内容

参数解释:

-f 该参数用于监视File文件增长。 
-c Number 从 Number 字节位置读取指定文件 
-n Number 从 Number 行位置读取指定文件。 
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。 
-b Number 从 Number 表示的512字节块位置读取指定文件。 
-k Number 从 Number 表示的1KB块位置读取指定文件。 
File 指定操作的目标文件名称 

上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部开始计算。

more [options] filename:分页显示文件内容
options:
+n      从笫n行开始显示
-n       定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示  
-c       从顶部清屏,然后显示
-d       提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l        忽略Ctrl+l(换页)字符
-p       通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s       把连续的多个空行显示为一行
-u       把文件内容中的下画线去掉

输入more之后的常规操作:

Enter    向下n行,需要定义。默认为1行
Ctrl+F   向下滚动一屏
空格键  向下滚动一屏
Ctrl+B  返回上一屏
=       输出当前行的行号
:f     输出文件名和当前行的行号
V      调用vi编辑器
!命令   调用Shell,并执行命令 
q       退出more

示例:

more -c interface.log 
less [options] filename:分页显示文件内容,既能向后查看,也能像前查看
options:
-b <缓冲区大小> 设置缓冲区的大小
-e  当文件显示结束后,自动离开
-f  强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g  只标志最后搜索的关键词
-i  忽略搜索时的大小写
-m  显示类似more命令的百分比
-N  显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q  不使用警告音
-s  显示连续空行为一行
-S  行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格

常规操作:

/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b  向后翻一页
d  向后翻半页
h  显示帮助界面
Q  退出less 命令
u  向前滚动半页
y  向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]:   向上翻动一页

示例:

less -N access.log 分页显示access.log文件中的内容
ps -ef|less -N 查看进程信息并通过less分页显示行号
grep [options] [keyword] filename:在指定文件中搜索内容
options主要参数:
-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。
keyword:关键字或者正则表达式
备注:grep -e "regex" filename相当于egrep "egex" filename

示例:

egrep -n "^.*request.*$" interface.log 打印所有包含有"request"的行
locate/slocate [options] filename 查找文件
options:
-d<目录>或--database=<目录>:指定数据库所在的目录
-u:更新slocate数据库
--help:显示帮助
--version:显示版本信息

示例:

locate /etc/sh 搜索etc目录下所有以sh开头的文件
locate ~/m 搜索用户主目录下,所有以m开头的文件
locate -i ~/m 搜索用户主目录下,所有以m开头的文件,并忽略大小写
sed -n "start,end p" filename:打印指定文件start到end行

示例:

sed -n "5p" access.log    只打印access.log的第5行
sed -n "5,10p" access.log 打印access.log的第5行到第10行
sed -n  "/2018-09-13 17:00:02.565/,/2018-09-13 17:00:02.569/p" interface.log 打印指定文件时间段从2018-09-13 17:00:02.565到2018-09-13 17:00:02.569的行
awk命令
awk [-F|-f|-v] 'BEGIN{} //{command1;command2} END{}' file
-F      指定分隔符
-f      调用脚本
-v      定义变量
''      引用代码块
BEGIN   初始化代码块,对每一行进行处理之前,初始化代码,主要是引用变量,设置FS分隔符
//      匹配代码块,可以是字符串或正则表达式
{}      命令代码块,包含一条或多条命令
;       多条命令使用分号分割

特殊要点

$0        表示整行
$1        表示指定分隔符分割后的第一个字段
$2        表示指定分隔符分割后的第二个字段
NF        字段数量变量
NR        每行的记录号,多文件记录递增
FS        BEGIN时定义分隔符
~         匹配,与==相比不是精确匹配
!~        不匹配,不是精确匹配
-F'[:#/]' 定义三个分隔符
file      文件名

示例(两者效果相同):

awk 'BEGIN{FS="|"}{if($2>3000) print $0}'
awk -F"|" '{if($2>300) {print $0}}' access.log

(5)linux系统的启动级别

从0到6共7个,比较重要的是0、3、5、6

说明:

init 0 关机
init 3 字符模式(网络功能齐全)
init 5 图形界面
init 6 重启

二、权限和用户管理


(1)权限类型:

r 读
w 写
x 可执行

(2)Linux用户

所有者(u)
所属组(g)(所有者及所有者所在组的全部用户)
其他用户(o)(其他组的所有用户,包括文件所有者)
所有用户(a)

(3)用户管理

用户查看: id 用户名
用户添加: useradd 用户名
用户删除: userdel -r 用户名

(4)chmod权限分配

1、字母权限分配

chmod u+x 文件名
chmod u-x 文件名

2、数字权限

chmod 755 文件名

数字对应权限如下:

r 4
w 2
x 1
默认为644

注意:第一个数字代表文件所有者的权限,第二位数字代表同组用户的权限,第三位数字代表其他用户的权限。

(5)获取root权限:

第一种:先使用sudo passwd,输入密码即可更改。

第二种:直接键入sudo su。

三、查看端口、内存和CPU(和jdk的jps命令结合使用)


(1)lsof -i:端口号,用于查看某一端口的占用情况

如:lsof -i:8080

(2)netstat -tunlp |grep 端口号,用于查看指定端口的进程情况

如:netstat -tunlp,查看当前所有tcp端口

netstat -tunlp |grep 8080,查看8080端口的进程情况,显示的数据如下:

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 :::8080                     :::*                        LISTEN      1974/java           
tcp        0      0 :::18080                    :::*                        LISTEN      9277/java

参数的意义:

-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名

(3)jps(java virtual machine process status tool):显示java所有进程的pid

参数:

-q 只显示pid,不显示class名称,jar文件名和传递给main方法的参数。
-m 输出传递给main方法的参数,在嵌入式jvm中可能是null。
-l 输出应用程序main class的完整package名或者应用程序的jar文件完整名。
-v 输出传递给jvm的参数。

 

(4)ps -ef|grep java:查看tomcat是否启动(打开Catalina.out查看日志同样可以)

ps命令常用参数:

ps命令常用参数:
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
a:显示现行终端机下的所有程序,包括其他用户的程序。
-A:显示所有程序。
-c:显示CLS和PRI栏位。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
-C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
-d:显示所有程序,但不包括阶段作业领导者的程序。
-e:此选项的效果和指定"A"选项相同。
e:列出程序时,显示每个程序所使用的环境变量。
-f:显示UID,PPIP,C与STIME栏位

显示数据如下:

UID       PID       PPID      C     STIME    TTY       TIME         CMD
wildfly   1974      1     0  Sep07    ?        00:13:28  /usr/appl/jdk1.8.0_91/jre/bin/java -Djava.util.logging.config.file=/usr/appl/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/appl/tomcat/endorsed -classpath /usr/appl/tomcat/bin/bootstrap.jar:/usr/appl/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/appl/tomcat -Dcatalina.home=/usr/appl/tomcat -Djava.io.tmpdir=/usr/appl/tomcat/temp org.apache.catalina.startup.Bootstrap start
Djava.util.logging.config.file=/usr/appl/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/appl/tomcat/endorsed -classpath /usr/appl/tomcat/bin/bootstrap.jar:/usr/appl/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/appl/tomcat -Dcatalina.home=/usr/appl/tomcat -Djava.io.tmpdir=/usr/appl/tomcat/temp org.apache.catalina.startup.Bootstrap start
Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -
Djava.endorsed.dirs=/usr/appl/tomcat/endorsed -classpath
/usr/appl/tomcat/bin/bootstrap.jar:/usr/appl/tomcat/bin/tomcat-juli.jar -
Dcatalina.base=/usr/appl/tomcat -Dcatalina.home=/usr/appl/tomcat -
Djava.io.tmpdir=/usr/appl/tomcat/temp org.apache.catalina.startup.Bootstrap start
UID      :程序被该 UID 所拥有
PID      :就是这个程序的 ID 
PPID    :则是其上级父程序的ID
C          :CPU使用的资源百分比
STIME :系统启动时间
TTY     :登入者的终端机位置
TIME   :使用掉的CPU时间。
CMD   :所下达的是什么指令

(5)top:显示系统各个进程的资源占用情况,类似于windows的任务管理器。

top - 01:06:48 up  1:22,  1 user,  load average: 0.06, 0.60, 0.48
Tasks:  29 total,   1 running,  28 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3% us,  1.0% sy,  0.0% ni, 98.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    191272k total,   173656k used,    17616k free,    22052k buffers
Swap:   192772k total,        0k used,   192772k free,   123988k cached
   PID  USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  1379  root      16   0  7976 2456 1980 S  0.7  1.3   0:11.03 sshd
14704  root      16   0  2128  980  796 R  0.7  0.5   0:02.72 top
   1    root      16   0  1992  632  544 S  0.0  0.3   0:00.90 init
   2    root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
   3    root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0

参数解释:

asks:从左到右依次是进程总数(29 total)、正在运行的进程数(1 running)、睡眠进程数(28 sleeping)、停止的进程数(0 stopped)、僵尸进程数(0 zombie)。


Cpus(s):从左到右依次是用户空间占用cpu百分比(0.3% us)、内核空间占用cpu百分比(1.0% sy)、用户进程空间内改变过优先级的进程占用cpu百分比(0.0% ni)、空闲cpu百分比(98.7% id ->idle)


Mem:从左到右依次是物理内存总量(191272k total)、使用的物理内存总量(173656k used)、空闲内存总量(17616k free)、用作内核缓存的内存量(22052k buffers)


Swap:从左到右依次是交换区总量(192772k total)、使用的交换区总量(0k used)、空闲交换区总量(192772k free)、缓冲中的交换区总量(123988k cached)


PID:进程id

USER:进程所有者的用户
PR(priority):优先级
NI:nice值,负值表示高优先级,正值表示低优先级
VIRT(virtual):进程使用的虚拟内存总量,单位kb
RES:进程使用的,未被换出的物理内存大小,单位kb
SHR(share):共享内存大小
S(status):进程状态
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的时间统计,单位1/100秒
COMMAND:命令名/命令行

(6)free [options]:查看系统内存使用情况,一般加入-m参数

total  used  free  shared  buffers  cached
Mem:  1020288  9479607 2328  312  82656  647740
-/+ buffers/cache:  217564  802724
Swap:   2097148  466656  1630492
options:
-b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况 
-m  以MB为单位显示内存使用情况
-g   以GB为单位显示内存使用情况
-l   显示详细内存使用情况,比如低内存占用或者高内存占用情况
-o  不显示缓冲区调节列。
-s  <间隔秒数>  持续观察内存使用状况 
-t  显示内存总和列
-V  显示版本信息

四、文件压缩与解压


tar 
-c:建议压缩档案
-x:解压
-t:查看内容
-r:向压缩文件末尾追加文件
-u:更新原压缩包中的文件
注:上面5个命令是独立的命令,压缩解压都要用到其中一个,下面是可选命令:
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面这个参数必须:

-f:使用档案名字,这个参数为最后一个参数,后面只能接档案名。

相关文章
|
29天前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
75 8
|
29天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
215 6
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
77 3
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
69 2
|
12天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
39 14
Linux 10 个“who”命令示例
|
20小时前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
34 20
|
1天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
20 7
|
20天前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
31 9
|
19天前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
25天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
89 3