環境(2021-04-02):
node-gyp是node C++模塊編譯的重要工具,目前的安裝方式主要是在線安裝。但是,離線安裝的需要也是不可避免的,下面介紹如何在Windows下離線安裝node-gyp
windows系統:
Python3.8.8下載地址: https://www.python.org/ftp/python/3.8.8/python-3.8.8.exe
https://npm.taobao.org/mirrors/node/v14.16.0/node-v14.16.0-x64.msi
頭文件下載地址:
https://npm.taobao.org/mirrors/node/v14.16.0/node-v14.16.0-headers.tar.gz
https://nodejs.org/dist/v14.16.0/node-v14.16.0-headers.tar.gz
將node-v14.16.0-headers.tar.gz解壓到%USERPROFILE%/AppData/Local/node-gyp/Cache,并重命名為14.16.0
# 解壓頭文件
$ tar -xzf node-v14.16.0-headers.tar.gz -C %USERPROFILE%/AppData/Local/node-gyp/Cache
# 修改文件夾名稱為v14.16.0
$ rename node-v14.16.0 14.16.0
https://npm.taobao.org/mirrors/node/v14.16.0/win-x64/node.lib
https://nodejs.org/dist/v14.16.0/win-x64/node.lib
64位的node.lib放到%USERPROFILE%/AppData/Local/node-gyp/Cache/14.16.0/x64
注意:由于安裝的是64位node,所以只下載64位即可
node-gyp編譯時會檢測頭文件和庫文件的installVersion的版本,如果頭文件和庫文件的installVersion小于node-gyp的installVersion,則會重新下載安裝頭文件和庫文件。
%USERPROFILE%/AppData/Roaming/npm/node_modules/node-gyp/package.json
可以看到node-gyp的installVersion是9
{
"_from": "node-gyp",
"_id": "node-gyp@7.1.2",
...
"installVersion": 9,
...
"version": "7.1.2"
}
cd %USERPROFILE%/AppData/Local/node-gyp/Cache/14.16.0
echo 9 installVersion
目錄結構如下:
$ C:
$ cd %USERPROFILE%/AppData/Local/node-gyp/Cache/14.16.0
$ tree
.
+--- include
| +--- node
| | +--- node_api.h
| | +--- ...
+--- installVersion
+--- x64
| +--- node.lib
下載地址: https://github.com/nodejs/node-gyp/archive/v7.1.2.tar.gz
將node-gyp-7.1.2.tar.gz解壓到 %USERPROFILE%/AppData/Roaming/npm/node_modules(NodeJS安裝路徑),并重命名為node-gyp
$ tar -xzf node-gyp-7.1.2.tar.gz -C %USERPROFILE%/AppData/Roaming/npm/node_modules
$ rename node-gyp-7.1.2 node-gyp
安裝必要node_modules(在線安裝好拷貝到離線環境)
$ cd node-gyp
$ npm install
驗證
$ cd bin
$ node %USERPROFILE%/AppData/Roaming/npm/node_modules/node-gyp/bin/node-gyp.js -v
v7.1.2
node-gyp命令文件
在%USERPROFILE%/AppData/Roaming/npm建立node-gyp.cmd文件,用于直接使用node-gyp命令。也就是上一步的驗證可以使用node-gyp -v即可。
1.Shutdown(用來關閉或重新啟動本地或遠程的計算機。)
語法為:shutdown [/i | /l | /s | /r | /a | /p | /h | /e] [/f] [/m //ComputerName] [/tXXX] [/d [p:]XX:YY/c"Comment"
一小時后,關閉計算機: shutdown /s /t 3600
關閉并重新啟動計算機: shutdown /r
5秒后,關閉并重新啟動計算機,在系統重新啟動后,重新啟動所有注冊的應用程序:shutdown /g /t 5
取消系統關閉(只能在超時期間使用): shutdown /a
注銷當前的用戶: shutdown /l 或者 logoff.exe
使本地計算機處于休眠狀態: shutdown /h
2、sc (管理 Windows 服務)
sc 命令用于與服務控制器進行通信和安裝服務。
安裝一個名為 test 的服務(binPath 表示可執行程序的路徑):
sc create test binPath="E:est.bat"
查詢本機所有已配置的服務信息(不寫 state 參數時只查詢已啟動的服務信息):
sc query type=service state=all
查詢指定服務(test)的配置信息:
sc query test
查詢指定服務(test)的詳細配置信息:
sc qc test
配置 test 服務的啟動方式(auto 表示在系統啟動時自動啟動,demand 表示在系統啟動后手動啟動,disabled 表示禁止服務,delayed-auto 表示自動延遲啟動):
sc config test start=demand
配置 test 服務的登錄方式為本地賬戶登錄(對于Windows服務,可以將其配置為以系統帳號登錄,也可以將其配置為以特定用戶帳號登錄):
sc config test obj=localsystem
配置服務的恢復方式(如果24小時的時間間隔內沒有發生服務失敗,則重置失敗計數器;在第一次、第二次服務失敗時,在1秒的延遲后重新啟動服務,第三次失敗時,在30秒的延遲后重新啟動計算機)
sc failure test reset=86400 actions=restart/1000/restart/1000/reboot/30000
配置服務的恢復方式(如果1小時內沒發生失敗則重啟失敗計數器,服務失敗后無操作):
sc failure test reset=3600 actions=null
配置服務的恢復方式(如果1小時內沒發生失敗則重啟失敗計數器,服務失敗后延遲1秒就重啟服務,且失敗后運行cmd.exe):
sc failure test reset=3600 actions=restart/1000 command="D:est.bat"
啟動指定服務 test:
sc start test
暫停指定服務 test:
sc pause test
恢復暫停的指定服務 test:
sc continue test
終止指定服務 test:
sc stop test
刪除 test 服務(只是從注冊表刪除,不會徹底刪除,服務中還能看到):
sc delete test
3、tasklist、taskkill(管理任務進程)
查詢運行在本機上的任務:
tasklist /s 127.0.0.1
查詢進程使用的 DLL:
tasklist /m
查找 PID 為 284的進程:
tasklist /fi "pid eq 284"
查找鏡像名稱為 chrome.exe 的進程:
tasklist /fi "imagename eq chrome.exe"
查找占用 CPU超過60分鐘的進程:
tasklist /fi "cputime gt 00:60:00"
查找占用內存超過 1000KB 的進程:
tasklist /fi "memusage gt 1000"
強制終止 PID 為的進程:
taskkill /pid 816 /f
終止 PID 為 1704 的進程及其子進程:
taskkill /pid 1704 /t
終止鏡像名為 chrome.exe 的所有進程:
taskkill /im chrome.exe
注意:更多詳情請參考:Tasklist 和 Taskkill。
4、ipconfig(顯示 TCP/IP 配置值)
ipconfig.exe 用于顯示當前電腦的 TCP/IP 配置值,這些信息一般用來檢驗人工配置的 TCP/IP 設置是否正確。
顯示本機 TCP/IP 配置的詳細信息:
ipconfig /all
清除本地 DNS 緩存內容:
ipconfig /flushdns
顯示本地 DNS 內容:
ipconfig /displaydns
5、ping(網絡診斷工具)
ping 命令可以檢查網絡是否連通,能很好地幫助我們分析和判定網絡故障。通過發送 Internet 控制消息協議(ICMP)回顯請求消息來驗證與其他 TCP/IP 計算機的 IP 級連接,顯示相應回應回復消息的收到以及往返時間。ping 是用于排除連接性,可達性和名稱解析的主要 TCP/IP 命令。
測試本機是否能連接 192.168.1.1:
ping 192.168.1.1
測試本機是否能連接 www.baidu.com:
ping www.baidu.com
顯示回復消息時將網址解析成 IP 地址:
ping www.baidu.com -a
一直 ping(直到關閉窗口或按下 Ctrl+C):
ping www.baidu.com -t
發送兩個 Echo Request 消息(默認為 4 個):
ping www.baidu.com -n 2
注意:更多詳情請參考:Ping
6、set(臨時設置計算機環境變量)
在《探索Windows命令行系列(3):命令行腳本基礎》一文中,已經詳細講解了如何通過 set 命令來進行數學計算和使用變量。其實還可以通過 set 命令來臨時更改環境變量,所謂臨時更改的意思就是修改后只在當前窗口有效,一旦窗口關閉變量值就會被還原,且其它窗口不受影響。
在 Windows 中最特殊、最常用的的環境變量莫過于 path 了,該系統變量表示當前系統的的可執行文件和腳本的命令路徑。下面來演示幾個用 set 來臨時更改 path 的案例:
顯示 path 變量值:
set path
置空 path 變量值(相當于刪除了 path 變量):
set path=
設置 path 變量值(增加一個路徑 D:Workspace,越靠前的環境變量優先級越高)
set D:Workspace;%path%
另外 Windows 中內置了許多環境變量或擴展,部分列舉如下(下列括號中的文本或路徑是基于 Win7 系統測試得來的):
?%CD% 表示當前目錄的字符串值。
?%RANDOM% 表示一個從 0 到 32767 之間的任意十進制數字。
?%ERRORLEVEL% 表示當前的 ERRORLEVEL 數值。
?%CMDCMDLINE% 表示調用命令處理器的原始命令行全路徑。("C:Windowssystem32cmd.exe")
?%PATH% 表似乎可執行文件的搜索路徑。
?%PATHEXT% 表示操作系統認為可執行的文件擴展名的列表。
?%WINDIR% 表示操作系統目錄的位置。(C:Windows)
?%ALLUSERSPROFILE% 表示“所有用戶”配置文件的位置。(C:ProgramData)
?%APPDATA% 表示默認情況下應用程序存儲數據的位置。(C:UsersHZZAppDataRoaming)
?%HOMEPATH% 表示用戶主目錄的完整路徑。用戶主目錄是在“本地用戶和組”中指定的。(C:UsersHZZ)
?%TEMP% 或 %TMP% 表示對當前登錄用戶可用的應用程序所使用的默認臨時目錄。有些應用程序需要 TEMP,而其他應用程序則需要 TMP。(C:UsersHZZAppDataLocalTemp)
干貨分享,趕緊收藏先...