linux常用命令
mkdir指令:创建文件夹
$ mkdir [选项] DirName
命令中的[选项]一般有以下两种:
-m 用于对新建目录设置存取权限,也可以用 chmod 命令进行设置。
-p 需要时创建上层文件夹(或目录),如果文件夹(或目录)已经存在,则不视为错误
例一:在桌面下面创建以“demo”命名的文件夹。 使用以下命令即可。 mkdir 桌面/demo 例二:在桌面下面创建以“demo”命名的文件夹,并且给文件夹赋权限,权限为123。 mkdir 123 桌面/demo
rm指令:删除文件夹
$ rm [选项] DirName
命令中的[选项]一般有以下几种:
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
例一:删除所有C语言程序文档;删除前逐一询问确认。 rm -i *.c 例二:将 Finished 子目录及子目录中所有档案删除。 rm -r Finished
$ rm -rf !(keep) #删除keep文件之外的所有文件 $ rm -rf !(keep1 | keep2) #删除keep1和keep2文件之外的所有文件 $ ls | grep -v xx-file | xargs rm #删除xx-file文件之外的所有文件 $ find ./test/ | grep -v xx-file | xargs rm
删除文件内容
$ echo "" > filename //可删除大文件 $ truncate -s 0 filename //大文件有时候失败 $ ls -lh filename //查看文件大小
vi指令:创建文件
$ vi filename :打开或新建文件,并将光标置于第一行首 $ vi +n filename :打开文件,并将光标置于第n行首 $ vi + filename :打开文件,并将光标置于最后一行首 $ vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 $ vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename $ vi filename....filename :打开多个文件,依次进行编辑
ll指令:查看带有隐藏的文件
$ ll -al
cat,sed,tail指令:查看文件内容(查看日志)
$cat -n 日志文件| grep 'keyword' //根据字符串查询日志中关键词出现的位置 $sed -n '/起始时间/,/结束时间/p' 日志文件 //查看某段时间内的日志 $sed -n '/起始时间/,/结束时间/p' 日志文件| grep 'keyword' //查看某段时间内的关键字日志 $tail -n 10 日志文件 //查询日志尾部最后10行的日志; $tail -n +10 日志文件 //查询10行之后的所有日志; $head -n 10 日志文件 //查询日志文件中的头10行日志; $head -n -10 日志文件 //查询日志文件除了最后10行的其他所有日志;
$cat -n test.log |grep "地形" >xxx.txt //使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析
su指令:远程访问
su 用户名:远程访问
$ su xx
cp,mv指令:复制,移动文件
// 拷贝的指定目录并修改文件名
$ cp -r xxx.txt /opt/xxy.txt $ mv -r xxx.txt /opt/xxy.txt
ps指令
ps -u $USER x | grep xxx :-u $USER查看当前用户的进程
ps的参数: -e 显示所有进程。 -f 全格式。 -h 不显示标题。 -l 长格式。 -w 宽输出。 a 显示终端上的所有进程,包括其他用户的进程。 r 只显示正在运行的进程。 x 显示没有控制终端的进程。
[root@rhel ~]# id ab uid=515 (ab) gid=517(ab) 组=517(ab),518(ou) //用户ab的UID是515,主要组群是ab,主要组群的GID是517,用户归属于ab和ou组群
win系统查看硬件信息
cmd中wmic命令获取Win系统下硬件信息
wmic命令获取Win系统下硬件信息 1、查询网卡信息:wmic nicconfig get macaddress 2、查询cpu序列号:wmic cpu get processorid 3、查询主板序列号:wmic baseboard get serialnumber 4、查询BIOS序列号:wmic bios get serialnumber
查看CPU的统计信息:lscpu
查看CPU的详细信息:cat /proc/cpuinfo
查看CPU型号:cat /proc/cpuinfo |grep name |cut -f2 -d : |uniq -c
一、简介 uniq用于重复数据处理,使用前先sort排序。 二、命令格式 uniq [OPTION]... [INPUT [OUTPUT]] option: -c:在数据行前出现的次数 -d:只打印重复的行,重复的行只显示一次 -D:只打印重复的行,重复的行出现多少次就显示多少次 -f:忽略行首的几个字段 -i:忽略大小写 -s:忽略行首的几个字母 -u:只打印唯一的行 -w:比较不超过n个字母 三、示例 file="tmp/ut.txt" #相同数据行只显示一次 sort ${file} | uniq #相同数据行只显示一次,行首显示出现的次数 sort ${file} | uniq -c #忽略大小写判断,相同数据行只显示一次,行首显示出现的次数 sort ${file} | uniq -ic #只显示有重复的数据行,重复数据行只显示一次,行首显示出现的次数 sort ${file} | uniq -dc #只显示有重复的数据行,重复数据行显示所有的重复 sort ${file} | uniq -D #只显示不重复的数据行,行首显示出现的次数 sort ${file} | uniq -uc #忽略行首的9个字母后,对行剩下数据作为判断依据,相同数据行只显示一次,行首显示出现的次数 sort ${file} | uniq -cs9 #忽略行首的2个字段后,对行剩下数据作为判断依据,相同数据行只显示一次,行首显示出现的次数 sort ${file} | uniq -cf2
linux系统查看硬件信息
$ free -m # 查看内存使用情况
$ cat /proc/meminfo # 查看内存使用详细信息
$ lsblk # 查看硬盘和分区情况
$ fdisk -l # 查看硬盘和分区详细情况
$ lspci | grep -i ethernet # 查看网卡
$ lspci | grep -i vga # 查看显卡
$ uname -a # 查看内核版本
$ cat /etc/redhat-release # 查看系统版本
$ ip link # ip命令查看网卡MAC地址
$ cat /sys/class/net/eth0/address # 查看eth0的MAC地址
dmidecode需要root权限
$ dmidecode # 打印所有硬件信息 $ dmidecode -q # 打印所有硬件信息,比较简洁 $ dmidecode -h # 获取帮助 $ dmidecode | grep 'Product Name' # 以过滤的方式来查看指定的硬件信息 $ dmidecode --type bios # 查看BIOS相关的硬件信息 $ dmidecode --type system # 查看系统相关的硬件信息 $ dmidecode --type baseboard # 查看主板相关的硬件信息 $ dmidecode --type chassis # 查看机箱相关的硬件信息 $ dmidecode --type processor # 查看处理器相关的硬件信息 $ dmidecode --type memory # 查看内存相关的硬件信息
netstat指令:查看端口
# 查看全部端口占用情况 $ netstat -anp 或者 netstat -tln # 查看具体端口被哪个程序占用 $ lsof -i :8080 #查看已知端口占用情况 $ netstat -anp | grep 8080 或者 netstat -tln | grep 8080
df 命令:用于显示磁盘分区上的可使用的磁盘空间
# 以可读性高的结果展示磁盘分区上的可使用的磁盘空间 $ df -h
du指令:查看当前目录和子目录文件夹/文件大小情况
# 查看当前目录的总大小 $ du -sh # 查看当前目录所有子目录的大小 $ du -sh * # 查看当前目录和所有子目录大小,最后一行会显示当前目录的总大小,不包括隐藏文件 $ du -ach * # du -sh 目录路径 $ du -sh /usr
ls指令:列出当前工作目录下的所有文件/文件夹的名称
# 显示成字节大小 $ ls -l # 以KB、MB等为单位进行显示更加直观 $ ls -lh # 按照文件大小排序(由大到小) $ ls -lhS # 可将隐藏文件的大小显示出来 $ la -lh
find指令:查找某个文件的路径
$ sudo find / -name osg $ sudo find /usr -name osg $ sudo find /usr -name "*osg*"
nohup命令:后台执行程序
$ nohup java -jar xxx.jar >aaa.log &
nohup 即 no hang up 不挂断 ,关闭SSH客户端连接,程序不会中止运行,输出的内容重定向到指定的文件aaa.log
&代表在后台运行 ,ctrl+c
后程序也会继续运行
> 标准重定向符,允许我们创建一个 0KB 的空文件。它通常用于重定向一个命令的输出到一个新文件中。在没有命令的情况下使用重定向符号时,它会创建一个文件。
/dev/null 可以看作黑洞,等价于一个只写文件。所有写入它的内容都会永远丢失,尝试从它那儿读取内容则什么也读不到。也就是将所有产生的日志将被丢弃
2>&1 符号>&是一个整体代表将标准错误2重定向到标准输出1,如果是2>1的话,代表将标准错误输出到文件1,而不是重定向到标准输出流
lsblk指令:查看磁盘名称(硬盘和分区信息)
$ lsblk # 显示所有块设备信息
gnome-disks指令:查看硬盘使用情况的图形化界面。
$ gnome-disks # 打开硬盘使用情况的图形化界面
top指令:查看cpu使用情况
$ top
sar指令:查看cpu历史使用情况
$ sar
检查磁盘是否损坏
1.使用smartmontools工具来检查磁盘smart状态
$ smartctl -a /dev/sda (sda为磁盘设备名)
2.使用fsck命令来检查文件系统的完整性
$ fsck /dev/sda1 (sda1为文件系统所在分区)
3.使用badblocks命令来检查磁盘坏道
$ badblocks -v /dev/sda (sda为磁盘设备名)
4.查看所有可用的硬盘,包括硬盘名称、大小、文件系统类型
$ fdisk -l
5.查看特定硬盘分区,包括硬盘名称、大小、文件系统类型
$ fdisk -l /dev/sda (sda为硬盘名称)
jvm调优
调优原则
- GC的时间足够的小
- GC的次数足够的少
- 发生Full GC的周期足够的长
- 针对JVM堆的设置,一般可以通过-Xms -Xmx限定其最小、最大值,为了防止垃圾收集器在最小、最大之间收缩堆而产生额外的时间,我们通常把最大、最小设置为相同的值。
- 年轻代和年老代将根据默认的比例(1:2)分配堆内存,可以通过调整二者之间的比率NewRadio来调整二者之间的大小,也可以针对回收代,比如年轻代,通过 -XX:newSize -XX:MaxNewSize来设置其绝对大小。同样,为了防止年轻代的堆收缩,我们通常会把-XX:newSize -XX:MaxNewSize设置为同样大小。
- 年轻代和年老代设置多大才算合理? 如果应用存在大量的临时对象,应该选择更大的年轻代;如果存在相对较多的持久对象,年老代应该适当增大。Full GC尽量少,让年老代尽量缓存常用对象,JVM的默认比例1:2也是这个道理。通过观察应用一段时间,看其他在峰值时年老代会占多少内存,在不影响Full GC的前提下,根据实际情况加大年轻代,比如可以把比例控制在1:1。但应该给年老代至少预留1/3的增长空间。
查看参数
jps -l
查看进程编号jinfo -flag
具体参数 java进程编号jinfo -flags
具体参数
查看JVM出厂默认设置:java -XX:+PrintFlagsInitial
查看JVM修改更新的内容:java -XX:+PrintFlagsFinal -version
查看默认垃圾回收器:java -XX:+PrintCommandLineFlags -version
常用参数
-Xmx(-XX:MaxHeapSize):初始大小内存:初始化的值是物理内存的四分之一
-Xms(-XX:InitialHeapSize):最大分配内存:初始化的值是物理内存的六十四分之一
-Xss(-XX:ThreadStackSize):设置单个线程栈的大小,一般默认为512k~1024k
-Xmn:设置年轻代的大小
-XX:MetaspaceSize:设置元空间大小 元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间的区别在于:元空间不在虚拟机中,而是在本地内存中,默认情况下,元空间的大小仅受本地内存限制。
实战
-Xms 128m -Xmx4096m -Xss1024k -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC
解析:
- -Xms 128m:初始内存128M
- -Xmx4096m :最大堆内存4G
- -Xss1024k:初始栈大小1024K
- -XX:MetaspaceSize=512m:元空间512M
- -XX:+PrintCommandLineFlags:打印默认参数
- -XX:+PrintGCDetails :打印GC回收的细节
- -XX:+UseSerialGC:串行垃圾回收器
- -XX:+PrintGCDetails命令打印的
- -XX:SurvivorRatio:设置新生代中eden和S0/S1空间的比例。
- -XX:NewRatio:配置年轻代与老年代在堆结构的占比。
- -XX:MaxTenuringThreshold:设置垃圾的最大年龄,java8之后这个值最大只能设置为15,最低是0
默认新生区比例:-XX:SurvivorRatio=8,Eden:S0:S1=8:1:1;
- 假如:-XX:SurvivorRatio=4,Eden:S0:S1=4:1:1。SurvivorRatio的值就是设置eden去的比例占多少,S0和S1相同。
- 假如:-XX:NewRatio=2新生代占1,老年代2,年轻代占整个堆的1/3。
- 假如:-XX:NewRatio=4新生代占1,老年代占4,年轻带占整个堆的1/5。NewRatio的值就是设置老年代的占比,剩下的1给新生代。
查看进程
ps -ef|grep java
jsp
如果不指定hostid就默认为当前主机或服务器。
命令行参数选项说明如下:
-q 不输出类名、Jar名和传入main方法的参数
-m 输出传入main方法的参数
-l 输出main类或Jar的全限名
-v 输出传入JVM的参数
查看运行参数
jinfo -glags <pid>
jinfo -sysprops <pid>
Non-default VM flags: -XX:CICompilerCount=4 -XX:InitialHeapSize=266338304 -XX:MaxHeapSize=4229955584 -XX:MaxNewSize=1409810432 -XX:MinHeapDeltaByte s=524288 -XX:NewSize=88604672 -XX:Old 2 Size=177733632 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX: +UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+Us eParallelGC 3 Command line: -javaagent:D:\JavaSoft\ideaIU\lib\idea_rt.jar=62844:D:\Java Soft\ideaIU\bin -Dfile.encoding=UTF-8
查看内存使用情况
jmap -histo <pid> | head -20 查找当前进程堆中的对象信息,加上管道符后面的信息以后,代表查询对象数量最多的20个:
jmap -heap <pid>
查看堆栈信息
jstack <pid>
动态统计监控
jstat -gc <pid> 1000 10 每1000ms采集1次,共采集10次
查看某进程cpu使用情况
top -p <pid>
jvm调优常用参数
通用GC参数
-Xmn:年轻代大小 -Xms:堆初始大小 -Xmx:堆最大大小 -Xss:栈大小
-XX:+UseTlab:使用tlab,默认打开,涉及到对象分配问题
-XX:+PrintTlab:打印tlab使用情况
-XX:+TlabSize:设置Tlab大小
-XX:+DisabledExplictGC:java代码中的System.gc()不再生效,防止代码中误写,导致频繁触动GC,默认不起用。
-XX:+PrintGC(+PrintGCDetails/+PrintGCTimeStamps)打印GC信息(打印GC详细信息/打印GC执行时间)
-XX:+PrintHeapAtGC打印GC时的堆信息
-XX:+PrintGCApplicationConcurrentTime 打印应用程序的时间
-XX:+PrintGCApplicationStopedTime 打印应用程序暂停时间
-XX:+PrintReferenceGC 打印回收多少种引用类型的引用
-verboss:class 类加载详细过程
-XX:+PrintVMOptions 打印JVM运行参数
-XX:+PrintFlagsFinal(+PrintFlagsInitial) -version | grep 查找想要了解的命令,很重要
-X:loggc:/opt/gc/log/path 输出gc信息到文件
-XX:MaxTenuringThreshold 设置gc升到年龄,最大值为15
parallel常用参数
-XX:PreTenureSizeThreshold 多大的对象判定为大对象,直接晋升老年代
-XX:+ParallelGCThreads 用于并发垃圾回收的线程
-XX:+UseAdaptiveSizePolicy 自动选择各区比例
CMS常用参数
-XX:+UseConcMarkSweepGC 使用CMS垃圾回收器
-XX:parallelCMSThreads CMS线程数量
-XX:CMSInitiatingOccupancyFraction 占用多少比例的老年代时开始CMS回收,默认值68%,如果频繁发生serial old,适当调小该比例,降低FGC频率
-XX:+UseCMSCompactAtFullCollection 进行压缩整理
-XX:CMSFullGCBeforeCompaction 多少次FGC以后进行压缩整理
-XX:+CMSClassUnloadingEnabled 回收永久代
-XX:+CMSInitiatingPermOccupancyFraction 达到什么比例时进行永久代回收
GCTimeTatio 设置GC时间占用程序运行时间的百分比,该参数只能是尽量达到该百分比,不是肯定达到
-XX:MaxGCPauseMills GCt停顿时间,该参数也是尽量达到,而不是肯定达到
G1常用参数
-XX:+UseG1 使用G1垃圾回收器
-XX:MaxGCPauseMills GCt停顿时间,该参数也是尽量达到,G1会调整yong区的块数来达到这个值
-XX:+G1HeapRegionSize 分区大小,范围为1M~32M,必须是2的n次幂,size越大,GC回收间隔越大,但是GC所用时间越长
G1NewSizePercent 新生代所占最小比例,默认5%
G1MaxNewSizePercent 新生代所占最大比例,默认60%
GCTimeRatio GC时间比例,此值为建议值,G1会调整堆大小来尽量达到这个值
ConcGCThreads GC线程数量
InitiatingHeapOccupancyPercent 启动G1的堆空间占用比例