iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >golang代码中调用Linux命令
  • 939
分享到

golang代码中调用Linux命令

golang调用Linux命令golangLinux命令 2023-02-19 10:02:07 939人浏览 八月长安
摘要

目录传统方案--crontab分布式任务调度Go执行shell命令实际我们在golang代码中调用linux命令1、普通调用2、结合协程调用,可控制中断调用传统方案--crontab 缺点配置任务时,需要ssh登录脚本服

目录
  • 传统方案--crontab
  • 分布式任务调度
  • Go执行shell命令
  • 实际我们在golang代码中调用linux命令
    • 1、普通调用
    • 2、结合协程调用,可控制中断调用

传统方案--crontab

  • 缺点
    • 配置任务时,需要ssh登录脚本服务器进行操作
    • 服务器宕机,任务将终止调度,需要人工迁移
    • 排查问题低效,无法方便的查看任务状态与错误输出

分布式任务调度

  • 优点
    • 可视化WEB后台,方便进行任务管理
    • 分布式架构集群化调度,不存在单点故障
    • 追踪任务执行状态,采集任务输出,可视化log查看

go执行shell命令

  • 1、执行程序:/usr/bin/python start.py

  • 2、调用命令: cat Nginx.log | grep "2022"

    • bash模式
      • 交互模式:ls -l
      • 非交互模式:/bin/bash -c "ls -l" ------ 我们使用这个

实际我们在golang代码中调用Linux命令

1、普通调用

package main

