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:/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脚本设置环境变量的更多相关文章
- 在python脚本中设置环境变量,并运行相关应用
1. 问题 在自动化应用的时候 ,有时候环境变量与运行需要不一致.这时候有两种选择: 改变节点环境变量,使得其和运行需求保持一致: 在自动化脚本中设置环境变量,其范围只在脚本运行环境中有效. 显然,当 ...
- Linux里设置环境变量的方法(export PATH)
1.动态库路径的设置 Linux下调用动态库和windows不一样.linux 可执行程序是靠配置文件去读取路径的,因此有些时候需要设置路径 具体操作如下 export LD_LIBRARY_PATH ...
- ubuntu下设置环境变量的三种方法【转】
转自:http://blog.chinaunix.net/uid-26916352-id-3208366.html 通常设置环境变量有三种方法: 一.临时设置 export PATH=/home/ya ...
- Ubuntu中设置环境变量详解
1, 为单一用户:.bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.打开用户主目录下的.bashrc,在这个文件中加入export PA ...
- Linux程序写入oralce数据库中文显示为问号??? 代码实现设置环境变量!
Linux程序写入oralce数据库中文显示为问号??? 1.问题介绍 根本原因是字符集的问题,是数据库的字符集和写入程序的linux系统的字符集不一致导致: 但是用export NLS_LANG=& ...
- Linux中使用export命令设置环境变量
Linux export 命令 2011-08-31 22:36:39| 分类: 命令总结|举报|字号 订阅 功能说明:设置或显示环境变量. ######################## ...
- 怎样在Ubuntu中设置环境变量
首先启动终端. 单击屏幕左上角的Ubuntu图标,在弹出的窗口中点击搜索栏,输入"terminal", 稍等片刻,终端就会赫然在目!二话不说,直接点击! 然后打开环境设置文 ...
- ssh连接远程主机执行脚本的环境变量问题
近日在使用ssh命令ssh user@remote ~/myscript.sh登陆到远程机器remote上执行脚本时,遇到一个奇怪的问题: ~/myscript.sh: line n: app: co ...
- 00006 - Linux中使用export命令设置环境变量
功能说明:设置或显示环境变量. #################################################################################### ...
随机推荐
- 纯WebApi,不包含MVC Demo
1.创建项目 只是单纯的使用Web API的功能,而不需要使用的MVC,这个时候就该抛开MVC来新建项目了. 首先,新建一个Asp.Net空应用程序,在程序集中添加引用System.Web.Http和 ...
- sqlmap基础使用
测试许多款 sql注入工具 最终还是发现 sqlmap 最为强悍 谁用谁知道!赶紧抛弃掉手上一大堆 sql 注入工具吧 : )测试环境:ubuntu 10.10 & windows 7(x64 ...
- centos7之zabbix简单检查之端口监控
1.创建模板 模板名字可以随便起 2.重点在监控项和触发器上. 3.比如我们创建一个监控25端口号的监控项 net.tcp.service[tcp,,25] 这个选项不是手动写上去的,是需要点击选择. ...
- java8_api_net
网络编程1 操作ip地址 核心类 InetAddress 相关方法 getByName,getAllByName,getLocalHost 操作socket地址 ...
- 【做题】agc016d - XOR Replace——序列置换&;环
原文链接 https://www.cnblogs.com/cly-none/p/9813163.html 题意:给出初始序列\(a\)和目标序列\(b\),都有\(n\)个元素.每次操作可以把\(a\ ...
- proxy Static方式
package com.xk.spring.kp04_aop.proxy.s1_static; public interface IStudentService { public void save( ...
- 对于移动端 App,虚拟机注册或类似作弊行为有何应对良策?
1.APP攻击大致策略 对APP进行攻击的一般思路包括反编译APP代码.破解APP通讯协议.安装虚拟机自动化模拟: a.首先看能否反编译APP代码(例如Android APP),如果能够反编译,从代码 ...
- 蓝桥杯 问题 1117: K-进制数 (递归)
题目链接 题目描述 考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0. 考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0. 例: ...
- 20155239《Java程序设计》实验一(Java开发环境的熟悉)实验报告
实验内容及步骤 使用JDK编译.运行简单的java程序 2.使用IDEA编辑.编译.运行.调试Java程序 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 先建立一个文件夹命名为Co ...
- Python 读取window下UTF-8-BOM 文件
with open('target.txt', 'r', encoding='utf_8_sig') as fp: print(fp.read())