月度归档:2012年12月

logback MDC 使用

今天想在 log 里加上当前机器的 ip,找了一些文档,logback 支持 MDC(Mapped Diagnostic Contexts),可以很容易的把 ip 放到 log 中。

方法: 
1. 先在代码中加上一行 MDC.put(“ip”, InetAddress.getLocalHost().getHostAddress())
2. 然后在 logback 的 pattern 中加上 %X{ip} 即可

在 linux 下执行 windows 的应用程序

1. 建立 winexe 环境,build winexe 并不麻烦,只不过官方文档比较少,下载到 source 之后,也不知道要如何 build。后来找到一个文档,介绍了过程
cd winexe-1.00/source4
./autogen.sh
./configure
make
./bin/winexe -U “<user>%<password>” //<windows system> cmd.exe
2. 如何远程执行,命令比较很简单,但又是环境问题,我们在 windows 下面建立了一个 administrators 组的用户,但无法执行,后来打开了 administrator 这个用户,终于命令可以执行了。
我们的脚本有两个步骤,1. 杀掉旧进程,2. 启动新的进程,如下:
    winexe -U “administrator%admin” //172.16.107.243 “taskkill /F /T /im java.exe”
    cat < /dev/null | winexe -U “administrator%admin” //172.16.107.243 “java -jar c:\agent\job-agent.jar” >> /home/glodon/logs/agent243.log 2>&1 &
启动新进程的时候,遇到了非常麻烦的事情,只能前台执行,nohup , & 这些完全不灵,如果 nohup,就会报错,后来得到了一个方法,cat < /dev/null | winexe 解决了这个问题。
3. jenkins 执行,jenkins 使用 Post Shell Plugin 来调用这个脚本,调用的时候一定要 nohup start.sh > /dev/null &,否则在执行完之后,会发个 sign,会把进程结束掉。
注意,还必须要 > /dev/null,否则就会出错,实在搞不明白原因。
弄好了这个,以后就方便了,心情也挺好。