Home

Awesome

 __    __  _____            _
/ / /\ \ \/__   \___   ___ | |
\ \/  \/ /  / /\/ _ \ / _ \| |
 \  /\  /  / / | (_) | (_) | |
  \/  \/   \/   \___/ \___/|_|

介绍

系统需求

安装

curl -s "https://raw.githubusercontent.com/qdaxb/wtool/master/doc/get.sh" |bash -s 

卸载

wtool uninstall

使用

系统命令

显示系统命令列表

列出所有可用命令

更新wtool

添加自定义模块,group/project对应github中的组名/项目名.

删除自定义模块,group/project对应github中的组名/项目名.

通用命令

批量执行mc命令

批量执行redis命令(需要redis-cli)

使用nc发送文件(默认8888端口),接收方可以通过浏览器下载

编码字符串,可选的type为url(default) | utf8 | html | base64。需要安装php。

解码字符串,可选的type为url(default) | utf8 | html | base64。需要安装php。

计算数字的10进制、16进制及2进制文本,输入参数默认为10进制,可选16进制(0x)及二进制(b)。

查询当前服务器各个进程占用swap的情况。

-s 表示对swap占用量进行排序(升序) -r 表示对swap占用量进行排序(降序),使用-r的前提是-s参数开启。 -g grep命令的封装,用于查找特定类型的进程。比如我想查找带有java的进程,可以使用sudo wtool swap -g java

注意,使用该功能需要sudo权限

java命令

使用housemd对java程序进行运行时跟踪,支持的操作有:

  • 查看加载类
  • 跟踪方法
  • 查看环境变量
  • 查看对象属性值

详细信息请参考housemd说明文档

查找jar包间冲突的类

在jar包中查找类名

在jar包中查找文本,可查找常量字符串、类引用。

查找当前工程中是否存在循环引用(目前仅支持maven工程,默认为当前路径)

执行jvm debug工具,包含对java栈、堆、线程、gc等状态的查看,支持的功能有:

<pre> ========线程相关======= 1 : 查看占用cpu最高的线程情况 2 : 打印所有线程 3 : 打印线程数 4 : 按线程状态统计线程数 ========GC相关======= 5 : 垃圾收集统计(包含原因)可以指定间隔时间及执行次数,默认10秒 6 : 显示堆中各代的空间1000 5 7 : 垃圾收集统计。可以指定间隔时间及执行次数,默认10秒 8 : 打印perm区内存情况*会使程序暂停响应* 9 : 查看directbuffer情况 ========堆对象相关======= 10 : dump heap到文件*会使程序暂停响应*默认保存到`pwd`/dump.bin,可指定其它路径 11 : 触发full gc。*会使程序暂停响应* 12 : 打印jvm heap统计*会使程序暂停响应* 13 : 打印jvm heap中top20的对象。*会使程序暂停响应*参数:1:按实例数量排序,2:按内存占用排序,默认为1 14 : 触发full gc后打印jvm heap中top20的对象。*会使程序暂停响应*参数:1:按实例数量排序,2:按内存占用排序,默认为1 15 : 输出所有类装载器在perm里产生的对象。可以指定间隔时间及执行次数 ========其它======= 16 : 打印finalzer队列情况 17 : 显示classloader统计 18 : 显示jit编译统计 19 : 死锁检测 20 : 等待X秒,默认为1 q : exit </pre>

进入jvm工具后可以输入序号执行对应命令
可以一次执行多个命令,用分号";"分隔,如:1;3;4;5;6
每个命令可以带参数,用冒号":"分隔,同一命令的参数之间用逗号分隔,如:
Enter command queue:1;5:1000,100;10:/data1/output.bin
更多介绍请参考:https://github.com/qdaxb/wtool_java

参与开发

目录说明

.
├── common        
    └── tools    # 通用工具目录
└── custom       # 自定义模块目录

如何增加原生命令

  1. 在wtool根目录中创建文件夹,如:mygroup/tools

  2. 在tools文件夹中新建文件,文件名与命令名相同,如:mycommand,并对mycommand文件增加执行权限。

  3. 实现命令,每个命令是一个独立的shell脚本,如:

#!/bin/bash

this is desp

echo "hello world"


4. 测试命令是否可用

    ```
$ wtool list                                                                                                                                                  ~/dev/wtool/mygroup/tools
Available commands:
mygroup:
mycommand      : this is desp
$ wtool mycomomand
hello world
  1. 提交PR:)

如何开发自己的模块

  1. 在github上创建工程,如https://github.com/qdaxb/demo_module

  2. 在工程根目录中创建文件夹tools

  3. 在tools文件夹中新建文件,文件名与命令名相同,如:mycommand,并对mycommand文件增加执行权限。

  4. 实现命令,每个命令是一个独立的shell脚本,如:

#!/bin/bash

this is desp

echo "hello world"


4. 使用方通过addmodule获取模块

   ``` $ wtool addmodule qdaxb/demo_module```
   
5. enjoy

    ```
$ wtool list                                                                                                                                                  
Available commands:
qdaxb_demo_module:
mycommand      : this is desp
$ wtool mycomomand
hello world