我的编程空间,编程开发者的网络收藏夹
学习永远不晚

golang代码中调用Linux命令

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

golang代码中调用Linux命令

目录
  • 传统方案--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命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

golang代码中调用Linux命令

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

下载Word文档

猜你喜欢

golang代码中调用Linux命令

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

python调用调用Linux命令

如何调用Linux命令下面代码演示了调用一个shell命令, 其中,命令的输出会存储到result变量中, 而命令的返回值,则存储到exitcode中,由此可见,调用shell命令还是很方便的:import commandsexitcode
2023-01-31

golang如何调用shell命令

这篇文章主要介绍了golang如何调用shell命令的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang如何调用shell命令文章都会有所收获,下面我们一起来看看吧。普通用法(一次性获取所有输出)pack
2023-07-05

java中怎么调用linux命令

在Java中调用Linux命令可以使用`Runtime`类的`exec`方法,以下是一个示例:import java.io.BufferedReader;import java.io.InputStreamReader;public c
2023-10-26

Linux 中的 Openssl命令及实例代码

openssl命令的格式是"openssl command command-options args",command部分有很多种命令,这些命令需要依赖于openssl命令才能执行,所以称为伪命令(pseudo-command),每个伪命令
2022-06-04

golang实现ping命令的完整代码

这篇文章详细介绍了如何使用Go语言实现ping命令,包括导入必要的库、定义ping函数和处理用户输入。ping函数利用ICMP协议发送回显请求并解析响应,计算往返时间。该代码可用于检查主机连接情况并测量网络延迟。
golang实现ping命令的完整代码
2024-04-02

python调用linux系统命令

python3脚本代码如下# !/usr/bin/python# -.- coding: utf-8 -.-__author__ = www.py3study.comimport getpassimport osclass user_and
2023-01-30

linux创建用户useradd命令代码示例

一,adduser与useradd命令二者的关系 代码示例:[root@larrywen opt]# type adduser adduser is /usr/sbin/adduser [root@larrywen opt]# type
2022-06-04

Python调用linux系统命令--使

在python 中调用系统命令,如果使用subprocess.Popen() 模块,按照命令参数的的形式,可以分两种:把命令当作字符串传给subprocess.Popen() 把命令保存到一个元组,list 的序列,再传给subproces
2023-01-31

python中调用dos命令

本文是基于window系统下的调用dos命令,在centos下也类似#encoding:utf-8'''Created on 2015年10月10日@author: ZHOUMEIXU204'''import osimport time#
2023-01-31

Go 命令行调用中使用的 "./..." 代表什么?

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《Go 命令行调用中使用的 "./..." 代表什么?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,
Go 命令行调用中使用的
2024-04-04

golang调用shell命令(实时输出,终止)

本文主要介绍了golang调用shell命令(实时输出,终止),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-21

golang 函数命名如何与代码文档协调?

在 go 中,函数命名规则与代码文档要求相呼应,以确保代码易于理解和维护。最佳实践包括:公共函数以大写字母开头,私有函数以小写字母开头。多个单词的名称连接在一起,不要用下划线。避免使用缩写或俚语。godoc 注释应准确描述函数的行为和预期参
golang 函数命名如何与代码文档协调?
2024-04-22

golang调用shell命令失败怎么解决

如果在Golang中调用shell命令失败,可以尝试以下几种解决办法:检查命令是否正确:确保调用的shell命令是正确的,可以通过在终端中手动执行该命令来验证。检查路径和环境变量:有时候,调用shell命令可能涉及到路径或环境变量的问题。可
2023-10-26

Linux中rm命令使用及C/C++代码实现的方法

本篇内容介绍了“Linux中rm命令使用及C/C++代码实现的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言rm 命令是 Unix/
2023-06-30

linux命令中的tar命令的用法

这篇文章主要讲解了“linux命令中的tar命令的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux命令中的tar命令的用法”吧!通过SSH访问服务器,难免会要用到压缩,解压缩,打
2023-06-09

怎么使用golang执行Linux shell命令

这篇文章主要讲解了“怎么使用golang执行Linux shell命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用golang执行Linux shell命令”吧!1. 执行命令并获
2023-07-02

编程热搜

目录