gpm

module
v1.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2021 License: MIT

README

gpm 文档

什么是 gpm

gpm (golang process manager) Go 语言版本的进程管理工具。分为 gpmd (管理进程) 和 gpm (客户端工具)。 得益于 Go 优秀的跨平台功能,gpm 目前支持 mac、linux、windows 三种平台。

gpm 支持的功能

gpm 支持以下功能,且三个平台一致:

  • 服务的创建、安装、删除、启动、停止、重启、升级、版本回滚
  • 服务日志的管理: 监听、切分、过期清理
  • ftp 功能: 查看远程目录结构、上传下载文件、远程执行命令

使用 gpm

gpm 命令详情如下:

NAME:
   gpm - package manage tools

USAGE:
   gpm [global options] command [command options] [arguments...]

VERSION:
   v1.1.2

AUTHOR:
   lack <598223084@qq.com>

COMMANDS:
   deploy    deploy gpmd and gpm
   health    confirm gpmd status
   info      get the information of gpmd
   run       run gpmd process
   shutdown  stop gpmd process
   tar       create a package for Install subcommand
   update    update gpm and gpmd
   help, h   Shows a list of commands or help for one command
   bash:
     exec      execute command
     ls        list remote directory
     pull      pull file from service
     push      push files
     terminal  start a terminal
     version   list service history versions
   service:
     create    create a service
     delete    delete a service
     edit      update a service parameters
     get       get service by name
     install   install a service
     list      list all local services
     reboot    reboot a service
     rollback  reboot a service
     start     start a service
     stop      stop a service
     tail      tail service logs
     upgrade   upgrade a service

GLOBAL OPTIONS:
   --dial-timeout int64      specify dial timeout for call option (default: 30s) [$GPM_DIAL_TIMEOUT]
   --host string, -H string  the ip address of gpmd (default: "127.0.0.1:7700") [$GPM_HOST]
   --request-timeout int64   specify request timeout for call option (default: 30s) [$GPM_REQUEST_TIMEOUT]
   --help, -h                show help (default: false)
   --version, -v             print the version (default: false)
安装 gpm

现在相应操作系统版本的 gpm 。 解压后执行命令:

$ ./gpm deploy
install gpm v1.1.2 successfully!
install gpm successfully!

注:linux,unix 下在 /usr/local/sbin/ 创建软链接。获得 gpmgpmd 命令。

gpmd 相关服务命令
启动 gpmd
$ gpm run --args '--server-address=0.0.0.0:7700' --args '--enable-log'
start gpmd successfully!
停止 gpmd
$ gpm shutdown
gpmd pid=31048
shutdown gpmd successfully!
查看 gpmd 信息
$ gpm info -o wide
   PROPERTY  |           VALUE
-------------+----------------------------
  Pid        | # 31514
  Version    | v1.1.2-a82f75c-1628482913
  OS         | linux
  Arch       | amd64
  Go version | go1.16.5
  CPU        | 15.16%
  Memory     | 49.23 MB/0.6%
  UpTime     | 35s

支持三种格式的输出 -o wide|json|yaml

检测 gpmd 状态
$ gpm health
OK
gpmd 升级

下载不同版本的 gpm 包,使用如下命令升级:

$ ./linux/gpm update

远程升级则需要如下命令:

$ ./linux/gpm --host 192.168.1.10:7700 --package ./gpm

注: --package 选项指定新版本的二进制包,这种方式可以升级远程机器上不同操作系统下的 gpm。

服务操作
远程安装命令

gpm install 子命令从本地上传 tar.gz 格式的包到远程机器,并安装服务。该格式的包可以使用 gpm tar 子命令创建。 创建一个 *.tar.gz 包:

$ gpm tar --name /tmp/test.tar.gz --target /opt/test/pp/bin
starting tar /tmp/test.tar.gz
compress /opt/test/pp/bin
compress /opt/test/pp/bin/test
tar /tmp/test.tar.gz successfully

安装服务

$ gpm --host 192.168.1.10:7700 install --package /tmp/test.tar.gz --name test --dir /opt/test --bin /opt/test/bin/test --auto-restart --version v1.0.0
upload [/tmp/test.tar.gz] 100% |████████████████████████████████████████| (14.593 MB/s)
install service test successfully
查看所有服务
$ gpm list
+------+-----------+-----+------+------------+--------+-----------------------+
| NAME |   USER    | PID | CPU  |   MEMORY   | STATUS |        UPTIME         |
+------+-----------+-----+------+------------+--------+-----------------------+
| test | root:root |   0 | 0.0% | 0.0 B/0.0% | init   | 452357h5m46.15905688s |
+------+-----------+-----+------+------------+--------+-----------------------+

Total: 1
查看服务详细信息
$ gpm get --name test
      PROPERTY      |             VALUE
