首页 > 代码库 > 远程运行newLISP代码

远程运行newLISP代码

newLISP提供了一个简单的MapReduce的方式,利用net-eval函数,可以向远程运行这newlisp服务进程的机器发起调用。

本文介绍最简单的方法:

首先服务器启动newlisp进程

newlisp -l -c -d 4711 &

-l 代表记录日志,默认是打印到终端

-c 是不会出现常见的newlisp的会话终端

-d 是在连接之间保存状态,一个边际效应就是后续的请求必须等待前面的请求已经完成才能发出


下面来试用一下:

假设在A机器已经使用了上面的命令启动了newLISP服务进程

现在在B机器上运行newLISP的shell,输入下面的命令:

> (net-eval "123.126.32.82" 4711 ‘(+ 3 4))   
7

简单的加法没有问题,

再看文件操作:

> (net-eval "123.126.32.82" 4711 ‘(exec "touch /home/chenshu/work/mobile_data/code/export/tt"))   
newLISP

到A机器检查,发现的确出现了文件tt

[chenshu@hadoopMaster export]$ ls tt -alh                                                                                                         
-rw-rw-r-- 1 chenshu chenshu 0 May 20 19:50 tt 

现在在A机器上准备一个newLISP脚本文件

#!/usr/bin/newlisp                                                                                                                                
                                                                                                                                                  
(println "ok")                                                                                                                                    
(make-dir "/home/chenshu/work/mobile_data/code/export/mm")                                                                                        
(exit)                                                                                                                                            
             

远程执行:

(net-eval "123.126.32.82" 4711 ‘(exec "newlisp /home/chenshu/work/mobile_data/code/export/test.lsp"))

结果是果然创建了mm目录。

但是这只是简单的应用,复杂了远程调用就需要耐心调试。

至少目前我的test.lsp如果调用hive命令读取schema,并连接mysql创建表,就会失败。还需要仔细检查,查看原因。