diff --git a/mayfly_go_web/src/components/dynamic-form/DynamicForm.vue b/mayfly_go_web/src/components/dynamic-form/DynamicForm.vue
index 382df614..76c382a6 100755
--- a/mayfly_go_web/src/components/dynamic-form/DynamicForm.vue
+++ b/mayfly_go_web/src/components/dynamic-form/DynamicForm.vue
@@ -51,8 +51,8 @@
- 重 置
- 保 存
+ 重 置
+ 保 存
diff --git a/mayfly_go_web/src/components/dynamic-form/DynamicFormDialog.vue b/mayfly_go_web/src/components/dynamic-form/DynamicFormDialog.vue
index 5c48e29c..42b50130 100644
--- a/mayfly_go_web/src/components/dynamic-form/DynamicFormDialog.vue
+++ b/mayfly_go_web/src/components/dynamic-form/DynamicFormDialog.vue
@@ -4,8 +4,8 @@
- 保 存
- 取 消
+ 保 存
+ 取 消
diff --git a/mayfly_go_web/src/views/layout/navBars/breadcrumb/setings.vue b/mayfly_go_web/src/views/layout/navBars/breadcrumb/setings.vue
index 4d77256a..982a04ac 100644
--- a/mayfly_go_web/src/views/layout/navBars/breadcrumb/setings.vue
+++ b/mayfly_go_web/src/views/layout/navBars/breadcrumb/setings.vue
@@ -152,7 +152,7 @@
:min="0"
:max="9999"
@change="setLocalThemeConfig"
- size="mini"
+ size="small"
style="width: 90px"
>
@@ -236,7 +236,7 @@
@@ -251,7 +251,7 @@
@@ -268,7 +268,7 @@
@@ -284,7 +284,7 @@
diff --git a/mayfly_go_web/src/views/ops/machine/FileManage.vue b/mayfly_go_web/src/views/ops/machine/FileManage.vue
index 6461bb66..e226c413 100755
--- a/mayfly_go_web/src/views/ops/machine/FileManage.vue
+++ b/mayfly_go_web/src/views/ops/machine/FileManage.vue
@@ -171,7 +171,6 @@ import { codemirror } from '@/components/codemirror';
import { getSession } from '@/common/utils/storage';
import enums from './enums';
import config from '@/common/config';
-import SvgIcon from '@/components/svgIcon/index.vue';
export default defineComponent({
name: 'FileManage',
diff --git a/mayfly_go_web/src/views/ops/machine/MachineEdit.vue b/mayfly_go_web/src/views/ops/machine/MachineEdit.vue
index 1de00a3e..3c7bf3f9 100644
--- a/mayfly_go_web/src/views/ops/machine/MachineEdit.vue
+++ b/mayfly_go_web/src/views/ops/machine/MachineEdit.vue
@@ -32,8 +32,8 @@
diff --git a/mayfly_go_web/src/views/ops/machine/MachineList.vue b/mayfly_go_web/src/views/ops/machine/MachineList.vue
index eecf2173..a0213409 100644
--- a/mayfly_go_web/src/views/ops/machine/MachineList.vue
+++ b/mayfly_go_web/src/views/ops/machine/MachineList.vue
@@ -53,17 +53,12 @@
{{ $filters.dateFormat(scope.row.createTime) }}
-
-
+
脚本
终端
+ 进程
关闭连接
@@ -91,6 +86,8 @@
-->
+
+
@@ -107,11 +104,13 @@ import { projectApi } from '../project/api.ts';
import ServiceManage from './ServiceManage.vue';
import FileManage from './FileManage.vue';
import MachineEdit from './MachineEdit.vue';
+import ProcessList from './ProcessList.vue';
export default defineComponent({
name: 'MachineList',
components: {
ServiceManage,
+ ProcessList,
FileManage,
MachineEdit,
},
@@ -142,6 +141,10 @@ export default defineComponent({
machineId: 0,
title: '',
},
+ processDialog: {
+ visible: false,
+ machineId: 0,
+ },
fileDialog: {
visible: false,
machineId: 0,
@@ -256,6 +259,11 @@ export default defineComponent({
state.data = res;
};
+ const showProcess = (row: any) => {
+ state.processDialog.machineId = row.id;
+ state.processDialog.visible = true;
+ };
+
return {
...toRefs(state),
choose,
@@ -266,6 +274,7 @@ export default defineComponent({
deleteMachine,
closeCli,
serviceManager,
+ showProcess,
submitSuccess,
fileManage,
search,
diff --git a/mayfly_go_web/src/views/ops/machine/ProcessList.vue b/mayfly_go_web/src/views/ops/machine/ProcessList.vue
new file mode 100644
index 00000000..db0c2970
--- /dev/null
+++ b/mayfly_go_web/src/views/ops/machine/ProcessList.vue
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 刷新
+
+
+
+
+
+
+
+
+
+
+
+ VSZ
+
+
+
+
+
+
+
+ RSS
+
+
+
+
+
+
+
+ STAT
+
+
+
+
+
+
+
+ START
+
+
+
+
+
+
+
+ TIME
+
+
+
+
+
+
+
+
+
+
+
+ 终止
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mayfly_go_web/src/views/ops/machine/ScriptEdit.vue b/mayfly_go_web/src/views/ops/machine/ScriptEdit.vue
index fb8291dd..284e3336 100644
--- a/mayfly_go_web/src/views/ops/machine/ScriptEdit.vue
+++ b/mayfly_go_web/src/views/ops/machine/ScriptEdit.vue
@@ -40,11 +40,11 @@
type="primary"
:loading="btnLoading"
@click="btnOk"
- size="mini"
+ size="small"
:disabled="submitDisabled"
>保 存
- 关 闭
+ 关 闭
diff --git a/mayfly_go_web/src/views/ops/machine/api.ts b/mayfly_go_web/src/views/ops/machine/api.ts
index c1d78441..88bd9d03 100644
--- a/mayfly_go_web/src/views/ops/machine/api.ts
+++ b/mayfly_go_web/src/views/ops/machine/api.ts
@@ -5,6 +5,9 @@ export const machineApi = {
list: Api.create("/machines", 'get'),
info: Api.create("/machines/{id}/sysinfo", 'get'),
stats: Api.create("/machines/{id}/stats", 'get'),
+ process: Api.create("/machines/{id}/process", 'get'),
+ // 终止进程
+ killProcess: Api.create("/machines/{id}/process", 'delete'),
closeCli: Api.create("/machines/{id}/close-cli", 'delete'),
// 保存按钮
saveMachine: Api.create("/machines", 'post'),
diff --git a/server/devops/api/machine.go b/server/devops/api/machine.go
index bcb35c6a..ed07f8e6 100644
--- a/server/devops/api/machine.go
+++ b/server/devops/api/machine.go
@@ -2,6 +2,7 @@ package api
import (
"bytes"
+ "fmt"
"mayfly-go/base/biz"
"mayfly-go/base/ctx"
"mayfly-go/base/ginx"
@@ -72,6 +73,41 @@ func (m *Machine) CloseCli(rc *ctx.ReqCtx) {
machine.DeleteCli(GetMachineId(rc.GinCtx))
}
+// 获取进程列表信息
+func (m *Machine) GetProcess(rc *ctx.ReqCtx) {
+ g := rc.GinCtx
+ cmd := "ps -aux "
+ sortType := g.Query("sortType")
+ if sortType == "2" {
+ cmd += "--sort -pmem "
+ } else {
+ cmd += "--sort -pcpu "
+ }
+
+ pname := g.Query("name")
+ if pname != "" {
+ cmd += fmt.Sprintf("| grep %s ", pname)
+ }
+
+ count := g.Query("count")
+ if count == "" {
+ count = "10"
+ }
+
+ cmd += "| head -n " + count
+ res, err := m.MachineApp.GetCli(GetMachineId(rc.GinCtx)).Run(cmd)
+ biz.ErrIsNilAppendErr(err, "获取进程信息失败: %s")
+ rc.ResData = res
+}
+
+// 终止进程
+func (m *Machine) KillProcess(rc *ctx.ReqCtx) {
+ pid := rc.GinCtx.Query("pid")
+ biz.NotEmpty(pid, "进程id不能为空")
+ _, err := m.MachineApp.GetCli(GetMachineId(rc.GinCtx)).Run("kill -9 " + pid)
+ biz.ErrIsNilAppendErr(err, "终止进程失败: %s")
+}
+
func (m *Machine) WsSSH(g *gin.Context) {
wsConn, err := ws.Upgrader.Upgrade(g.Writer, g.Request, nil)
defer func() {
diff --git a/server/devops/router/machine.go b/server/devops/router/machine.go
index 22be9c63..37093ca1 100644
--- a/server/devops/router/machine.go
+++ b/server/devops/router/machine.go
@@ -20,6 +20,20 @@ func InitMachineRouter(router *gin.RouterGroup) {
ctx.NewReqCtxWithGin(c).Handle(m.MachineStats)
})
+ machines.GET(":machineId/process", func(c *gin.Context) {
+ ctx.NewReqCtxWithGin(c).Handle(m.GetProcess)
+ })
+
+ // 终止进程
+ killProcessL := ctx.NewLogInfo("终止进程")
+ killProcessP := ctx.NewPermission("machine:killprocess")
+ machines.DELETE(":machineId/process", func(c *gin.Context) {
+ ctx.NewReqCtxWithGin(c).
+ WithLog(killProcessL).
+ WithRequiredPermission(killProcessP).
+ Handle(m.KillProcess)
+ })
+
saveMachine := ctx.NewLogInfo("保存机器信息")
machines.POST("", func(c *gin.Context) {
ctx.NewReqCtxWithGin(c).