- 1 查看ip地址
- 2 目录
- 3 文件夹的操作
- 3.3 剪切命令
- 3.4 复制目录
- 3.5 目录有多少个文件
- 3.6 查看整个文件夹大小
- 4 获取帮助命令
- 5 文件的操作命令
- 6 进程相关命令
- 7 管道(Pipeline)
- 8 计划任务[定时任务]
- 9 查看端口占用情况
- 10 上传和下载
- 11 查看内存使用情况 free
- 12 top命令查看内存占用情况
- 13 cat /proc/meminfo
- 14 ps aux –sort -rss
- 15 vmstat -s
- 16 配置环境变量
- sudo vim /etc/profile 直接编辑即可
可以在这里配置Jdk或者 Hadoop 等等环境变量 - 17 jps
- 18 操作授权权限
- 19 nohup
- 20 用户相关
- passwd XXXXXX
- vim /etc/sudoers
命令格式
命令 -选项 参数 列如 ls -a /usr
1 查看ip地址
IP addr
2 目录
2.1 切换目录
linux所以需要写路径的地方都支持两种写法
- 全路径 : 以 /开头 直接从根路径开始查找
- 相对路径 : 从当前资源一步一步寻找其他资源过程 (相对路径就绝对不是以 / 开头)
进入指定文件夹 cd /etc/sysconfig (注意cd后面有一个空格)
有的不需要 cd 后面跟 /
cd ,不带任何参数会切换到用户的家目录,Linux 中通常是/home/{用户名}。以我自己为例,我的家目录是/home/ramroll;
cd . 什么都不会发生,因为.代表当前目录;
cd.. 会回退一级目录,因为..代表上级目录和 cd ../ 命令效果是一样的.
cd / 切换到根目录
cd ~ 切换到用户跟目录
cd - 切换到上次访问目录
cd etc 切换到当前目录下的etc目录
2.2 查看当前目录的路径
pwd
3 文件夹的操作
3.1 新建
mkdir 文件夹名字: 新建空文件夹
mkdir tmp 是在当前文件夹下创建文件夹,名字为tmp
mkdir /usr/local/tmp 在指定路径下创建文件夹,名字为tmp
mkdir -p japan/aaa 递归创建文件夹(在当前目录创建japan文件夹,然后在japan文件夹里面再创建aaa文件夹)
3.2 查看
ls或者ll
(ll是ls -l的别名,ll命令可以看到该目录下的所有目录和文件的详细信息):查看目录信息
ls —ls是list的缩写.
-l :列出长数据串,包含文件的属性与权限数据等
-a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)
-d :仅列出目录本身,而不是列出目录的文件数据
-h :将文件容量以较易读的方式(GB,kB等)列出来
-R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
排序
比如我们用ls,希望按照文件名排序倒序,可以使用匿名管道,将ls的结果传递给sort指令去排序。你看,这样ls的开发者就不用关心排序问题了。
3.3 剪切命令
mv [原文件或目录] [目标目录]
mv hadoop-2.7.2.tar.gz soft/hadoop-2.7.2.tar.gz //给当前文件剪切到 soft文件下
mv log-collector-1.0-SNAPSHOT-jar-with-dependencies.jar /root/module # 黑这个文件剪切到/root/module ,并且名字还是原来的名字
3.4 复制目录
cp[选项][原文件或目录][目标目录]
选项:
-r 复制目录
-p 连带文件属性复制
-d 若源文件是链接文件,则复制链接属性
-a 相当于 -pdr
cp -r 目录名称 目录拷贝的目标位置: 拷贝目录(改),-r代表递归拷贝
注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归
3.5 目录有多少个文件
但是如果你想知道当前目录下有多少个文件,可以用ls | wc -l,如下所示:
3.6 查看整个文件夹大小
du -sh 命令
https://blog.csdn.net/qq_41489540/article/details/114004333
4 获取帮助命令
如果你拿到一个指令不知道该怎么用,比如touch,你可以用man touch去获得帮助。man意思是 manual,就是说明书的意思,这里指的是系统的手册。如果你不知道man是什么,也可以使用man man。下图是使用man man的结果:
5 文件的操作命令
5.1 新增文件
touch指令
touch指令本来是用来更改文件的时间戳的,但是如果文件不存在touch也会帮助创建一个空文件。
touch a.txt
文件默认是只读状态,不能编辑,点进去需要按键盘ins 或者是 小写字母 i ,
- 直接编辑文件,编辑完了直接报错就生成了一个文件.
vi 和vim都是编辑文件,如果文件不存在,这个命令会带有创建文件的功能,vim是带颜色的, vi是不带颜色的.
进入到编辑器之后点击 i 或者 ins 启动编辑命令,编辑之后按 esc 退出编辑状态, 输入 wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)
5.2 查看文件的内容
5.2.1 cat
cat 指令将文件链接到标准输出流并打印到屏幕上面.
列子: cat /etc/hosts
注意不要用cat打开大文件,不然会卡死
因为需要把文件拷贝到标准输出流,再打印到屏幕上面,拷贝到标准输出流的时候很花费时间并且占用机器的资源,严重会导致因为内存不足而机器卡死.
5.2.2 more
more缺点是不能向上翻页,less命令支持向上翻页,less用的比more多一些
more可以帮助我们读取文件,但不需要读取整个文件到内存中。本身more的定位是一个阅读过滤器,比如你在more里除了可以向下翻页,还可以输入一段文本进行搜索。
more 可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看
如上图所示,我在more查看一个 nginx 日志后,先输入一个/,然后输入192.168看到的结果。more帮我找到了192.168所在的位置,然后又帮我定位到了这个位置。整个过程 more 指令只读取我们需要的部分到内存中。
5.2.3 less
less是一个和more功能差不多的工具,打开man能够看到less的介绍上写着自己是more的反义词(opposite of more)。这样你可以看出linux生态其实也是很自由的一个生态,在这里创造工具也可以按照自己的喜好写文档。less支持向上翻页,这个功能more是做不到的。所以现在less用得更多一些。
- less: 可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看
PV 分析
PV(Page View),用户每访问一个页面就是一次Page View。对于nginx的acess_log来说,分析 PV 非常简单,我们直接使用wc -l就可以看到整体的PV。
如上图所示:我们看到了一共有 51462 条 PV。
5.2.4 head
head 是显示一个文件的内容的前多少行;
head demo.xml —默认查看前十行的内容
head -2 demo.xml — 查看前两行的内容
5.2.5 tail
tail 是显示一个文件的内容的最后多少行;
tail-10 : 查看文件的后10行,Ctrl+C结束
tail demo.xml —默认是查看后十行
tail -2 demo.xml — 查看后两行的内容
tail -n 1000查看最后的 1000 行
注意:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控 文 件的变化
-f 是follow的意思,就是文件追加的内容会跟随输出到标准输出流。
5.2.6 grep
grep 命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等
grep “shell” hello.sh — 从 hello.sh 文件里面搜索 含有 shell 字符串的数据行.
-v 是取反的意思
-i 忽略大小写 (Linux是严格区分大小写的)
grep -v “shell” hello.sh —从 hello.sh 文件里面搜索不包含有 shell 字符串的数据行.
grep [-acinv] [—color=auto] ‘查找字符串’ filename
-a :将binary文件以text文件的方式查找数据
-c :计算找到‘查找字符串’的次数
-i :忽略大小写的区别,即把大小写视为相同
-v :反向选择,即显示出没有‘查找字符串’内容的那一行
有时候你需要查看一个指定ip的nginx日志,或者查看一段时间内的nginx日志。如果不想用less和more进入文件中去查看,就可以用grep命令。
grep 这个词,我们分成三段来看,是 g|re|p , g 就是 global,全局 ,re 就是 regular expression,正则表达式,p 就是 pattern,模式。
例 1:查找 ip 地址,我们可以通过grep命令定位某个ip地址的用户都做了什么事情,如下图所示:
例 2:查找时间段的日志,我们可以通过 grep 命令查找某个时间段内用户都做了什么事情。如下图所示,你可以看到在某个 5 分钟内所有用户的访问情况。
5.3 压缩解压文件tar
tar
-c :新建打包文件
-t :查看打包文件的内容含有哪些文件名
-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j :通过bzip2的支持进行压缩/解压缩
-z :通过gzip的支持进行压缩/解压缩
-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename :filename为要处理的文件
-C dir :指定压缩/解压缩的目录dir 常用tar命令
压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
1)打包并压缩文件
Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。
命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件
其中:
z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名
比如:加入test目录下有三个文件分别是:aaa.txt bbb.txt ccc.txt,如果我们要打包test目录并指定压缩后的压缩包名称为test.tar.gz可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt或:tar -zcvf test.tar.gz /test/
2)解压压缩包
命令:tar [-xvf] 压缩文件
其中:x:代表解压
示例:
1 将/test下的test.tar.gz解压到当前目录下可以使用命令:tar -xvf test.tar.gz
2 将/test下的test.tar.gz解压到根目录/usr下:tar -xvf xxx.tar.gz -C /usr(- C代表指定解压的位置)
5.4 复制剪切文件CP
复制文件或者文件夹
cp Demo.java demo — 在当前文件夹下复制Demo.java文件, 同时命名为demo ,此时输入ls就会查看当前文件夹下多了个demo文件.
如果复制文件夹必须 携带 -r
cp -r abc bbb —在当前文件夹下复制abc文件夹 ,并且名字为 bbb 此时输入ls查看当前文件夹下就会多了个名字为bbb的文件夹.
-a :将文件的特性一起复制
-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
-i :若目标文件已经存在时,在覆盖时会先询问操作的进行
-r :递归持续复制,用于目录的复制行为
-u :目标文件与源文件有差异时才会复制
剪切文件或者文件夹MV
mv 原文件 新文件 (带有重命名功能)
mv demo demo123 —剪切当前文件夹下的demo文件,同时粘贴到当前文件夹下,名字为demo123 (相当于重命名)
剪切文件夹也是这个命令
-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件已经存在,就会询问是否覆盖
-u :若目标文件已经存在,且比目标文件新,才会更新
5.5 删除文件夹/文件RM
-f :就是force的意思,忽略不存在的文件,不会出现警告消息
-i :互动模式,在删除前会询问用户是否操作
-r :递归删除,最常用于目录删除,它是一个非常危险的参数
删除文件
rm demo123 —删除当前文件夹下名字为 demo123 的文件,此时会弹出一个 y/n选项, 选 输入 y就行了
rm -f demo123 —删除当前文件夹下名字为 demo123 的文件,不会弹出一个 y/n选项,就是强制删除
绝对路径删除东西
rm -rf /mnt/hgfs/xxxxx
删除文件夹
rm -r abc — 删除当前目录下名字为abc的文件夹
rm -rf abc — 删除当前目录下名字为abc的文件夹,强制删除
5.6 find(文件搜索)
案例 : 查找 Linux下的Tomcat目录,输入命令:
sudo find / -name tomcat
命令:find
语法:find [搜索范围路径] -name 【文件名称】(根据文件名查找)
find [搜索范围路径] -size [(+-)文件大小] (根据文件大小查找,大于+ 小于-)
find [搜索范围路径] -user(文件的所有者)
find [时间查找] [以天为单位]
[以天为单位] 1 ctime、atime、mtime
[以分钟为单位] 2 cmin、amin、mmin
。。。。。
描述:查找任何文件或目录(所有)
如果搜索范围路径不加的话就是全局搜索
可以使用通配符
* 代表任意字符
? 匹配指定字符,就是单个字符,
find [搜索范围路径] -size [+-文件大小] (根据文件大小查找,大于+小于-)
注意,对于文件的大小是以数据块为单位。数据块大小是512bit
形如:如需查找100M的文件,那么就要知道100M为多少block?
100M = ? block
1M = 1024K
100M = 102400K
1K = 2 block
100M = 2*102400 block
find [搜索范围路径] -user(文件的所有者)
描述:查找隶属于某个用户的文件
find [时间查找] [以天为单位]
天: ctime、atime、mtime
分钟:cmin、amin、mmin
c表示:change 改变文件属性的意思(比如所有者、所属组、权限变更)。
a表示:access 表示被访问过的意思(比如被查看过等)。
m表示:modify 更改内容的意思。
在时间前面添加:-表示之内,+表示之外
find应用的连接符:
-a (and的意思,逻辑与)
-o(or的意思,逻辑或)
find查找:根据文件类型进行查找:
-type
其中:f表示二进制文件,l表示软连接文件 d表示目录
find 寻找 find [PATH] [option] [action] 与时间有关的参数:
-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
-newer file : 列出比file还要新的文件名
5.7 find和grep区别
find命令: 在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配.
grep命令: 在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配.
5.8 去重复
比如有一个字典文件,里面都是词语。如下所示
Apple Banana Apple Banana …… |
---|
如果我们想要去重可以使用uniq指令,uniq指令能够找到文件中相邻的重复行,然后去重。但是我们上面的文件重复行是交替的,所以不可以直接用uniq,因此可以先sort这个文件,然后利用管道将sort的结果重定向到uniq指令。指令如下:
5.9 筛选指定文件名
有时候我们想根据正则模式筛选对应的内容。比如说我们想找到项目文件下所有文件名中含有Spring的文件。就可以利用grep指令,操作如下:
find ./ | grep Spring |
---|
find ./递归列出当前目录下所有目录中的文件。grep从find的输出流中找出含有Spring关键字的行。
如果我们希望包含Spring但不包含MyBatis就可以这样操作:
find ./ | grep Spring | grep -v MyBatis |
---|
grep -v是匹配不包含 MyBatis 的结果。
6 进程相关命令
6.1 查看进程命令 PS
ps 命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、 进程 是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地.
语法
-e 显示所有进程,环境变量
-f 全格式
-h 不显示标题
-l 长格式
-w 宽输出
a
显示终端上地所有进程,包括其他用户地进程
r
只显示正在运行地进程
x
显示没有控制终端地进程
ps 查看进程
-A :所有的进程均显示出来
-a :不与terminal有关的所有进程
-u :有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息
-l :较长,较详细地将PID的信息列出
ps aux # 查看系统所有的进程数据
ps ax # 查看不与terminal有关的所有进程
ps -lA # 查看系统所有的进程数据
ps axjf # 查看连同一部分进程树状态
UID 指进程的所有者;
PID 是进程的唯一标识;
PPID 是进程的父进程 ID;
C 是 CPU 的利用率(就是 CPU 占用);
STIME 是开始时间;
TTY 是进程所在的 TTY,如果没有 TTY 就是 ?号;
TIME;
CMD 是进程启动时的命令,如果不是一个 Shell 命令,而是用方括号括起来,那就是系统进程或者内核过程。
后台执行
命令 : nohup
语法: nohup program &
描述: 使进程在用户退出登录后仍旧继续执行
查看后台进程
命令:jobs
语法:jobs
描述:查看放在后台执行的进程
fg[任务编号] 把任务恢复到前台继续执行
bg[任务编号] 把任务恢复到后台继续执行
6.1.1 ps -ef|grep
ps命令将某个进程显示出来
grep命令是查找
中间的|是管道命令 是指ps命令与grep同时执行
PS是LINUX下最常用的也是非常强大的进程查看命令
grep命令是查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
以下这条命令是检查java 进程是否存在:ps -ef |grep java
字段含义如下:
UID PID PPID C STIME TTY TIME CMD
zzw 14124 13991 0 00:38 pts/0 00:00:00 grep —color=auto dae
UID :程序被该 UID 所拥有
PID :就是这个程序的 ID
PPID :则是其上级父程序的ID
C :CPU使用的资源百分比
STIME :系统启动时间
TTY :登入者的终端机位置
TIME :使用掉的CPU时间。
CMD :所下达的是什么指令
7 管道(Pipeline)
现在你已经掌握了一点点进程的基础,下面我们来学习管道,管道(Pipeline)的作用是在命令和命令之间,传递数据。比如说一个命令的结果,就可以作为另一个命令的输入。我们了解了进程,所以这里说的命令就是进程。更准确地说,管道在进程间传递数据。
7.1 输入输出流
每个进程拥有自己的标准输入流、标准输出流、标准错误流。
这几个标准流说起来很复杂,但其实都是文件。
- 标准输入流(用 0 表示)可以作为进程执行的上下文(进程执行可以从输入流中获取数据)。
- 标准输出流(用 1 表示)中写入的结果会被打印到屏幕上。
- 如果进程在执行过程中发生异常,那么异常信息会被记录到标准错误流(用 2 表示)中。
7.2 重定向
我们执行一个指令,比如ls -l,结果会写入标准输出流,进而被打印。这时可以用重定向符将结果重定向到一个文件,比如说ls -l > out,这样out文件就会有ls -l的结果;而屏幕上也不会再打印ls -l的结果。
具体来说>符号叫作覆盖重定向;>>叫作追加重定向。>每次都会把目标文件覆盖,>>会在目标文件中追加。
比如你每次启动一个程序日志都写入/var/log/somelogfile中,可以这样操作,如下所示:
start.sh >> /var/log/somelogfile
经过这样的操作后,每次执行程序日志就不会被覆盖了。
另外还有一种情况,比如我们输入:
ls1 > out
结果并不会存入out文件,因为ls1指令是不存在的。结果会输出到标准错误流中,仍然在屏幕上。这里我们可以把标准错误流也重定向到标准输出流,然后再重定向到文件。
ls1 &> out
这个写法等价于:
ls1 > out 2>&1
相当于把ls1的标准输出流重定向到out,因为ls1 > out出错了,所以标准错误流被定向到了标准输出流。&代表一种引用关系,具体代表的是ls1 >out的标准输出流。
7.3 管道的作用和分类
有了进程和重定向的知识,接下来我们梳理下管道的作用。管道(Pipeline)将一个进程的输出流定向到另一个进程的输入流,就像水管一样,作用就是把这两个文件接起来。如果一个进程输出了一个字符 X,那么另一个进程就会获得 X 这个输入。
管道和重定向很像,但是管道是一个连接一个进行计算,重定向是将一个文件的内容定向到另一个文件,这二者经常会结合使用。
Linux 中的管道也是文件,有两种类型的管道:
- 匿名管道(Unnamed Pipeline),这种管道也在文件系统中,但是它只是一个存储节点,不属于任何一个目录。说白了,就是没有路径。
- 命名管道(Named Pipeline),这种管道就是一个文件,有自己的路径。
7.4 中间结果
管道一个接着一个,是一个计算逻辑。有时候我们想要把中间的结果保存下来,这就需要用到tee指令。tee指令从标准输入流中读取数据到标准输出流。
这时候,你可能会问: 老师, 这不是什么都没做吗?
别急,tee还有一个能力,就是自己利用这个过程把输入流中读取到的数据存到文件中。比如下面这条指令:
find ./ -i “*.java” | tee JavaList | grep Spring |
---|
这句指令的意思是从当前目录中找到所有含有 Spring 关键字的 Java 文件。tee 本身不影响指令的执行,但是 tee 会把 find 指令的结果保存到 JavaList 文件中。
tee这个执行就像英文字母中的 T 一样,连通管道两端,下面又开了口。这个开口,在函数式编程里面叫作副作用。
7.5 创建管道
还有一种管道叫作命名管道(Named Pipeline)。命名管道是要挂到文件夹中的,因此需要创建。用mkfifo指令可以创建一个命名管道,下面我们来创建一个叫作pipe1的命名管道,如下图所示:
命名管道和匿名管道能力类似,可以连接一个输出流到另一个输入流,也是 First In First Out。
当执行cat pipe1的时候,你可以观察到,当前的终端处于等待状态。因为我们cat pipe1的时候pipe1中没有内容。
如果这个时候我们再找一个终端去写一点东西到pipe中,比如说:
echo “XXX” > pipe1
这个时候,cat pipe1就会返回,并打印出xxx,如下所示:
我们可以像上图那样演示这段程序,在cat pipe1后面增加了一个&符号。这个&符号代表指令在后台执行,不会阻塞用户继续输入。然后我们通过echo指令往pipe1中写入东西,接着就会看到xxx被打印出来。
8 计划任务[定时任务]
周期性的计划命令
- 查看是否启动crontab程序
输入命令:
ps -el | grep crond
如果没启动就手动启动
/etc/rc.d/init.d/crond start
crontab文件建立好以后可以到/var/spool/cron 目录确认
命令: crontab
语法: crontab{-l|-r|-e}
-l 显示当前从crontab
-r 删除当前的crontab
-e 使用编辑器编辑当前的crontab
注意.时间选项都不能为空,不知道的值统一使用* ,表示任何时间,
每个时间字段都可以指定多个值,不连续的值用”,”分隔,连续的值用”-”分隔,
注意命令应该使用绝对路径,用户必须要具有运行所对应的命令的权限.
https://www.jianshu.com/p/d93e2b177814
一次性的计划任务
at的任务是否能运行依赖于atd服务
我们可以先查看下atd服务是否运行
centos6:service atd status
centos7:systemctl status atd
如果没有就需要安装组件
yum -y install at apt-get install at
然后启动
systemctl start atd
把atd设为开机启动
systemctl enable atd
at 安排作业在某一时刻执行一次
cron 安排周期性运行的作业
命令: at
语法: at[-f 文件名]时间
绝对计时方法: HH:MM YYYY-MM-DD
相对计时方法: now + n minutes now + n hours now + n days
描述: 安排一次或多个命令在指定的时间运行一次
然后按ctrl +d 保存任务退出.,
相对计时 列子: at now + 1 minutes — 当前时间加1分钟 cat /root/ceui.log 然后按 ctrl +d 就保存任务退出了 然后一分钟后就会出现提示: 您在 /var/spool/mail/root 中有新邮件 cd到mail那里打开root即可查看内容 绝对计时 列子2: at 17:00 2019-08-09 —计划任务在2019年08月09日的下午五点开始执行 cat /root/ceui.log —执行的内容 然后按ctrl +d 保存退出 |
---|
查看计划任务 at -l 查看
at -d [进程号] 删除队列中的任务
9 查看端口占用情况
netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况
说明一下几个参数的含义:
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
如果报错:-bash: netstat: 未找到命令,就下载下面的插件
yum -y install net-tools
查看redis端口是否被占用: 用如下命令:
netstat -apn |grep 6379 |
---|
-apn意思是 :
-a,显示所有
-n,不用别名显示,只用数字显示
-p,显示进程号和进程名
查看8080端口是否被占用
netstat -lnp|grep 8000
10 上传和下载
rz 上传
sz要下的文件 回车
如果提示没有这个命令就需要安装:
yum install -y lrzsz
11 查看内存使用情况 free
free [-b|-k|-m|-g] [-t]
-b:直接输入free时,显示的是KB ,我们可以使用b(bytes)、m(MB),k(KB)及g(GB)来显示单位
-t:在输出的最终结果中显示物理内存与swap的总量
total : 总计物理内存的大小。
used : 已使用多大。
free : 可用有多少。
Shared : 多个进程共享的内存总额。
Buffers/cached : 磁盘缓存的大小。
-/+ buffers/cached) :
used:已使用多大;
free:可用有多少。
注意:
(mem)的used/free与(-/+ buffers/cache) used/free的区别:
这两者的区别在于使用的角度来看,前者是从OS(Operating Sys)的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是11737644KB,已用内存是54215352KB,
后者所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。
12 top命令查看内存占用情况
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
命令格式
top [参数]
命令参数
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数
说明
统计信息区:
前五行是当前系统情况整体的统计信息区。下面我们看每一行信息的具体意义。
第一行
第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下: 14:06:23 — 当前系统时间 up 70 days, 16:44 — 系统已经运行了70天16小时44分钟(在这期间系统没有重启过的吆!) 2 users — 当前有2个用户登录系统 load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。 |
---|
第二行
Tasks — 任务(进程),具体信息说明如下:
系统现在共有206个进程,其中处于运行中的有1个,205个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。 |
---|
第三行
cpu状态信息,具体属性说明如下:
5.9%us — 用户空间占用CPU的百分比。 3.4% sy — 内核空间占用CPU的百分比。 0.0% ni — 改变过优先级的进程占用CPU的百分比 90.4% id — 空闲CPU百分比 0.0% wa — IO等待占用CPU的百分比 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比 0.2% si — 软中断(Software Interrupts)占用CPU的百分比 备注:在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识! 第四行,内存状态,具体信息如下: 32949016k total — 物理内存总量(32GB) 14411180k used — 使用中的内存总量(14GB) 18537836k free — 空闲内存总量(18GB) 169884k buffers — 缓存的内存量 (169M) |
---|
第四行
内存状态,具体信息如下
32949016k total — 物理内存总量(32GB) 14411180k used — 使用中的内存总量(14GB) 18537836k free — 空闲内存总量(18GB) 169884k buffers — 缓存的内存量 (169M) |
---|
第五行
swap交换分区信息,具体信息说明如下: 32764556k total — 交换区总量(32GB) 0k used — 使用的交换区总量(0K) 32764556k free — 空闲交换区总量(32GB) 3612636k cached — 缓冲的交换区总量(3.6GB) 备注: 第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。 如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:18537836k +169884k +3612636k = 22GB左右。 对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。 |
---|
第六行以下
各进程(任务)的状态监控,项目列信息说明如下: PID:当前运行进程的ID USER:进程属主 PR:每个进程的优先级别 NInice:反应一个进程“优先级”状态的值,其取值范围是-20至19,一 共40个级别。这个值越小,表示进程”优先级”越高,而值越 大“优先级”越低。一般会把nice值叫做静态优先级 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程使用的共享内存 S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示 该进程优先值为负数 %CPU:进程占用CPU的使用率 %MEM:进程使用的物理内存和总内存的百分比 TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。 COMMAND:进程启动命令名称 |
---|
13 cat /proc/meminfo
查看RAM使用情况最简单的方法是通过命令:cat /proc/meminfo;
这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示。
/proc/meminfo列出了所有你想了解的内存的使用情况。
进程的内存使用信息也可以通过命令:cat /proc//statm 、 cat /proc//status 来查看。
14 ps aux –sort -rss
ps aux: 列出目前所有的正在内存当中的程序。
a显示终端上地所有进程,包括其他用户地进程(有的进程没有终端)。
-a 显示所有终端机下执行的进程,除了阶段作业领导者之外。
u 以用户为主的格式来显示进程状况。
x 显示所有进程,不以终端机来区分。
a会包括其他用户(否则只有用户本身); x会包括其他终端;
aux就可以包括内存所有;
USER:该 process 属于那个使用者账号的
PID :该 process 的号码
%CPU:该 process 使用掉的 CPU 资源百分比
%MEM:该 process 所占用的物理内存百分比
VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
RSS :该 process 占用的固定的内存量 (Kbytes)
TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有
R :该程序目前正在运作,或者是可被运作
S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
T :该程序目前正在侦测或者是停止了
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
START:该 process 被触发启动的时间
TIME :该 process 实际使用 CPU 运作的时间
COMMAND:该程序的实际指令
15 vmstat -s
vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。
16 配置环境变量
sudo vim /etc/profile 直接编辑即可
可以在这里配置Jdk或者 Hadoop 等等环境变量
配置完了执行下面命令刷新配置文件
# source /etc/profile
17 jps
jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。非常简单实用。
[options]选项 :
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method
-m:输出main method的参数
-l:输出完全的包名,应用主类名,jar的完全路径名
-v:输出jvm参数
-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
-Joption:传递参数到vm,例如:-J-Xms512m
[hostid]:
[protocol:][[//]hostname][:port][/servername]
命令的输出格式 :
lvmid [ [ classname| JARfilename | “Unknown”] [ arg ] [ jvmarg ] ]
1)jps
2)jps –l:输出主类或者jar的完全路径名
3)jps –v :输出jvm参数
4)jps –q :仅仅显示java进程号
5)jps -mlv10.134.68.173
注意:如果需要查看其他机器上的jvm进程,需要在待查看机器上启动jstatd。
18 操作授权权限
18.1 给指定用户授权读写权限
chown -R zjj /usr/local/elasticsearch-2.4.6
意思是给 zjj用户授权 /usr/local/elasticsearch-2.4.6 文件夹读写权限.
19 nohup
19.1 写个脚本后台运行jar文件
新建一个sh文件
#!/bin/bash nohup java -jar /usr/local/sentinel-dashboard-1.6.3.jar —server.port=9999 >sentinelLog.log & |
---|
上面命令的意思是后台启动jar文件,文件名字和路径为java -jar /usr/local/sentinel-dashboard-1.6.3.jar ,指定端口为9999 ,将日志生成的同目录下的sentinelLog.log文件里面
20 用户相关
20.1 添加新的用户和切换新的用户
https://jingyan.baidu.com/article/fec4bce28cb7caf2618d8bb8.html
20.2 root用户给其它用户设置密码
xxx 是要修改的用户名
passwd XXXXXX
20.3 永久修改主机名字
//westos为想要更改的主机名,命令执行即生效 ,然后reboot重启再输入hostname命令查看,就发现主机名已经更新了.
# hostnamectl set-hostname westos
// 查看主机名:
# hostname
20.4 赋予别的用户root权限
vim /etc/sudoers
大概90多行的地方 在下面添加一行,atguigu用户设置root权限,同时不需要输入密码.