- OpenResty完全開發指南:構建百萬級別并發的Web應用
- 羅劍鋒
- 615字
- 2019-07-25 11:55:05
1.9 命令行工具
OpenResty在bin目錄下提供一個命令行工具resty(注意名字不是resty-cli),可以把它作為Lua語言的解釋器(但運行在OpenResty環境里)代替標準的Lua 5.x,寫出類似Perl、Python那樣易用的腳本,是測試/運維工程師的利器。
使用“-e”參數可以在命令行里直接執行Lua代碼,例如:
./resty -e "print('hello OpenResty')" #執行Lua代碼,打印一個字符串
這種方式只適合執行很小的代碼片段,更好的方式是利用UNIX的“Shebang”(#! ),在腳本文件里的第一行指定resty作為解釋器,能夠書寫任意長度和復雜度的代碼,而且更利于管理維護。
剛才的命令行用法可以改寫成下面的腳本文件:
#! /usr/local/openresty/bin/resty -- 使用resty作為腳本的解釋器
print('hello OpenResty') -- 執行Lua代碼,打印一個字符串
腳本文件也支持傳遞命令行參數,參數存儲在表arg里,用arg[N]的方式即可訪問:
#! /usr/local/openresty/bin/resty -- 使用resty作為腳本的解釋器
local n = #arg -- 得到參數的數量
print("args count = ", n) -- 打印參數的數量
for i = 1, n do -- 變量參數表,注意Lua下標從1開始
print("arg ", i , ": ", arg[i]) -- 輸出參數
end -- 循環結束
使用參數執行腳本hello.lua,結果是:
./hello.lua FireEmblem Heroes #執行Lua代碼,帶兩個參數 args count = 2 #打印參數的數量 arg 1: FireEmblem #輸出第一個參數 arg 2: Heroes #輸出第二個參數
resty工具還有很多選項用于配置行為,非常靈活,“-e”之外較常用的有:
■ -c :指定最大并發連接數(默認值是64); ■ -I :指定Lua庫的搜索路徑; ■ -l :指定加載某個Lua庫; ■ --http-conf :定制在http域里的指令; ■ --main-include :定制在main域里的指令; ■ --shdict :定制使用的共享內存(參見10.2節); ■ --resolve-ipv6 :允許解析ipv6的地址。
其他選項如-j、-gdb等讀者可以參考help或者restydoc。
本書之后在講解Lua語言和LuaJIT環境時均采用resty作為解釋器執行Lua程序。
推薦閱讀
- 演進式架構(原書第2版)
- Learning NServiceBus(Second Edition)
- Learning Docker
- 深入淺出Java虛擬機:JVM原理與實戰
- C# Programming Cookbook
- 深度強化學習算法與實踐:基于PyTorch的實現
- 零基礎入門學習Python
- Learning OpenStack Networking(Neutron)
- Android Wear Projects
- MongoDB,Express,Angular,and Node.js Fundamentals
- Serverless Web Applications with React and Firebase
- Cocos2d-x by Example:Beginner's Guide(Second Edition)
- Node.js從入門到精通
- Get Your Hands Dirty on Clean Architecture
- Laravel Design Patterns and Best Practices