一 模块地址
(1)功能
1) lua-resty-shell 用于'非阻塞'的执行shell命令的Lua模块
2) 通过openresty实现'本地[unix socket]或远程执行'shell'命令'或'脚本'
(2) lua-resty-shell的两个版本
第一种'内置'版本需要'openresty版本5.0+'以后才支持
第二种Juce版,支持'所有版本'的openresty,但需要做'一定'的配置,两种版本性能'差异未知'
(3)lua自带的
非openresty 提供的网络操作'系统命令行'调用'os.execute 等'应该尽量'避免'
(4)使用官方自带的
备注:本质是sh -c "字符串"
① 编写lua脚本
② nginx.conf配置
③ 测试
思考: 'who 命令'是谁?
④ 多个命令
直接使用';'隔开
⑤ 脚本
说明:假定openresty指定'user root[权限最大]',默认是'nginx'
补充:/tmp和/mnt不管什么'use'指定什么用户都'无法'执行其中的脚本,甚至都'无法找到'该文件,即使是'root',原因'未知[可能是缺陷?]'
附加:关于'脚本传参,后续探究'
⑥ 调试
思考:如何涉及到'权限问题',尝试'user root root',看看效果,并且看下'not ok -->对应stderr信息'
+++++++++++'执行'shell脚本+++++++++++
1) 远程执行本地的shell脚本 --> ssh user@ip 'bash -s' < test.sh a b --> "带参数"
2) 远程执行'远端'的脚本 --> ssh user@ip "ls;sh start_project.sh&"
3) bash -c "/path/to/file" $1 $2 写文件的"绝对"路径,用"双引号"括起来,且文件要具有'可执行'权限