Linux系统:第十一章:常用命令

Linux命令:

查看java进程:ps -ef |grep java

查看实时日志:tail -f 文件名称

杀掉进程:kill -9 进程的PID

复制文件:cp 文件路径/文件名称 文件路径/文件名称

启动:service rabbitmq-server start

关闭:service rabbitmq-server stop

重启:service rabbitmq-server restart

查看所有的队列:rabbitmqctl list_queues

清除所有的队列:rabbitmqctl reset

查看用户:rabbitmqctl list_users

查看状态:rabbitmqctl status

whereis搜索redis服务执行文件:whereis redis-server

单个文件可以使用vi或vim编辑器打开日志文件,使用编辑器里的查找功能。在查看模式下,符号/后面跟关键字向下查找,符号?后面跟关键字向上查找,按n查找下一个,按N查找上一个

jar包运行:nohup java -Xms 128m -Xmx4096m -Xss1024k -XX:MetaspaceSize=512m -jar jar包名称 &

    1.nohup
    nohup: 不挂断的运行,注意并没有后台运行的功能.用nohup命令可以使命令永久的执行,和客户端没有任何关系.
    &: 后台运行
     
    nohup java -jar xxx.jar &   
    可以让jar包一直后台运行
    缺省的情况下会默认将信息输出到nohup.out文件中
     
    2.-server
    启动server版的jvm
     
    3.JVM的内存分配
    -Xms: 分配堆最小内存(初始堆大小),默认为物理内存的1/64,空余堆内存小于40%时,jvm就会增大堆内存大小直到xmx
    -Xmx: 分配堆最大内存,默认为物理内存的1/4,默认空余堆内存大于70%,jvm就会减小堆内存大小直到xms
    -Xmn: 年轻代大小,整个堆大小=年轻代大小+年老代大小+持久代大小,当增大年轻代大小时,就会减小年老代大小
        此值对系统性能影响较大,sun官方推荐为整个堆得3/8
    -XX:NewSize: 设置年轻代大小
    -XX:MaxNewSize: 年轻代最大值
    -XX:PermSize: 设置持久代初始值,默认为物理内存的1/64
    -XX:MaxPermSize: 设置持久代最大值,默认为物理内存的1/4
    -Xss: 每个线程的堆栈大小,jdk5.0后每个线程堆栈大小为1M,以前每个线程堆栈大小为256k,根据应用的线程所需内存
        大小进行调整.在相同物理内存下,减小该值能生成更多的线程,但是操作系统对一个进程的线程数一般限制在3000
        -5000左右. 一般小的应用可以设置为128k,大的建议设置为256k.
    -XX:ThreadStackSize: 线程堆大小,一般设置-Xss就可以了
    -XX:NewRatio: 年轻代与年老代的比值(除去持久代),-XX:NewRatio=4表示年轻代与年老代所占比值为1:4,Xms=Xmx并
        且设置了Xmn的情况下,该参数不需要进行设置
    -XX:SurvivorRatio: Eden区和Survivor区的大小比值, 设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个
        Survivor区占整个年轻代的1/10
    -XX:LargePageSizeInBytes: 内存页的大小不可设置过大,会影响Perm的大小,128m
    -XX:+UseFastAccessorMethods: 原始类型的快速优化
    -XX:+DisableExplicitGC: 关闭System.gc(), System.gc()用于调用垃圾收集器,在调用时,垃圾收集器将运行以回收
        未使用的内存空间,它将释放被丢弃对象占用的内存.一般分配内存后,可以不可虑内存管理.
    -XX:MaxTenuringThreshold: 垃圾最大年龄,年轻代的最大存活周期,超过阈值就会进入年老代
    -XX:+AggressiveOpts: 加快编译
    -XX:+UseBiasedLocking: 锁机制的性能改善
    -Xnoclassgc: 禁用垃圾回收
    -XX:SoftRefLRUPolicyMSPerMB: 每兆堆空闲空间中SoftRefrence的存活时间,判断软引用对象有多久时间没有被使用
        则被回收,默认是1s
    -XX:PretenureSizeThreshold: 对象超过多大事直接在旧生代分配,默认是0
    -XX:TLABWasteTargetPercent: TLAB占eden区的百分比,默认是1%
    -XX:+CollectGen0First: FullGC时是否先YGC,默认是false
    YGC: 对新生代堆进行gc ; FullGC: 全堆范围的gc,默认堆空间使用到达80%的时候会触发fgc.
     
    并行收集器相关参数:
    -XX:+UseParallelGC: Full GC采用parallel MSC,选择垃圾收集器为并行收集器,此配置仅对年轻代有效,即上述配置下,年轻代使用并行收集,
        年老代仍旧使用串行收集
    -XX:+UseParNewGC: 设置年轻代为并行收集,可与CMS收集同时使用,jdk5.0以后,JVM会根据系统配置自行设置,所以无需再设置此值
    -XX:ParallelGCThreads: 并行收集器的线程数,此值最好配置与处理器数目相等,同样适用于CMS
    -XX:+UseParallelOldGC: 年老代垃圾收集方式为并行收集(Parallel Compacting)
    -XX:MaxGCPauseMillis: 每次年轻代垃圾回收的最长时间(最大暂停时间),如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值.
    -XX:+UseAdaptiveSizePolicy: 自动选择年轻代区大小和相应的Survivor区比例,设置此选项后,并行收集器会自动选择年轻代区大小和相应的
        Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开.
    -XX:GCTimeRatio: 设置垃圾回收时间占程序运行时间的百分比,公式为1/(1+n)
    -XX:+ScavengeBeforeFullGC: Full GC前调用YGC,默认为true
    CMS相关参数:
    -XX:+UseConcMarkSweepGC: 使用CMS内存收集
    -XX:+AggressiveHeap:
    -XX:CMSFullGCsBeforeCompaction: 多少次后进行内存压缩,由于并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生"碎片",
        使得运行效率降低.此值设置运行多少次GC以后对内存空间进行压缩,整理.
    -XX:+CMSParallelRemarkEnabled: 降低标记停顿
    -XX:+UseCMSCompactAtFullCollection: 在FULL GC时候,对年老代的压缩,CMS是不会移动内存的, 因此, 这个非常容易产生碎片, 导致内存
        不够用,因此,内存的压缩这个时候就会被启用.增加这个参数是个好习惯.可能会影响性能,但是可以消除碎片
    -XX:+UseCMSInitiatingOccupancyOnly: 使用手动定义初始化定义开始CMS收集,禁止hostspot自行触发CMS GC
    -XX:CMSInitiatingOccupancyFraction=70: 使用cms作为垃圾回收,使用70%后开始CMS收集,默认是92
    -XX:CMSInitiatingPermOccupancyFraction: 设置Perm Gen使用到达多少比率时触发,默认是92
    -XX:+CMSIncrementalMode: 设置为增量模式,用于单CPU情况
    -XX:+CMSClassUnloadingEnabled:
    辅助信息:
    -XX:+PrintGC:
    -XX:+PrintGCDetails:
    -XX:+PrintGCTimeStamps:
    -XX:+PrintGC:PrintGCTimeStamps:
    -XX:+PrintGCApplicationStoppedTime: 打印垃圾回收期间程序暂停的时间.可与上面混合使用
    -XX:+PrintGCApplicationConcurrentTime: 打印每次垃圾回收前,程序未中断的执行时间.可与上面混合使用
    -XX:+PrintHeapAtGC: 打印GC前后的详细堆栈信息
    -Xloggc:filename: 把相关日志信息记录到文件以便分析.
    -XX:+PrintClassHistogram:
    -XX:+PrintTLAB: 查看TLAB空间的使用情况
    XX:+PrintTenuringDistribution: 查看每次minor GC后新的存活周期的阈值
     
    -verbose:gc和-XX:+PrintGC是一样的
    -Duser.timezone: 设置用户所在时区
    -Djava.awt.headless=true: 开启headless模式,可针对特殊情况的一些数据图片的处理显示等
     
    标准输入  0  从键盘获得输入(默认)
    标准输出  1     输出到屏幕(即控制台)
    错误输出  2  输出到屏幕(即控制台)
     
    一般执行shell命令,都默认是从键盘获得输入,并且将结果输出到控制台上.但是我们可以通过更改文件描述符默认的指向,从而实现输入输出的
    重定向.比如将1指向文件,那么标准的输出就会输出到文件中.
     
    输出重定向:
    command > filename    把标准输出重定向到新文件中
    command 1> filename    同上
    command >> filename    把标准输出追加到文件中
    command 1>> filename 同上
    command 2> filename    把错误输出重定向到新文件中
    command 2>> filename    把标准输出追加到文件中
    使用>重定向时,如果文件存在,则先删除旧文件,再新建文件;>>则直接添加到原文件中
     
    输入重定向:
    command < filename    以filename文件作为标准输入
    command 0<filename    同上
    command <<delimiter    从标准输入中读入,直到遇到delimiter分隔符
     
    高级用法:
    重定向绑定:
    1.>/dev/null
    这条命令的作用是将标准输出1重定向到/dev/null中./dev/null代表linux的空设备文件,所有往这个文件写入的内容都会丢失,
    那么执行了>/dev/null之后,标准输出就会不再存在,没有任何能够找出输出的内容
    2.2>&1
    采用&可以将两个输出绑定到一起.就是将错误输出和标准输出输出到同一个地方.
    3.>/dev/null 2>&1
    就是将标准输出重定向到空设备文件(丢弃标准输出),错误输出绑定到标准输出中了,所以错误输出也被丢弃了,既不会输出到
    屏幕,也不会输出到文件中
    4.>/dev/null 2>&1 和 2>&1 >/dev/null
    linux从左到右执行,所有2>&1 >/dev/null 的执行为:
        1)2>&1,错误输出绑定到标准输出中,此时标准输出是默认值,即输出到屏幕上,所以错误输出到屏幕上了
        2)>/dev/null,将标准输出1重定向到/dev/null中,标准输出被丢弃
    5.为什么要绑定2>&1呢?不使用2>out 1>out重复输出两次?
    重复输出两次,标准输出和错误输出会抢占out文件的管道,可能导致信息写入的错误,而且out文件被打开两次,影响IO性能
     
    nohup java -jar xxxx.jar >/dev/null 2>&1 &
    不让一些执行信息输出到控制台
     
    nohup java -jar -server -Xms512M -Xmx512M -Xss256k -XX:NewSize=128M -XX:MaxNewSize=128M
     -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC
     -XX:+CMSClassUnloadingEnabled -XX:MaxTenuringThreshold=8 -XX:+CMSParallelRemarkEnabled
     -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:MetaspaceSize=128m
     -XX:MaxMetaspaceSize=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly
     -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintGCDetails
     -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc -Xloggc:gcc.log -Duser.timezone=Asia/Shanghai
     -Djava.awt.headless=true xxx.jar >/dev/null 2>&1 &

性能排查:https://blog.csdn.net/java_wxid/article/details/107005583

测试url是否可用:curl -i "url"