crontab 调用shell 脚本不运行

最近用crontab 调用一个shell 脚本,并且shell脚本里面调用一个python脚本

其实就是嫌弃python 写一个判断麻烦,就用shell 写了一个if判断 为真的情况下 运行这个python脚本。

但是部署以后 直接sh test.sh 脚本运行没有问题,但是放到crontab中死活就是不运行 在此记录下原因

原因一:shell脚本中调用了一个命令  ip addr |egrep  这种情况下,ip这个名声是在/sbin下,但是crontab 调用的环境变量目录是 /bin  所以crontab中调用shell脚本的时候 运行失败

解决方法:查看shell 脚本中调用的命令是否有默认环境变量目录不在/bin的命令,然后在脚本中修改成绝对路径

原因二:shell脚本中语法有错误,这个直接  sh -x 自己调试吧

原因三:python 脚本开头没有注明环境变量。所以在shell脚本中运行失败

解决方法:在py脚本中添加

#!/usr/bin/env python

另外在部署这个脚本的时候,开发脚本的同事写注释用的中文,但是奇葩的是,他竟然没有吧中文编码在脚本中标明。导致运行脚本的时候报错。同样数据库也接受不到数据。所以亲们:如果你的python脚本中如果有中文或者中文注释的话 请一定要记得添加

# -*- coding:utf-8 -*-

标明这个编码方式

时间: 2024-08-28 01:54:19

crontab 调用shell 脚本不运行的相关文章

[Shell]crontab 执行任务调用shell脚本,相对路径无法找到

问题出现的场景大概就是 1  cron调用一个python脚本 2  python脚本中调用一个shell脚本(对日志分析)获取shell输出然后发送邮件 类似一个监控任务. 直接执行python脚本没有问题,但是写在cron中之后,shell脚本中的相对路径就找不到了,总是提示无法找到某些文件 后来解决的问题就是使用log文件的绝对路径,运行就正常了. google了一些,发现很多人也遇到过类似的问题,可能和cron的机制有关系. 大部分人的问题都是因为环境变量造成的,因为cron是一个独立进

基于sparksql调用shell脚本运行SQL

[Author]: kwu 基于sparksql调用shell脚本运行SQL,sparksql提供了类似hive中的 -e  , -f ,-i的选项 1.定时调用脚本 #!/bin/sh # upload logs to hdfs yesterday=`date --date='1 days ago' +%Y%m%d` /opt/modules/spark/bin/spark-sql -i /opt/bin/spark_opt/init.sql --master spark://10.130.2

python学习之--调用shell脚本

python调用Shell脚本,有很多种方法,下面给出了三个python中执行shell命令的方法 第一种方案:os.system os.system返回脚本的退出状态码 现有一个shell脚本1.sh <span style="font-size:14px;"><span style="font-size:18px;"><span style="font-size:12px;">#!/bin/sh echo

Java 调用 shell 脚本详解

这一年的项目中,有大量的场景需要Java 进程调用 Linux的bash shell 脚本实现相关功能. 从之前的项目中拷贝的相关模块和网上的例子来看,有个别的"陷阱"造成调用shell 脚本在某些特殊的场景下,有一些奇奇怪怪的bug. 大家且听我一一道来. 先看看网上搜索到的例子: [java] view plain copy package someTest; import java.io.BufferedReader; import java.io.IOException; im

[Python]在python中调用shell脚本,并传入参数-02python操作shell实例

首先创建2个shell脚本文件,测试用. test_shell_no_para.sh 运行时,不需要传递参数 test_shell_2_para.sh 运行时,需要传递2个参数  test_shell_no_para.sh 内容如下:  test_shell_2_para.sh内容如下 注意含有变量的字符串要用 双引号 括起来 直接在命令行运行 test_shell_2_para.sh 执行结果如下: [email protected]348-G4:~$ sh test_shell_2_para

Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件

本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.HashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import

crontab里shell脚本将top信息写入文件

crontab里shell脚本将top信息写入文件: 注: 1.top -n 1代表执行1次退出(默认top是不退出的),-d 1代表每1秒执行1次 2.crontab里需加/bin/bash # crontab -e */5 * * * * /bin/bash /usr/local/bin/top.sh # vi top.sh #!/bin/bash Date=`date +%Y%m%d` Date2=`date +%Y%m%d_%H%M` Date3=`date +%Y%m%d -d "7

java调用shell脚本且传递参数

在最近的工作中,需要用到Java要调用shell脚本的情况.总结如下: @RequestMapping("/changePermission") public String changePermission(){ String returnCode = ""; try { Process process = Runtime.getRuntime().exec("chmod 755 /tmp/upgrade.sh"); process.waitFo

Linux问题:Crontab 执行shell脚本时相对路径的问题,不能识别。

问题描述:在linux中的直接执行shell脚本可以用相对路径找到文件,但是如果通过计划任务crontab执行shell脚本时,却不能通过相对路径找到文件! 例子: shell脚本文件代码~ #! /bin/sh Logfile = './1.txt'; date >> $Logfile; echo '------'; 直接执行shell脚本,可以在1.txt文件中看到执行结果,但是如果用crontab计划任务去执行,却在1.txt中看不到执行结果.换成绝对路径就可以,代码如下 #! /bin