Windows使用NSSM将任意exe封装为服务

介绍

NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。它的特点如下:

  1. 支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
  2. 安装简单,修改方便
  3. 可以重定向输出(并且支持Rotation)
  4. 可以自动守护封装了的服务,程序挂掉了后可以自动重启
  5. 可以自定义环境变量

内网穿透之n2n-点对网

背景

n2n v+p+n 其实与 pptp v+p+n 有类似的一面,都是一种点对点的局域网,所不同的是,n2n 可以建立点与点之间的直连,而 pptp 局域网内通讯的全部流量都必须走中心节点。pptp可以实现点对忘的连接,n2n应该也可以实现。

Windows远程桌面(mstsc)不能复制粘贴的解决办法

背景

原来通过mstsc远程连接Windows能够直接在本地和服务器之间复制、粘贴一些文字和文件,最近突然无法直接复制粘贴了,只能通过远程映射的本地磁盘方式交换文件;

已经确认远程桌面连接选项“本地资源-》本地设备和资源-》剪贴板”中勾选了剪贴板。

Tomcat8启动报there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache

当用tomcat8启动工程的时候,日志报错

09-Dec-2016 10:57:49.150 WARNING [localhost-startStop-1] org.apache.catalina.webresources.Cache.getResource Unable to add the resource at [/WEB-INF/classes/struts/PersonnelActio
n.xml] to the cache because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache
09-Dec-2016 10:57:51.729 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1107)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1841)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

解决jenkins自动杀掉衍生进程

背景

今天用jenkins来部署tomcat工程,没有使用tomcat-deploy插件,直接写了个shell脚本,用脚本来停止、换包、启动tomcat,但是当jenkins Pipeline job执行完成后,发现后台tomcat进程没有了;