今天遇到一个问题。执行在终端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:/us\
r/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中的数据库名称。为保密,这里不列出。

当Jenkins执行脚本出现某些环境变量找不到错误时,也可以用这种方法。

版权声明:本文博主原创文章。博客,未经同意不得转载。

crontab演出newLISP脚本设置环境变量的更多相关文章

  1. 在python脚本中设置环境变量,并运行相关应用

    1. 问题 在自动化应用的时候 ,有时候环境变量与运行需要不一致.这时候有两种选择: 改变节点环境变量,使得其和运行需求保持一致: 在自动化脚本中设置环境变量,其范围只在脚本运行环境中有效. 显然,当 ...

  2. Linux里设置环境变量的方法(export PATH)

    1.动态库路径的设置 Linux下调用动态库和windows不一样.linux 可执行程序是靠配置文件去读取路径的,因此有些时候需要设置路径 具体操作如下 export LD_LIBRARY_PATH ...

  3. ubuntu下设置环境变量的三种方法【转】

    转自:http://blog.chinaunix.net/uid-26916352-id-3208366.html 通常设置环境变量有三种方法: 一.临时设置 export PATH=/home/ya ...

  4. Ubuntu中设置环境变量详解

    1, 为单一用户:.bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.打开用户主目录下的.bashrc,在这个文件中加入export PA ...

  5. Linux程序写入oralce数据库中文显示为问号??? 代码实现设置环境变量!

    Linux程序写入oralce数据库中文显示为问号??? 1.问题介绍 根本原因是字符集的问题,是数据库的字符集和写入程序的linux系统的字符集不一致导致: 但是用export NLS_LANG=& ...

  6. Linux中使用export命令设置环境变量

    Linux export 命令 2011-08-31 22:36:39|  分类: 命令总结|举报|字号 订阅     功能说明:设置或显示环境变量. ######################## ...

  7. 怎样在Ubuntu中设置环境变量

    首先启动终端. 单击屏幕左上角的Ubuntu图标,在弹出的窗口中点击搜索栏,输入"terminal", 稍等片刻,终端就会赫然在目!二话不说,直接点击!     然后打开环境设置文 ...

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

    近日在使用ssh命令ssh user@remote ~/myscript.sh登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题: ~/myscript.sh: line n: app: co ...

  9. 00006 - Linux中使用export命令设置环境变量

    功能说明:设置或显示环境变量. #################################################################################### ...

随机推荐

  1. JavaScript 常见陷阱

    JavaScript中的一些特性和通常我们想象的不太一样.这里我总结了一些有悖直觉的语言特性. 1 数组 1.1 数组的遍历 在直接支持for a in b的语言中,比方Python/Ruby里的a的 ...

  2. HTML5 在canvas绘制一个矩形

    笔者:本笃庆军 原文地址:http://blog.csdn.net/qingdujun/article/details/32930501 一.绘制矩形 canvas使用原点(0,0)在左上角的坐标系统 ...

  3. ASP.Net 重写IHttpModule 来拦截 HttpApplication 实现HTML资源压缩和空白过滤

    务实直接上代码: 1. 重写FilterModule.cs using System; using System.Collections.Generic; using System.Linq; usi ...

  4. 什么是流利语法Fluent Syntax

     出处:http://blog.csdn.net/u010019717 author:孙广东      时间:2015.3.18   23:00 编程新概念:什么是流利语法fluent synta ...

  5. Spring、Spring MVC、MyBatis

    Spring.Spring MVC.MyBatis整合文件配置详解 使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. Sp ...

  6. 玩转html5(二)----用canvas结合脚本在画布上画简单的图(html5又一强大功能)

    在html5中可以使用canvas标签在画布上画图,先直接上代码,这篇文章先简单介绍一下canvas的使用方法,简单画几个圆,矩形,三角形,写字. 在代码中均给出了注释,在这里特别强调的一点是:使用c ...

  7. 将DataTable 数据插入 SQL SERVER 数据库

    原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库: 一:使用sqlcommand.executenon ...

  8. 自动同步Android源代码的脚本(repo sync)

    #!/bin/bash echo "================start repo sync====================" repo sync -j5 ]; do ...

  9. CareerCup Chapter 4 Trees and Graphs

    struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int val):val(val),left(NULL),rig ...

  10. cocos2d-x路~使得第一个字游戏(一个)

    前言 去年的回忆.另外,在第三.他们开发了他们的第一场比赛四月,它是游戏.所以我决定走上独立开发的道路上.了.第一款游戏达到它应有的盈利水平.然而这款游戏开发后的时间里.都没再取得还有一款令自己惬意的 ...