参数: -a或–all:包含全部的文件系统; –block-size=<区块大小>:以指定的区块大小来显示区块数目; -h或–human-readable:以可读性较高的方式来显示信息; -H或–si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes; -i或–inodes:显示inode的信息; -k或–kilobytes:指定区块大小为1024字节; -l或–local:仅显示本地端的文件系统; -m或–megabytes:指定区块大小为1048576字节; –no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值; -P或–portability:使用POSIX的输出格式; –sync:在取得磁盘使用信息前,先执行sync指令; -t<文件系统类型>或–type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息; -T或–print-type:显示文件系统的类型; -x<文件系统类型>或–exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息; –help:显示帮助; –version:显示版本信息。
[root@rootLinux ~]# df -h FilesystemSizeUsedAvailUse%Mounted on文件系统容量已用容量可用容量已用百分比挂载点/dev/mapper/vg_hadoop-lv_root50G30G18G63%/tmpfs1.9G01.9G0%/dev/shm/dev/sda1485M37M423M9%/boot/dev/mapper/vg_hadoop-lv_home144G190M136G1%/home语法:free [-bkmotV][-s <间隔秒数>] 参数说明: 参数说明:
-b 以Byte为单位显示内存使用情况。 -k 以KB为单位显示内存使用情况。 -m 以MB为单位显示内存使用情况。 -h 帮助 -o 不显示缓冲区调节列。 -s<间隔秒数> 持续观察内存使用状况。 -t 显示内存总和列。 -V 显示版本信息
[root@rootLinux ~]# free -mtotal:表示 总计物理内存的大小。 used:表示 已使用多少。 free:表示 可用内存多少。 Shared:表示多个进程共享的内存总额。 Buffers/cached:表示 磁盘缓存的大小。 available 还可以被 应用程序 使用的物理内存大小
free 是真正尚未被使用的物理内存数量。 available 是应用程序认为可用内存数量,available = free + buffer + cache (注:只是大概的计算方法)
语法:ps [-aux] 参数说明: -a 显示所有进程(包括其他用户的进程) -u 用户以及其他详细信息 -x 显示没有控制终端的进程
// 显示前10个内存占用由到到低的进程 [root@rootLinux ~]# ps -aux | sort -k4nr | head -n 10USER:进程所有者 PID:进程ID号 %CPU:运算器占用率 %MEM:内存占用率 VSZ:虚拟内存使用量 RSS:占用的固定内存量(单位是KB) TTY:所在终端 STAT:进程状态 START:被启动的时间 TIME:实际使用CPU的时间 COMMAND:命令名称与参数
5种进程状态 R(运行):进程正在运行或在运行队列中等待。 S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。 D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。 Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。 T(停止):进程收到停止信号后停止运行。
参数: a 显示所有进程 -a 显示同一终端下的所有程序 -A 显示所有进程 c 显示进程的真实名称 -N 反向选择 -e 等于“-A” e 显示环境变量 f 显示程序间的关系 -H 显示树状结构 r 显示当前终端的进程 T 显示当前终端的所有程序 u 指定用户的所有进程 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的行程 -C<命令> 列出指定命令的状况 –lines<行数> 每页显示的行数 –width<字符数> 每页显示的字符数 –help 显示帮助信息 –version 显示版本显示
语法: netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][–ip]
参数: -a或–all 显示所有连线中的Socket。 -A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。 -c或–continuous 持续列出网络状态。 -C或–cache 显示路由器配置的快取信息。 -e或–extend 显示网络其他相关信息。 -F或–fib 显示FIB。 -g或–groups 显示多重广播功能群组组员名单。 -h或–help 在线帮助。 -i或–interfaces 显示网络界面信息表单。 -l或–listening 显示监控中的服务器的Socket。 -M或–masquerade 显示伪装的网络连线。 -n或–numeric 直接使用IP地址,而不通过域名服务器。 -N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。 -o或–timers 显示计时器。 -p或–programs 显示正在使用Socket的程序识别码和程序名称。 -r或–route 显示Routing Table。 -s或–statistics 显示网络工作信息统计表。 -t或–tcp 显示TCP传输协议的连线状况。 -u或–udp 显示UDP传输协议的连线状况。 -v或–verbose 显示指令执行过程。 -V或–version 显示版本信息。 -w或–raw 显示RAW传输协议的连线状况。 -x或–unix 此参数的效果和指定"-A unix"参数相同。 –ip或–inet 此参数的效果和指定"-A inet"参数相同。
//查看端口占用 netstat -tnl //查看某个端口占用 netstat -tnl | grep 80 netstat -anp |grep 10250第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“97.1 id”意味着有97.1%的CPU处理器资源处于空闲。
第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
PID: 进程pid
USER: 拉起进程的用户
PR: 该列值加100为进程优先级,若优先级小于100,则该进程为实时(real-time)进程,否则为普通(normal)进程,实时进程的优先级更高,更容易获得cpu调度,以上输出结果中,java进程优先级为120,是普通进程,had进程优先级为2,为实时进程,migration 进程的优先级RT对应于0,为最高优先级
NI: 进程的nice优先级值,该列中,实时进程的nice值为0,普通进程的nice值范围为-20~19
VIRT: 进程所占虚拟内存大小(默认单位kB)
RES: 进程所占物理内存大小(默认单位kB)
SHR: 进程所占共享内存大小(默认单位kB)
S: 进程的运行状态
%CPU: 采样周期内进程所占cpu百分比
%MEM: 采样周期内进程所占内存百分比
TIME+: 进程使用的cpu时间总计
COMMAND: 拉起进程的命令
在当前这个界面,按下数字键盘 1 能够看到各个 CPU 的详细利用率
切换到root用户; exit 退出root用户;
shell将指令翻译成计算器语言(1和0); 将shall看做是一种语言,具体的语法遵循bash;
共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到输入模式,以输入字符。 x 删除当前光标所在处的字符。 : 切换到底线命令模式,以在最底一行输入命令。 若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键: 字符按键以及Shift组合,输入字符 ENTER,回车键,换行 BACK SPACE,退格键,删除光标前一个字符 DEL,删除键,删除光标后一个字符 方向键,在文本中移动光标 HOME/END,移动光标到行首/行尾 Page Up/Page Down,上/下翻页 Insert,切换光标为输入/替换模式,光标将变成竖线/下划线 ESC,退出输入模式,切换到命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序 w 保存文件 按ESC键可随时退出底线命令模式。
:w - 保存文件,不退出 vim :w file -将修改另外保存到 file 中,不退出 vim :w! -强制保存,不退出 vim :wq -保存文件,退出 vim :wq! -强制保存文件,退出 vim :q -不保存文件,退出 vim :q! -不保存文件,强制退出 vim :e! -放弃所有修改,从上次保存文件开始再编辑
查找关键字 :/关键字
显示行数 :set su
删除 dd
cp -ri 源路径/. 目标路径 (此写法,目标路径必须存在,且如果同名提示确认是否覆盖)
cp -ri /tmp/z9/20200709/. 202007091 //复20200709下所有内容到202007091,如果目标存在同名 则提示是否覆盖 cp -ri /tmp/z9/20200709/123.txt 202007091 //复制单个文件到目标文件夹 cp -ri 123.txt /tmp/z9/2021/ //将文件复制到指定目录 a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。d 拷贝时保留链接。f 删除已经存在的目标文件而不提示。i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。l 不作拷贝,只是链接文件mkdir [-p] dirName -p 确保目录名称存在,不存在的就建一个
mkdir -p 2021/1 //2021目录若不存在 则新建一个mv [选项] 源文件或目录 目标文件或目录
-b :若需覆盖文件,则覆盖前先行备份。 -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! -u :若目标文件已经存在,且 source 比较新,才会更新(update) -t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
ps aux|grep dubbo-admin-server-0.2.0-SNAPSHOT.jar
rm [选项] dirname -r:就是向下递归,不管有多少级目录,一并删除 -f:就是直接强行删除,不作任何提示的意思
[root@iZbp14eey5dlgt99xx7qptZ local]# rm -rf javaprint work directory
语法:pwd [-LP]
参数: -L --logical 当目录为连接路径时,显示连接路径 -P --physical 显示实际物理路径,而非使用连接(link)路径
语法:ls [-alrtAFR] [name…] 参数: -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出) -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 -r 将文件以相反次序显示(原定依英文字母次序) -t 将文件依建立时间之先后次序列出 -A 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录) -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/” -R 若目录下有文件,则以下之文件亦皆依序列出
// 查看某个文件的属性 ls -l redis_6379.log //显示文件具体大小,自动根据文件大小显示k、m、g ls -lh文件权限:drwxr-xr-x 1.drwxr 文件所有者权限 1.1 若是【d】则是目录; 若是【-】则是文件; 若是【l】则表示为连接文件; 若是【b】则表示设备文件里的可供存储的接口设备; 若是【c】则表示设备文件里的串行端口设备,如鼠标、键盘等 1.2 r-read w-write x-可执行 2.-xr 用户组权限 3.-x 其它非本用户组权限 连接数:2 文件所有者:root 文件所属用户组:root 文件大小:6 最后修改时间:Jul 14 10:41 文件名:MavenRepository
添加权限
[root@iZbp14eey5dlgt99xx7qptZ myhome]# ls -l total 0 drwxr-xr-x 2 root root 6 Jul 14 10:41 MavenRepository drwxr-xr-x 3 root root 54 Jul 13 19:22 mygit //chmod +(r/w/x) filename chmod a+x filename //如果给所有人添加可执行权限 chmod u+x filename //如果给文件所有者添加可执行权限 chmod g+x filename //如果给所在组添加可执行权限 chmod o+x filename //如果给所在组以外的人添加可执行权限vmstat -n 3 2 意思就是隔 3 秒取样一次,一共取样 2 次
一般 vmstat 工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔,单位是秒,第二个参数是采样的次数 其中主要关注 procs 和 cpu 这两个参数:
r :运行和等待 CPU 时间片的进程数,一般来说整个系统的运行队列不要超过总核数的 2 倍,要不然系统压力太大了 b : 等待资源的进程数,比如正在等待磁盘 IO ,网络 IO 这种
us :用户进程消耗 CPU 时间百分比, us 值高的话,说明用户进程消耗 CPU 时间比较长,如果长期大于 50% 的话,那就说明程序还有需要优化的地方 sy :内核进程消耗的 CPU 时间百分比 us + sy 参考值为 80% ,如果大于 80% 的话,说明可能存在 CPU 不足
说到磁盘 IO 相信你一定能够想到,在对数据库进行操作时,第一要考虑到的就是磁盘 IO 操作,因为相对来说,如果在某个时间段给磁盘进行大量的写入操作会造成程序等待时间长,导致客户端那边好久都没啥反应,用户体验就降低了吗 检查磁盘 IO 情况的命令就是 iostat ,如果你用的时候发现提示:-bash: iostat: command not found ,那是因为没有安装 sysstat ,安装一下就可以了:yum install -y sysstat 接下来运行命令:iostat -xdk 3 2 ,和 vmstat 命令很像有没有~
这么多指标咱们不需要都关注,只要看其中这几个就可以了: rkB/s :每秒读取数据量 kB ; wkB/s :每秒写入数据量 kB ; svctm :I/O 请求的平均服务时间,单位毫秒; util :一秒中有百分之几的时间用于 I/O 操作,如果接近 100% 说明磁盘带宽跑满了,这个时候就要优化程序或者增加磁盘了
网络 IO 的话,可以通过 sar -n DEV 3 2 这条命令来看,和上面的差不多,意思就是每隔 3 秒取样一次,一共取样 2 次
其中: IFACE :LAN 接口 rxpck/s :每秒钟接收的数据包 txpck/s :每秒钟发送的数据包 rxKB/s :每秒接收的数据量,单位 KByte txKB/s :每秒发出的数据量,单位 KByte rxcmp/s :每秒钟接收的压缩数据包 txcmp/s :每秒钟发送的压缩数据包 rxmcst/s:每秒钟接收的多播数据包
路径:/etc/hosts
1.通过jumpserver管理系统,通过tmp中转 2.通过ssh工具WinSCP(中文版可视化工具,本地是windows系统 目的是linux系统) 3. 本地是linux 目的是linux系统,则通过命令即可
1.JDK下载到本地windows,通过WinSCP上传到 /data 2.解压jdk
[root@iZbp14eey5dlgt99xx7qptZ data]# tar -zxvf jdk-8u251-linux-x64.tar.gz3.将解压后的文件移动到/usr/data/java
[root@iZbp14eey5dlgt99xx7qptZ data]# mv jdk1.8.0_251 /usr/local/java/jdk1.8.0_2514.设置环境变量
//打开配置文件 vim /etc/profile //添加环境变量 set java enviroment JAVA_HOME=/usr/local/java/jdk1.8.0_251 JRE_HOME=/usr/local/java/jdk1.8.0_251/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH PATH //使文件生效 source /etc/profile //测试 java -version查看一个服务的三种方式
//启动 [root@iZbp14eey5dlgt99xx7qptZ bin]# ps -ef|grep activemq root 1838 1 17 15:44 pts/0 00:00:06 /usr/local/java/jdk1.8.0_251/bin/java -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/usr/local/apache-activemq-5.16.0//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -Djava.io.tmpdir=/usr/local/apache-activemq-5.16.0//tmp -Dactivemq.classpath=/usr/local/apache-activemq-5.16.0//conf:/usr/local/apache-activemq-5.16.0//../lib/: -Dactivemq.home=/usr/local/apache-activemq-5.16.0/ -Dactivemq.base=/usr/local/apache-activemq-5.16.0/ -Dactivemq.conf=/usr/local/apache-activemq-5.16.0//conf -Dactivemq.data=/usr/local/apache-activemq-5.16.0//data -jar /usr/local/apache-activemq-5.16.0//bin/activemq.jar start root 1901 1447 0 15:44 pts/0 00:00:00 grep --color=auto activemq 61616端口被一个1838进程的java程序占用 [root@iZbp14eey5dlgt99xx7qptZ bin]# netstat -anp|grep 61616 tcp6 0 0 :::61616 :::* LISTEN 1838/java 61616端口被一个1838进程的java程序占用 [root@iZbp14eey5dlgt99xx7qptZ bin]# lsof -i:61616 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 1838 root 132u IPv6 39601 0t0 TCP *:61616 (LISTEN)可以通过查看进程,来看对应的文件目录