添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

写了个shell脚本,是用hive拉取数据之后存在一个文件中,再调用一个python脚本以邮件的附件形式将这个文件发送出去。直接运行的时候完全没有问题,但是我准备每天弄一个任务定时发送邮件,在crontab 中写好了相应的语句,等了一会儿发现没有发送邮件。

纳尼?这是为什么呢?运行的脚本写的也是绝对路径啊。。。

鉴于我觉得这是个非常简单的功能,我一开始是没有写入日志的,后来我将标准错误输出写入到一个日志中,我发现上面写着:

hive:command not found

no module named argparse found。

上网百度了一下,发现是crontab的环境变量和自己运行时的环境变量不同导致,而python中no module named argparse found大概是因为crontab中使用的python版本不支持argparse模块。

crontab环境变量的获取:在 crontab中加入一条printenv >xx/xx/xx/env.txt(都要使用绝对路径)

在shell脚本中加入

1)source /etc/profile #嗯,一开始我没加

2)然后用locate /bin/hive找出对应一个hive的位置,当然由于向下兼容,当然找的是最新版本的hive的位置,将原本的hive命令改成绝对路径

3)最后在调用python时,我打完python按了两下tab键,所有的python版本号就出现了,机子上最高的版本是python2.7,就用locate找出对应的python位置,

用/usr/local/bin/python2.7替代原本的python。

简而言之,就是所有能用到绝对路径的地方都使用绝对路径,然后用的版本尽可能地高,毕竟一般都是向下兼容吗。

做个纪念= =

2016.9.1日

运行一个程序出现了 /bin/sh: hive: command not found

这个是在一个python脚本中调用hive出错,查了一天,顺手把脚本都优化了,还是没有查出来为什么。

我一直以为是由于一开始调用的hive出错,但是后来才发现是python脚本内调用的hive除了问题。搜索/bin/sh: hive: command not found 没找到相关结果,

搜索python/bin/sh: hive: command not found 就发现了这篇文章,唉,对,我之前写的。

其实这个问题也是由于crontab引起的,但是由于我直接在crontab内调用了python脚本导致的,直接调用的时候,找不到hadoop_home,写成绝对路径也没用。

于是最后写了了shell脚本,在shell内调用python,同时在脚本内加入

. /etc/profile

简而言之,就是能用sh的地方尽量用sh ,很少出问题, =  =

再做个纪念=  =

相信很多人看完docker容器, 需要加 crontab , 加完却发现不能执行,心塞…..接着便开始各种折腾… 首先当然是看日志了, 发现/var/log 下面没有任何信息, 那是因为你没有打开rsyslog. # /etc/init.d/rsyslog start 继续看日志 # tail /var/log/crond Dec 29 16:39:01 web01-50794 crond[2839]: (root) FAILED to open PAM security session (Cannot make/remove an entry for the specified sessio
python Python 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import airfl...
背景:在shell脚本中简单定义 hive 的命令,并且通过 crontab 任务机制去调度,实现定 动态添加 hive 表分区。 **环境:**hadoop2.5.2+ hive 0.14(0.13)+zk3.3 问题描述: shell脚本如下:target_date=`date '+%Y-%m-%d' -d "+2 days"` inc_mon=`date '+%Y%m' -d "0 days $ta
easy_install argparse 如果没有root权限,As a simple solution copy argparse .py from https://code.google.com/p/ argparse /source/browse/ argparse .py to your project folder. https://... 在hdfs和mysql启动的前提下,输入命令想要启动 hive ,报错提示 command not found,于是想会不会是 hive 的环境变量配置有误造成的呢?然后通过检查配置文件,做出相应修改后,成功启动 hive 。 (1)sudo vim profile 查看profile文件中, hive 安装路径是否有误,我是错在这里了,导致得修改之后的多个配置文件。 修改完,保存... #原则相冲突,请谅解,勿喷 Module NotFoundError: No module named ‘xxx’ 分析 这个问题只要是用过 python 的人,一般或多或少都会遇到过这个问题,这个问题其实很明确,就是你import的 module 找不到。 关于为啥找不到的原因,倒是有很多花里胡哨原因。 Python module 的搜索路径 python module 搜索路径,其实是编译 python 候就有相关的
编写背后:昨天移植无线网卡到mini2440基本完成到最后一步:用命令:iwlist scanning  搜索网络 串口终端却 出现 了 -/bin/sh: iwlist  not  found ,后来请教老范老师点拨知道是库问题,最后自己找到问题、解决问题,才有此引发有所总结......  关于-/bin/sh:xx(命令) not found  的几种原因: 1./bin/目录下没有这个命令;
问题一: cc adlist.o /bin/sh:1:cc:not found 问题原因:这是由于系统没有安装gcc环境,因此在进行编译 才会 出现 上面提示,当安装好gcc后再进行编译 ,上面错误提示将消失。 具体解决方法:    1)首先安装gcc:  切换到root用户, 运行 sudo apt-get instal
当在 Linux 操作系统中执行定 任务 ,可能会 出现 "bash: 0: command not found" 错误提示。这是由于 crontab 中设置的命令或脚本无法被解析,执行失败导致的错误。 解决此问题的方法包括: 1. 检查 crontab 文件中命令或脚本是否正确,确保指定了完整路径或命令别名。 2. 确保命令或脚本具有可执行权限,可使用 chmod 命令进行设置。 3. 确认系统环境变量设置正确。某些命令可能需要特定的环境变量才能正常执行,可以将它们添加到 crontab 文件中。 4. 在 crontab 文件中添加日志记录,便于查看定 任务执行情况和错误信息。 总之, "bash: 0: command not found" 错误提示通常是由于执行命令或脚本 出现 问题导致的,需要进行逐一排查和调试。