Go语言能否取代Linux脚本,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
成都创新互联公司长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为潮南企业提供专业的成都做网站、网站设计,潮南网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
在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://scyingshan.cn/article/ihoocg.html