今天遇到一个问题。执行在终端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. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:3.技术简介之MinaFilter——LoggingFilter (转)

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 LoggingFilter 接下来,使我们对Filter介绍的最后一个——LoggingFilter. 与Proto ...

  2. 基于Cocos2dx开发卡牌游戏_松开,这三个国家

    1.它实现了动态读取地图资源.地图信息被记录excel桌格.假设你想添加地图,编者excel导入后CocoStudio数据编辑器,然后出口到Json档,到项目的Resource文件夹下. 2.SGFi ...

  3. VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器

                        VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器      View Compose服务可安装在管理虚拟机的vC ...

  4. hdu 2899 hdu 3400 三分/几何

    hdu2899 : 水提,直接三分,事实上求导后二分也能够. #include<iostream> #include<cstdio> using namespace std; ...

  5. TypeScript 5 Angular 2

    TypeScript 5 分钟快速入门 翻译:Angular 2 - TypeScript 5 分钟快速入门 原文地址:https://angular.io/docs/ts/latest/quicks ...

  6. Directx11学习笔记【六】 基本的数学知识----矩阵篇

    参考dx11龙书 Chapter2 matrix algebra(矩阵代数) 关于矩阵的一些基本概念定理(例如矩阵加减乘法,逆矩阵,伴随矩阵,转置矩阵等)可以参考维基百科 https://zh.wik ...

  7. hdu 4876 ZCC loves cards(暴力)

    题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...

  8. USB OTG简要

    1 介绍 随着USB2.0发布版本号,USB更受欢迎.它已成为一种标准接口.现在,USB它支持三种速度:低速(1.5Mb/s).全速(12Mb/s)速(480Mb/s),四种传输类型:块传输.同步传输 ...

  9. hdu3182 状态压缩水题

    题意是这种     给你n个汉堡     每一个汉堡有它的价值   做每一个汉堡都得花费相应的能量      如今告诉你最大能量 让你求获得的最大的价值(有些汉堡必须有还有一些汉堡做好为前提) 给你的 ...

  10. Orleans:NET的Actor模型

    .NET的Actor模型:Orleans   Orleans是微软推出的类似Scala Akka的Actor模型,Orleans是一个建立在.NET之上的,设计的目标是为了方便程序员开发需要大规模扩展 ...