--------------------+--------------------------------
  Name              | test
  Bin               | /opt/test/bin/test
  Args              |
  Pid               | # 32590
  Dir               | /opt/test
  env               |
  User              | user=root, group=root
  Version           | v1.0.0
  AutoRestart       | True
  CPU               | 0.88%
  Memory            | 7.05 MB/0.1%
  log expire        | 30 days
  log chunk         | 50.00 MB
  CreationTimestamp | 2021-08-09 13:05:39 +0800 CST
  UpdateTimestamp   | 2021-08-09 13:32:24 +0800 CST
  StartTimestamp    | 2021-08-09 13:32:24 +0800 CST
  Status            | running

支持三种格式的输出 -o wide|json|yaml

启动|停止|重启服务
$ gpm start --name test
$ gpm stop --name test
$ gpm reboot --name test
创建服务

创建服务和安装服务类似,但是服务相关的文件在 gpmd 主机上已存在

$ gpm create --name gtest --dir /opt/test --bin /opt/test/bin/test --auto-restart --version v1.0.0
upload [/tmp/test.tar.gz] 100% |████████████████████████████████████████| (14.593 MB/s)
service gtest init
升级服务
$ gpm upgrade --name test --package /tmp/test.tar.gz --version v2.0.0
upload [/tmp/test.tar.gz] 100% |████████████████████████████████████████| (4.448 MB/s)
upgrade service test v1.2.8 -> v2.0.0
查看服务的历史版本
$ gpm version --name test
+------+---------+-------------------------------+
| NAME | VERSION |             TIME              |
+------+---------+-------------------------------+
| test | v1.0.0  | 2021-08-09 22:12:08 +0800 CST |
| test | v1.2.3  | 2021-08-09 22:12:36 +0800 CST |
| test | v1.2.4  | 2021-08-09 22:15:06 +0800 CST |
| test | v1.2.5  | 2021-08-09 22:15:59 +0800 CST |
| test | v1.2.7  | 2021-08-09 22:19:38 +0800 CST |
| test | v1.2.8  | 2021-08-09 22:20:30 +0800 CST |
| test | v2.0.0  | 2021-08-09 23:05:54 +0800 CST |
+------+---------+-------------------------------+
版本回滚
$ gpm rollback --name test --revision v1.2.8
rollback test v2.0.0 -> v1.2.8
修改服务参数
$ gpm edit --name test --env "a=b"
edit service 'test' successfully!
$ gpm edit --help
...
OPTIONS:
   --name string, -N string    specify the name for service
   --bin string, -B string     specify the bin for service
   --args strings, -A strings  specify the args for service
   --dir string, -D string     specify the root directory for service
   --env strings, -E strings   specify the env for service
   --user string               specify the user for service
   --group string              specify the group for service
   --log-expire int            specify the expire for service log (default: 0)
   --log-max-size int64        specify the max size for service log (default: 0)
   --auto-restart int          Whether auto restart service when it crashing (1,-1) (default: 1)
   --help, -h                  show help (default: false)
查看服务日志
$ gpm tail --name test
2021-08-09 15:18:19  file=vine/service.go:199 level=info Starting [service] go.vine.helloworld
2021-08-09 15:18:19  file=vine/service.go:200 level=info service [version] v1.0.0
2021-08-09 15:18:19  file=grpc/grpc.go:919 level=info Server [grpc] Listening on [::]:57078
2021-08-09 15:18:19  file=grpc/grpc.go:760 level=info Registry [mdns] Registering node: go.vine.helloworld-dd357c33-8cd4-4911-9155-a152c68f46c6
2021-08-09 15:18:19  file=mdns/mdns_registry.go:266 level=info [mdns] registry create new service with ip: 192.168.3.111 for: 192.168.3.111

添加 -f 选项可以监听服务的日志变化

删除服务
$ gpm delete --name test

注: 删除服务的同时也删除对应的日志,软件包和版本信息

其他命令
查看远程文件系统信息

gpm ls 功能类似 linux 下 ls 命令,可以查看文件文件系统指定目录的信息

$ gpm ls --path /tmp/san/
+--------+------------+---------+-------------------------------+
|  NAME  |    MODE    |  SIZE   |            MODTIME            |
+--------+------------+---------+-------------------------------+
| ca.pem | -rw-r--r-- | 1.18 KB | 2021-07-17 17:26:26 +0800 CST |
+--------+------------+---------+-------------------------------+
执行远程命令
$ go run cmd/gpm/main.go --host 192.168.3.111:7700 exec --cmd "ls" --A "/tmp/san"
ca.pem

支持的参数:

OPTIONS:
   --cmd string, -C string     specify the command for exec
   --args strings, -A strings  specify the args for exec
   --dir string                specify the directory path for exec
   --env strings, -E strings   specify the env for exec
   --user string               specify the user for exec
   --group string              specify the group for exec
   --help, -h                  show help (default: false)
上传文件
$ gpm --host 192.168.3.111:7700 push --src /tmp/1.txt --dst /tmp/1.txt
 100% |████████████████████████████████████████| (1.712 kB/s)
下载文件
$ gpm pull --src /tmp/1.txt --dst /tmp/11.txt
download [      /tmp/1.txt] [total:  1.18 KB] 100% |████████████████████████████████████████| (1.612 MB/s)

Directories

Path Synopsis
cmd
gpm
pkg
api
dao
runtime
Code generated by vine.
Code generated by vine.
proto

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL