Go语言能否取代Linux脚本-创新互联

Go语言能否取代Linux脚本,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都网站建设、宝坻网络推广、小程序设计、宝坻网络营销、宝坻企业策划、宝坻品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联公司为所有大学生创业者提供宝坻建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

在Cloudflare的人们都非常喜欢Go语言。我们在许多内部软件项目以及更大的管道系统中使用它。但是,我们能否进入下一个层次并将其用作我们最喜欢的操作系统Linux的脚本语言呢?.

简短点的回答:为什么不呢?Go相对容易学习,不冗余并且有一个强大的生态库,这些库可以重复使用避免我们从头开始编写所有代码。它可能带来的一些其他潜在优势:

咋一看Go脚本貌似很容易实现Unix脚本的shebang(#!...)支持。shebang行)是脚本的第一行,以#!开头,并指定脚本解释器用于执行脚本(例如,#!/bin/bash或#!/usr/bin/envpython),所以无论使用何种编程语言,系统都确切知道如何执行脚本。Go已经使用gorun命令支持.go文件的类似于解释器的调用,所以只需要添加适当的shebang行(#!/usr/bin/envgorun)到任何的.go文件中,设置好文件的可执行状态,然后就可以愉快的玩耍了。

是否还有其他方式支持

OK,看起来shebang的方法并没有为我们提供全面的解决方案。是否还有其他方式是我们可以使用的?让我们仔细看看Linux内核如何执行二进制文件。当你尝试执行一个二进制/脚本(或任何有可执行位设置的文件)时,你的shell最后只会使用Linuxexecve系统调用,将它传递给二进制文件系统路径,命令行参数和当前定义的环境变量。然后内核负责正确解析文件并用文件中的代码创建一个新进程。我们中的大多数人都知道Linux(和许多其他类Unix操作系统)为其可执行文件使用ELF二进制格式。

Linux内核核心原则

然而,Linux内核开发的核心原则之一是避免任何子系统的“vendor/formatlock-in”,这是内核的一部分。因此,Linux实现了一个“可插拔”系统,它允许内核支持任何二进制格式-所有你需要做的就是编写一个正确的模块,它可以解析你选择的格式。如果仔细研究内核源代码,你会发现Linux支持更多的二进制格式。例如,最近的4.14Linux内核,我们可以看到它至少支持7种二进制格式(用于各种二进制格式的树内模块通常在其名称中具有binfmt_前缀)。值得注意的是binfmt_script模块,它负责解析上面提到的shebang行并在目标系统上执行脚本(并不是每个人都知道shebang支持实际上是在内核本身而不是在shell或其他守护进程/进程中实现的)。

但既然我们认为shebang不是Go脚本的很好选择,似乎我们需要别的东西。令人惊讶的是,Linux内核已经有了一个“其他类型的”二进制支持模块,它有一个贴切的名称binfmt_misc。该模块允许管理员通过定义良好的procfs接口直接从用户空间动态添加对各种可执行格式的支持,并且有详细记录。

关于Go语言能否取代Linux脚本问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


分享标题:Go语言能否取代Linux脚本-创新互联
网页链接:http://pwwzsj.com/article/depoip.html