一、常识
(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:使用档案名字,这个参数为最后一个参数,后面只能接档案名。