crontab中运行newLISP脚本的环境变量设置

今天遇到一个问题,在终端里运行newLISP脚本,一切正常,移动到crontab中就不行。即便crontab -e命令运行在同一个用户下,还是有问题。

由于newLISP脚本要用到hive和hadoop,估计是环境变量的问题。所以先用newLISP shell运行(env)命令,将当前环境变量记录到文件evn.lsp中。

然后在newLISP脚本中加载之。

下面是env.lsp文件部分内容:

(set ‘local-envs ‘(("LC_PAPER" "en_US.UTF-8") ("LC_ADDRESS" "en_US.UTF-8") ("HOSTNAME" "hadoopMaster.com")
 ("LC_MONETARY" "en_US.UTF-8")
 ("SHELL" "/bin/bash")
 ("TERM" "dumb")
 ("HADOOP_HOME" "/usr/local/hadoop")
 ("HISTSIZE" "5000")
 ("SSH_CLIENT" "123.125.91.21 44582 22")
 ("LC_NUMERIC" "en_US.UTF-8")
 ("SQOOP_HOME" "/home/chenshu/sqoop-1.4.4.bin__hadoop-1.0.0")
 ("SSH_TTY" "/dev/pts/7")
 ("LC_ALL" "en_US.UTF-8")
 ("HISTFILESIZE" "5000")
 ("USER" "chenshu")
 ("EMACS" "t")
 ("LS_COLORS" "")
 ("LC_TELEPHONE" "en_US.UTF-8")
 ("HBASE_HOME" "/usr/local/hbase")
 ("TERMCAP" "")
 ("TMOUT" "3600")
 ("COLUMNS" "146")
 ("MAVEN_HOME" "/opt/apache-maven-3.2.1")
 ("MAIL" "/var/spool/mail/chenshu")
 ("PATH" "/usr/local/java/bin:/usr/local/hadoop/bin:/usr/local/hive/bin://usr/local/hbase/bin://usr/local/hive/bin:/usr/local/postgres9.1/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/data/shell:/data/tools:/opt/apache-maven-3.2.1/bin/:/home/chenshu/sqoop-1.4.4.bin__hadoop-1.0.0/bin/:/home/chenshu/bin:/opt/apache-maven-3.2.1/bin/:/home/chenshu/sqoop-1.4.4.bin__hadoop-1.0.0/bin/")
 ("LC_MESSAGES" "en_US.UTF-8")

。。。

还添加了一行代码,可以自动遍历上面的list,设置每一个环境变量。

(dolist (e local-envs)
  (env (e 0) (e 1))
)

这样,在crontab中运行test.lsp脚本成功:

* * * * * cd /home/chenshu/export; /usr/bin/newlisp ./test.lsp >/dev/null 2>&1

而test.lsp中代码如下:

#!/usr/bin/newlisp
(define (write-log msg)
  (append-file "hive2mysql.log" (string msg "\n"))
  )

(load "/opt/newlisp_util/env.lsp")
(set ‘hive-create-table-statement (exec (format "hive -e ‘show databases‘ 2>&1")))
(write-log hive-create-table-statement)
(exit)

输出结果为Hive中的数据库名称。为保密,这里不列出。

crontab中运行newLISP脚本的环境变量设置,布布扣,bubuko.com

时间: 2024-10-22 23:57:43

crontab中运行newLISP脚本的环境变量设置的相关文章

转载:monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四)

转载自:lynnLi 的monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四) monkeyrunner脚本使用Python语法编写,但它实际上是通过Jython来解释执行. Jython是Python的Java实现,它将Python代码解释成Java虚拟机上的字节码并执行,这种做法允许在Python中继承一个Java类型,可以调用任意的 Java API . 本文档主要是可以实现在eclipse环境中运行Monkeyrunner脚本.所需要的环境和工具如下:

eclipse中运行monkeyrunner脚本之环境搭建

本文档主要是可以实现在eclipse环境中运行Monkeyrunner脚本.所需要的环境和工具如下:win7 os.jdk.eclipse.sdk.python.jython.模拟器或真机设备. 在前两章中,我们分别进行了eclipse中的Android开发环境的配置,Monkeyrunner的环境搭建.上述工具基本都已经具备,其中,jython在sdk\tools\lib中.因此,本文档中,我们只需要将Monkeyrunner和python集成到eclipse中,这样,以后我们就可以在ecli

[转]crontab环境变量设置

原文连接:http://blog.csdn.net/zc02051126/article/details/20480289 come from http://www.360doc.com/content/12/1010/14/7492958_240641022.shtml 设置了一个crontab 30 0 * * * cd /home/work/user/huangbx/research/getfeature/data/current; sh resample.sh &>/dev/null

Linux环境变量设置中配置文件分析(/etc/profile,~/.bashrc等)(转)

说明:在研究中发现,对于不同版本的Linux系统有着不同的文件,但是总的入口是不变的/etc/profile,下面只是展示加载顺序的研究过程,所以会有些系统没有这个文件等问题. 一.配置文件与作用域: 1.系统级别: /etc/environment:在登录时操作系统使用的文件,系统在读取profile前,设置环境文件的环境变量. /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.

ssh连接远程主机执行脚本的环境变量问题

用ssh命令ssh [email protected] "/web/tomcat-7000/bin/startup.sh" 登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题:tomcat服务不能启动 Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment variable is needed to run this progr

(转)Linux 中/etc/profile、~/.bash_profile 环境变量配置及执行过程

环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell.对于Linux来说一般是bash,但也可以重新设定或切换到其它的 Shell.对于UNIX,可能是CShelll.环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用.对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量.下面通过几个实例来说明.1)etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被

java中获取系统属性以及环境变量

java中获取系统属性以及环境变量 System.getEnv()和System.getProperties()的差别 从概念上讲,系统属性 和环境变量 都是名称与值之间的映射.两种机制都能用来将用户定义的信息传递给 Java 进程.环境变量产生很多其它的全局效应,由于它们不仅对Java 子进程可见,并且对于定义它们的进程的全部子进程都是可见的.在不同的操作系统上,它们的语义有细微的区别,比方,不区分大写和小写.由于这些原因,环境变量更可能有意料不到的副作用.最好在可能的地方使用系统属性.环境变

linux中的一些主要的环境变量

$HOME 当前用户的家目录$PATH 以冒号分隔的用来搜索命令的目录列表$PS1 命令提示符,通常为$符,但在blash中,你可以使用一些更复杂的值$PS2 二级提示符,用来提示后续的输入,通常为->字符$IFS 输入域分隔符.当shell读取输入时,他给出哟该来分隔单词的一组字符,通常是空格.制表符和换行符$0 shell脚本的名字$1 脚本的第一个参数,$2 脚本的第二个参数,以此类推$* 脚本的参数列表,各参数之间用环境变量IFS中的第一个字符分隔开[email protected] 是

关于ffmpeg和OpenCV在windows下运行要添加的环境变量

1.ffmpeg的DEV版本为开发版,里面包含了库文件和头文件.shared版本里面包含*.exe,在电脑环境变量中增加其bin所在路径. F:\工作目录\人脸识别相关\ffmpeg_package\ffmpeg-3.4.2-win32-shared\ffmpeg-3.4.2-win32-shared\bin: F:\工作目录\人脸识别相关\ffmpeg_package\ffmpeg-3.4.2-win64-shared\ffmpeg-3.4.2-win64-shared\bin: 2.Open