import (
	"fmt"
	"

2、结合协程调用,可控制中断调用

package main

import (
	"context"
	"fmt"
	"os/exec"
	"time"
)

// 接收子协程的数据,协程之间用chan通信
type result struct {
	output []byte
	err    error
}

func main() {
	// 执行一个cmd,让他在一个携程里面执行2s,
	// 1s的时候  杀死cmd
	var (
		ctx        context.Context
		cancelFunc context.CancelFunc
		cmd        *exec.Cmd
		resultChan chan *result
		res        *result
	)

	// 创建一个结果队列
	resultChan = make(chan *result, 1000)

	
	ctx, cancelFunc = context.WithCancel(context.TODO())

	// 起一个协程
	go func() {
		var (
			output []byte
			err    error
		)
		// 生成命令
		cmd = exec.CommandContext(ctx, "bash", "-c", "sleep 3;echo hello;")

		// 执行命令cmd.CombinedOutput(),且捕获输出
		output, err = cmd.CombinedOutput()

		// 用chan跟主携程通信,把任务输出结果传给main协程
		resultChan <- &result{
			err:    err,
			output: output,
		}
	}()

	// Sleep 1s
	time.Sleep(time.Second * 1)

	// 取消上下文,取消子进程,子进程就会被干掉
	cancelFunc()

	// 从子协程中取出数据
	res = <-resultChan

	// 打印子协程中取出数据
	fmt.Println(res.err)
	fmt.Println(string(res.output))

}

到此这篇关于golang代码中调用Linux命令的文章就介绍到这了,更多相关golang调用Linux命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: golang代码中调用Linux命令

本文链接: https://www.lsjlt.com/news/196743.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang代码中调用Linux命令
    目录传统方案--crontab分布式任务调度go执行shell命令实际我们在golang代码中调用linux命令1、普通调用2、结合协程调用,可控制中断调用传统方案--crontab 缺点配置任务时,需要SSh登录脚本服...
    99+
    2023-02-19
    golang调用Linux命令 golangLinux命令
  • golang如何调用shell命令
    这篇文章主要介绍了golang如何调用shell命令的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang如何调用shell命令文章都会有所收获,下面我们一起来看看吧。普通用法(一次性获取所有输出)pack...
    99+
    2023-07-05
  • python调用调用Linux命令
    如何调用Linux命令下面代码演示了调用一个shell命令, 其中,命令的输出会存储到result变量中, 而命令的返回值,则存储到exitcode中,由此可见,调用shell命令还是很方便的:import commandsexitcode...
    99+
    2023-01-31
    命令 python Linux
  • Linux 中的 Openssl命令及实例代码
    openssl命令的格式是"openssl command command-options args",command部分有很多种命令,这些命令需要依赖于openssl命令才能执行,所以称为伪命令(pseu...
    99+
    2022-06-04
    实例 命令 代码
  • java中怎么调用linux命令
    在Java中调用Linux命令可以使用`Runtime`类的`exec`方法,以下是一个示例: import java.io.Buf...
    99+
    2023-10-26
    java linux
  • python调用linux系统命令
    python3脚本代码如下# !/usr/bin/python# -.- coding: utf-8 -.-__author__ = 'www.py3study.com'import getpassimport osclas...
    99+
    2023-01-30
    命令 系统 python
  • linux创建用户useradd命令代码示例
    一,adduser与useradd命令二者的关系 代码示例: [root@larrywen opt]# type adduser adduser is /usr/sbin/adduser [ro...
    99+
    2022-06-04
    示例 命令 代码
  • Linux中rm命令使用以及C/C++代码实现
    目录前言Linux rm 命令如何使用 rm 命令删除文件如何强制 rm 忽略不存在的文件如何在每次删除之前使 rm 提示如何使用 rm 命令删除目录如何让 rm 只删除空目录如何强...
    99+
    2022-11-13
  • golang调用shell命令(实时输出,终止)
    目录背景普通用法(一次性获取所有输出)实时显示可关闭+实时输出执行Python脚本(阻塞)其他仍有缺陷windows输出乱码问题最后给一个解决windows乱码的完整案例概述一般命令...
    99+
    2023-02-21
    golang调用shell命令 golang调用shell
  • golang调用shell命令失败怎么解决
    如果在Golang中调用shell命令失败,可以尝试以下几种解决办法: 检查命令是否正确:确保调用的shell命令是正确的,可以...
    99+
    2023-10-26
    golang shell
  • 怎么使用golang执行Linux shell命令
    这篇文章主要讲解了“怎么使用golang执行Linux shell命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用golang执行Linux shell命令”吧...
    99+
    2023-07-02
  • Python调用linux系统命令--使
    在python 中调用系统命令,如果使用subprocess.Popen() 模块,按照命令参数的的形式,可以分两种:把命令当作字符串传给subprocess.Popen() 把命令保存到一个元组,list 的序列,再传给subproces...
    99+
    2023-01-31
    命令 系统 Python
  • Linux中rm命令使用及C/C++代码实现的方法
    本篇内容介绍了“Linux中rm命令使用及C/C++代码实现的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言rm 命令是 Unix/...
    99+
    2023-06-30
  • Linux sar命令使用方法及代码实例解析
    1. CPU利用率 sar -p (查看全天) sar -u 1 10 (1:每隔一秒,10:写入10次)   1.1. CPU输出项说明 输出项 详细说明 ...
    99+
    2022-06-03
    Linux sar命令
  • Linux入侵常用命令之防黑客示例代码
    前言 linux权限多设的比较松的其实,但有的虚拟机还是不能跨目录访问的。在提不了权的情况下,试试如下代码吧。运气好的话说不定就跨过去了。下面话不多说了,来一起看看详细的介绍吧。 写个php一句话后门上去: [jo...
    99+
    2022-06-04
    linux 被黑客入侵 linux运维常用命令 linux黑客命令
  • 通过python连接Linux命令行代码实例
    这篇文章主要介绍了通过python连接linux命令行代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 #!/usr/bin/python # -*...
    99+
    2022-06-04
    python 连接 Linux
  • 实战基本的Linux sed命令示例代码
    linux流编辑器是在数据中心中运行脚本的一种有用方法。通过这些命令示例,您可以开始熟悉sed。 想要修改文件而不覆盖原始文件的Linux管理员有很多选择,但最有效的工具之一是流编辑器 - sed。 流编辑器是大多数Li...
    99+
    2022-06-04
    Linux sed命令 Linux sed
  • python代码调出cmd命令行窗口并在cmd窗口中执行指定的命令
    有时候,我们需要在python代码中打开 cmd命令行窗口,并在新打开的命令行cmd窗口中执行特定的命令, 其实,这个操作很容易,不过在网上找了一圈,都是没有说明白, 这里总结发布一下, 导入 os...
    99+
    2023-09-21
    windows
  • python中调用dos命令
    本文是基于window系统下的调用dos命令,在centos下也类似 #encoding:utf-8 ''' Created on 2015年10月10日 @author: ZHOUMEIXU204 ''' import os impo...
    99+
    2023-01-31
    命令 python dos
  • Linux命令中的rpm命令怎么用
    这篇文章的内容主要围绕Linux命令中的rpm命令怎么用进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!在Linux中,RPM是进行软件得安装、卸载、...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作