Go語言能否取代Linux腳本,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)公司長期為近千家客戶提供的網(wǎng)站建設(shè)服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為潮南企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計,潮南網(wǎng)站改版等技術(shù)服務。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
在Cloudflare的人們都非常喜歡Go語言。我們在許多內(nèi)部軟件項目以及更大的管道系統(tǒng)中使用它。但是,我們能否進入下一個層次并將其用作我們最喜歡的操作系統(tǒng)Linux的腳本語言呢?.
簡短點的回答:為什么不呢?Go相對容易學習,不冗余并且有一個強大的生態(tài)庫,這些庫可以重復使用避免我們從頭開始編寫所有代碼。它可能帶來的一些其他潛在優(yōu)勢:
咋一看Go腳本貌似很容易實現(xiàn)Unix腳本的shebang(#!...)支持。shebang行)是腳本的第一行,以#!開頭,并指定腳本解釋器用于執(zhí)行腳本(例如,#!/bin/bash或#!/usr/bin/envpython),所以無論使用何種編程語言,系統(tǒng)都確切知道如何執(zhí)行腳本。Go已經(jīng)使用gorun命令支持.go文件的類似于解釋器的調(diào)用,所以只需要添加適當?shù)膕hebang行(#!/usr/bin/envgorun)到任何的.go文件中,設(shè)置好文件的可執(zhí)行狀態(tài),然后就可以愉快的玩耍了。
OK,看起來shebang的方法并沒有為我們提供全面的解決方案。是否還有其他方式是我們可以使用的?讓我們仔細看看Linux內(nèi)核如何執(zhí)行二進制文件。當你嘗試執(zhí)行一個二進制/腳本(或任何有可執(zhí)行位設(shè)置的文件)時,你的shell最后只會使用Linuxexecve系統(tǒng)調(diào)用,將它傳遞給二進制文件系統(tǒng)路徑,命令行參數(shù)和當前定義的環(huán)境變量。然后內(nèi)核負責正確解析文件并用文件中的代碼創(chuàng)建一個新進程。我們中的大多數(shù)人都知道Linux(和許多其他類Unix操作系統(tǒng))為其可執(zhí)行文件使用ELF二進制格式。
然而,Linux內(nèi)核開發(fā)的核心原則之一是避免任何子系統(tǒng)的“vendor/formatlock-in”,這是內(nèi)核的一部分。因此,Linux實現(xiàn)了一個“可插拔”系統(tǒng),它允許內(nèi)核支持任何二進制格式-所有你需要做的就是編寫一個正確的模塊,它可以解析你選擇的格式。如果仔細研究內(nèi)核源代碼,你會發(fā)現(xiàn)Linux支持更多的二進制格式。例如,最近的4.14Linux內(nèi)核,我們可以看到它至少支持7種二進制格式(用于各種二進制格式的樹內(nèi)模塊通常在其名稱中具有binfmt_前綴)。值得注意的是binfmt_script模塊,它負責解析上面提到的shebang行并在目標系統(tǒng)上執(zhí)行腳本(并不是每個人都知道shebang支持實際上是在內(nèi)核本身而不是在shell或其他守護進程/進程中實現(xiàn)的)。
但既然我們認為shebang不是Go腳本的最佳選擇,似乎我們需要別的東西。令人驚訝的是,Linux內(nèi)核已經(jīng)有了一個“其他類型的”二進制支持模塊,它有一個貼切的名稱binfmt_misc。該模塊允許管理員通過定義良好的procfs接口直接從用戶空間動態(tài)添加對各種可執(zhí)行格式的支持,并且有詳細記錄。
關(guān)于Go語言能否取代Linux腳本問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
網(wǎng)頁題目:Go語言能否取代Linux腳本
本文來源:http://chinadenli.net/article26/ihoocg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)頁設(shè)計公司、服務器托管、微信公眾號、Google、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)