常用linux技巧

查看线上日志环境配置

ssh我用的是iTern工具。每次登陆机器都要执行一次下面的命令

ssh [email protected]

对于我这种记性不好的,只能每次去查看ip,这样做很烦。我们可以创建一些快捷方式,以后每次直接点击打开就好,不用再记ip,输入命令了。 打开iTern -> Preferences -> Profiles 界面,左下角点击“+”号,创建一个session快捷方式 login1

这样每次打开,只需要点击new下面login1这个快捷方式,它就会自动执行登陆命令,我们只需要输入密码就可以了,再也不用记住ip了。 如果碰到像跳板机那种,一段时间不操作就退出的,我们还需要在另外一个地方设置一下。 sessionidle

如果是查看线上日志,我们通过这种方式登陆了跳板机,但是还是需要再登陆一次线上机器。但是,每次想要查看线上某台机器的日志,得要去查找线上机器的ip,是不是很麻烦?其实,在跳板机器上,每个人都有自己的用户目录,在这里你可以记录下你常登陆的线上机器的ip。比如我常登陆的线上应用有这些:

[[email protected] ~]$ ls
gembone.sh  minerals.sh  tpolps.sh  train.sh

我把这些会经常登陆的机器的ip放在这里,下次只要登陆上跳板机器就能看到这些应用的线上机器,不用再去psp上查看了。train.sh脚本的内容如下:

#! /bin/bash
echo "minerals-pub 10.176.56.34 "
echo "minerals 10.176.56.33 "
echo "minerals 10.176.56.35 "
echo "please input line number(1,2,3):"
read num
if [ $num -eq 1 ] ; then
ssh 10.176.56.34
elif [ $num -eq 2 ] ; then
ssh 10.176.56.33
elif [ $num -eq 3 ] ; then
ssh 10.176.56.35
fi

常用查看JVM信息命令

jps -v

查看当前用户已经启动的java进程的信息。

[gaea@v125057197 bin]$ jps -v
6674 start.jar -DappName=train -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=196m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCompressedOops -Ddatabase.codeset=ISO-8859-1 -Ddatabase.logging=false -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dapplication.codeset=GBK -Djava.util.logging.config.file=/home/gaea/train/conf/general/logging.properties -Dcom.sun.management.config.file=/home/gaea/train/conf/jmx/jmx_monitor_management.properties -Dorg.eclipse.jetty.util.URI.charset=GBK -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4078,server=y,suspend=n -Dcom.taobao.pandora.tmp_path=/home/gaea/train/logs/pandora -Dhsf.configuration.dir=/home/gaea/train/.default/tmp -DHSF.LOG.PATH=/home/gaea/train/logs/hsf -Dproject.name=train -Djetty.logs=/home/gaea/train//logs -Djetty.home=/usr/alibaba/jetty -Djava.io.tmpdir=/home/gaea/train/.default/t
29949 Jps -Dapplication.home=/opt/taobao/install/jdk-1.7.0_51 -Xms8m

jstack pid

打印出进程的堆栈信息

jmap

打印出某个进程内存占用情况。

[gaea@v125057197 bin]$ jmap  -heap 6674
Attaching to process ID 6674, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.45-b08-internal

using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 1073741824 (1024.0MB)
   NewSize          = 174456832 (166.375MB)
   MaxNewSize       = 174456832 (166.375MB)
   OldSize          = 348913664 (332.75MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 134217728 (128.0MB)
   MaxPermSize      = 205520896 (196.0MB)
   G1HeapRegionSize = 0 (0.0MB)

Heap Usage:
New Generation (Eden + 1 Survivor Space):
   capacity = 157024256 (149.75MB)
   used     = 70410920 (67.14908599853516MB)
   free     = 86613336 (82.60091400146484MB)
   44.840791985666215% used
Eden Space:
   capacity = 139591680 (133.125MB)
   used     = 69549448 (66.32752227783203MB)
   free     = 70042232 (66.79747772216797MB)
   49.82349091292547% used
From Space:
   capacity = 17432576 (16.625MB)
   used     = 861472 (0.821563720703125MB)
   free     = 16571104 (15.803436279296875MB)
   4.941736665883458% used
To Space:
   capacity = 17432576 (16.625MB)
   used     = 0 (0.0MB)
   free     = 17432576 (16.625MB)
   0.0% used
concurrent mark-sweep generation:
   capacity = 899284992 (857.625MB)
   used     = 90656392 (86.45667266845703MB)
   free     = 808628600 (771.168327331543MB)
   10.080941281848947% used
Perm Generation:
   capacity = 134217728 (128.0MB)
   used     = 82401568 (78.58425903320312MB)
   free     = 51816160 (49.415740966796875MB)
   61.39395236968994% used

35108 interned Strings occupying 3394024 bytes.

jstat

查看虚拟机垃圾回收的情况

[gaea@v125057197 bin]$ jstat -gcutil 6674 1000
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
  0.00   4.94  72.36  10.08  61.39    535    6.858     0    0.000    6.858
  0.00   4.94  72.36  10.08  61.39    535    6.858     0    0.000    6.858
  0.00   4.94  72.36  10.08  61.39    535    6.858     0    0.000    6.858
  0.00   4.94  72.36  10.08  61.39    535    6.858     0    0.000    6.858
  0.00   4.94  72.36  10.08  61.39    535    6.858     0    0.000    6.858
  0.00   4.94  72.36  10.08  61.39    535    6.858     0    0.000    6.858
  0.00   4.94  72.36  10.08  61.39    535    6.858     0    0.000    6.858

查看网络命令

netstat

查看端口4078的链接情况

[gaea@v125057197 bin]$ netstat -nalp | grep 4078
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:4078                0.0.0.0:*                   LISTEN      6674/java

一些常用的jvm查看命令见http://blog.csdn.net/fenglibing/article/details/6411940