`
Josh_Persistence
  • 浏览: 1649957 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Linux执行Cron Job失败,在Shell sh下执行却能成功 - 环境变量?

阅读更多

一、我们常常碰到在shell下执行某个命令能够成功,比如执行一个java程序:

java -jar /home/opscoder/topo-audit.jar,但是在crontab下执行会失败。

cornjob为 0 10 * * * java -jar /home/opscoder/topo-audit.jar: 即每天10点去执行这个jar中的main方法

二、查找失败的原因,即查看crotab的执行log, 有如下3种方法,我所用的是ubantu的机器,使用的是方法1、 mail任务(Linux UNIX)在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。

 

2、针对UINX系统查询方法(AIX、HP-UX)

在 /var/spool/cron/tmp文件中,有croutXXX00999的tmp文件,tail 这些文件就可以看到正在执行的任务了。

 

3、针对Linux系统的查询方法(含Redhat、SUSE)

看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察

配图为系统aix root用户默认的crontab

 

三、针对我的情况,从log中可以看出是/bin/sh: java command not found

这就说明了cron使用的环境变量不是系统的环境变量,而是自己的环境变量,说白了,就是crontab不能读取到/etc/profile下的信息。

 

四、解决方法:

1、修改crontab来调用一个脚本,而不是直接执行这个jar

即将:cornjob为 0 10 * * * java -jar /home/opscoder/topo-audit.jar

修改为:0 10 * * * /home/opscoder/topo-check.sh

 

2、创建topo-check.sh

touchtopo-check.sh   #创建topo-check.sh文件
vi topo-check.sh         #编辑topo-check.sh文件,并输入如下内容


#!/bin/bash
source /etc/profile
java -jar /home/opscoder/topo-audit.jar


保存退出。
chmod +x topo-check.sh    #给topo-check.sh可执行权限

这样就大功告成了,需要注意的是需要加上#!/bin/bash,不然crontab可能还是不能执行成功,使用如上的3中方法之一来查看crontab的log,你会发现类似: /bin/sh command /home/opscoder/topo-check.sh not found

 

附:如果当前用户不能启动crontab,可以使用具有sudo权限或者具有启动权限(service)的用户先启动crontab(service cron status, service cron start, service cron start),然后再切回该用户创建或者cron job(crontab -e)

 

 

0
0
分享到:
评论

相关推荐

    crond 执行ORACLE rman备份脚本失败的几种情况及解决

    第二种不正确的写法则是直接使用oracle用户执行脚本,但crond的默认执行身份是root,这种情况下也无法成功执行。 3. **正确写法**: 使用`su`命令切换到oracle用户,并执行备份脚本。例如: ```plaintext 30 ...

    linux-一些常用的shell脚本用于webserver的服务安装线上代码发布推送等

    - 在这个压缩包中的"shell-master"目录下,可能包含了多个.sh文件,这些都是可执行的shell脚本。 2. **服务安装脚本** - 通常,Web服务器如Apache或Nginx的安装过程包括下载源码、配置编译选项、编译和安装。这些...

    linux操作题及答案shell练习题.pdf

    Linux 操作题及答案 Shell 练习题 本文档涵盖了 Linux 操作系统中的一些基本概念和技术,包括文件权限、用户和组管理、文件操作、目录管理、cron 任务计划和 at 命令等。通过对实践题目和答案的解析,我们将探索 ...

    Mysql备份可以执行的shell脚本

    MySQL数据库在日常运维中扮演着重要的角色,为了防止数据丢失,定期备份是必不可少的环节。这里我们关注的是使用shell脚本来实现MySQL的自动化备份。shell脚本是一种强大的工具,能够帮助我们编写一系列命令,实现...

    linux实现php定时执行cron任务详解

    在Linux系统中,PHP执行定时任务通常不依赖于PHP自身的机制,...此外,还可以参考相关文章了解更多关于Linux定时任务的配置和使用技巧,如Linux下使用`cron`定时执行PHP任务的方法,以及对`cron`的详细配置和用法说明。

    linux下使用php shell实现用户注册及磁盘配额.doc

    在Linux环境下,使用PHP和Shell脚本实现用户注册及磁盘配额是一项常见的系统管理任务,主要用于管理和优化服务器资源的分配。以下是对该文档中提到的知识点的详细说明: 1. **用户注册流程**: - 用户通过网页界面...

    cron-last-sunday:在每月的第一个,第n个或最后一个工作日运行cron任务

    cron-last-sunday 是一个用于 Linux 系统的实用工具,它扩展了标准的 cron 定时任务系统,允许用户在每月的第一个、第 n 个或最后一个工作日执行特定的 cron 任务。这个功能对于那些需要在特定工作日执行任务的自动...

    at&cron.pdf

    `at`的工作原理类似于打印队列,它会将待执行的任务放置在`/var/spool/at`目录下,并在指定的时间执行这些任务。 ##### 2.2 at命令的时间格式 `at`命令支持多种时间格式,包括但不限于: - **固定时间**:例如`at 1...

    Liunx 进程监控 shell

    `check_sms.sh`是一个shell脚本,用于检查特定进程的状态,并在必要时启动该进程,这样的脚本通常会配置为定时任务,如Cron job,以定期执行。以下是对该脚本可能涉及的知识点的详细解释: 1. **Shell脚本**:Shell...

    手动执行后台计划任务testcronjob.zip

    4. **环境变量**:`cron`任务运行时,其环境与用户登录时的环境不同,可能需要在任务中显式设置路径和其他环境变量。 二、手动执行后台计划任务 1. **解压文件**:首先,我们需要将`testcronjob.zip`解压,这通常...

    shell-script-linux---Automatizacao-de-pastas-e-arquivos:通过提示de comando自动执行意大利面和面食的操作

    在Linux系统中,Shell脚本是一种强大的自动化工具,可以极大地提高日常管理任务的效率。本文将深入探讨如何利用Shell脚本来实现对文件和目录的自动化操作,以"shell-script-linux---Automatizacao-de-pastas-e-...

    linux和windows启动tomcat脚本

    在图中,可能会显示一个编辑好的cron job,比如每天的凌晨1点执行`/path/to/tomcatRestart.sh`。 最后,`windows服务内存配置.txt`可能包含了Windows环境下为Tomcat服务调整内存分配的指导。在Windows中,Tomcat...

    Shell脚本编程入门100例

    - 定时任务脚本:创建cron job,实现定时执行任务。 - 日志监控:编写脚本检查系统日志,发送报警邮件。 - 文件备份:利用脚本实现定期备份重要文件或目录。 - 系统信息收集:编写脚本来获取系统状态信息,如...

    制作linux计划任务教程.zip

    在Linux系统中,计划任务(Cron Job)是一种自动化任务调度机制,允许用户或系统管理员在特定时间执行脚本或程序。本教程将通过四个关键步骤教你如何在Linux上创建和管理计划任务。 1. **编写Shell脚本**(1.编写sh...

    Kettle简单参数化配置连接数据库

    在Unix/Linux环境下,我们可以使用Shell脚本来自动化Kettle作业的执行: 1. **创建Shell脚本**:编写一个名为“sh执行kettle文件.sh”的脚本,内容如下: ``` #!/bin/bash kitchen.sh -param:DB_URL=$1 -param:...

    一些简单的小命令

    本文将详细介绍如何在 Linux 下编写 Shell 脚本,并利用 Crontab 来实现定时任务。 #### 一、Shell 脚本基础 **1. 创建 Shell 脚本** - **Shebang 行**:在脚本的第一行添加 `#!/bin/sh`,这告诉系统使用 bash ...

    Unix.Shell编程(第三版).zip

    《Unix Shell编程(第三版)》是一本深入探讨Unix Shell编程技术的专业书籍,适用于那些希望在Unix或类Unix操作系统环境中提升自动化任务处理能力的读者。Shell编程是Unix系统中的核心功能之一,它允许用户通过编写...

    linux中使用crontab定时生成mysql数据库的sql备份压缩gz文件.pdf

    在打开的编辑器中,添加一条任务,例如:`0 3 * * * /root/dashboard/dashboard_cronjob/db_backup.sh 2>> /root/dashboard/dashboard_cronjob/db_backup.log`。这条命令表示在每天的凌晨3点执行`db_backup.sh`脚本...

    linux脚本集合

    Linux脚本集合是一个涵盖多种用途和功能的脚本资源库,它主要服务于那些希望在Linux环境中自动化执行任务或管理系统操作的用户。这个集合可能包含了各种类型的shell脚本,如bash、sh、ksh等,以及一些相关的配置文件...

Global site tag (gtag.js) - Google Analytics