• 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 "
    "))
      )
    
    (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执行脚本出现某些环境变量找不到错误时,也可以用这种方法。




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

  • 相关阅读:
    .NET旋转PDF并保存旋转结果到文件
    C#的抽象类和接口的区别,在什么时候使用才合适?
    [转]SQL Server中多行多列连接成为单行单列
    VBS脚本COPY指定日期文件及文件夹
    eval同时绑定两个值:通过String.Format给超链接中的两个参数赋值
    How to recover SA password on Microsoft SQL Server 2008 R2
    [转]asp.net 前台绑定后台变量方法总结:<%= %> 和<%# %>的区别
    Js得到radiobuttonlist选中值的两种方式
    Ameriscan增加一个新的client:AP_CONSO
    命令行处理pdf的利器:PDFTK.exe
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4866580.html
Copyright © 2020-2023  润新知