Go语言能否取代Linux脚本
创始人
2024-12-25 13:21:36
0次

  在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接口直接从用户空间动态添加对各种可执行格式的支持,并且有详细记录。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...