一、我们常常碰到在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)
相关推荐
第二种不正确的写法则是直接使用oracle用户执行脚本,但crond的默认执行身份是root,这种情况下也无法成功执行。 3. **正确写法**: 使用`su`命令切换到oracle用户,并执行备份脚本。例如: ```plaintext 30 ...
- 在这个压缩包中的"shell-master"目录下,可能包含了多个.sh文件,这些都是可执行的shell脚本。 2. **服务安装脚本** - 通常,Web服务器如Apache或Nginx的安装过程包括下载源码、配置编译选项、编译和安装。这些...
Linux 操作题及答案 Shell 练习题 本文档涵盖了 Linux 操作系统中的一些基本概念和技术,包括文件权限、用户和组管理、文件操作、目录管理、cron 任务计划和 at 命令等。通过对实践题目和答案的解析,我们将探索 ...
MySQL数据库在日常运维中扮演着重要的角色,为了防止数据丢失,定期备份是必不可少的环节。这里我们关注的是使用shell脚本来实现MySQL的自动化备份。shell脚本是一种强大的工具,能够帮助我们编写一系列命令,实现...
在Linux系统中,PHP执行定时任务通常不依赖于PHP自身的机制,...此外,还可以参考相关文章了解更多关于Linux定时任务的配置和使用技巧,如Linux下使用`cron`定时执行PHP任务的方法,以及对`cron`的详细配置和用法说明。
在Linux环境下,使用PHP和Shell脚本实现用户注册及磁盘配额是一项常见的系统管理任务,主要用于管理和优化服务器资源的分配。以下是对该文档中提到的知识点的详细说明: 1. **用户注册流程**: - 用户通过网页界面...
cron-last-sunday 是一个用于 Linux 系统的实用工具,它扩展了标准的 cron 定时任务系统,允许用户在每月的第一个、第 n 个或最后一个工作日执行特定的 cron 任务。这个功能对于那些需要在特定工作日执行任务的自动...
`at`的工作原理类似于打印队列,它会将待执行的任务放置在`/var/spool/at`目录下,并在指定的时间执行这些任务。 ##### 2.2 at命令的时间格式 `at`命令支持多种时间格式,包括但不限于: - **固定时间**:例如`at 1...
`check_sms.sh`是一个shell脚本,用于检查特定进程的状态,并在必要时启动该进程,这样的脚本通常会配置为定时任务,如Cron job,以定期执行。以下是对该脚本可能涉及的知识点的详细解释: 1. **Shell脚本**:Shell...
4. **环境变量**:`cron`任务运行时,其环境与用户登录时的环境不同,可能需要在任务中显式设置路径和其他环境变量。 二、手动执行后台计划任务 1. **解压文件**:首先,我们需要将`testcronjob.zip`解压,这通常...
在Linux系统中,Shell脚本是一种强大的自动化工具,可以极大地提高日常管理任务的效率。本文将深入探讨如何利用Shell脚本来实现对文件和目录的自动化操作,以"shell-script-linux---Automatizacao-de-pastas-e-...
在图中,可能会显示一个编辑好的cron job,比如每天的凌晨1点执行`/path/to/tomcatRestart.sh`。 最后,`windows服务内存配置.txt`可能包含了Windows环境下为Tomcat服务调整内存分配的指导。在Windows中,Tomcat...
- 定时任务脚本:创建cron job,实现定时执行任务。 - 日志监控:编写脚本检查系统日志,发送报警邮件。 - 文件备份:利用脚本实现定期备份重要文件或目录。 - 系统信息收集:编写脚本来获取系统状态信息,如...
在Linux系统中,计划任务(Cron Job)是一种自动化任务调度机制,允许用户或系统管理员在特定时间执行脚本或程序。本教程将通过四个关键步骤教你如何在Linux上创建和管理计划任务。 1. **编写Shell脚本**(1.编写sh...
在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编程(第三版)》是一本深入探讨Unix Shell编程技术的专业书籍,适用于那些希望在Unix或类Unix操作系统环境中提升自动化任务处理能力的读者。Shell编程是Unix系统中的核心功能之一,它允许用户通过编写...
在打开的编辑器中,添加一条任务,例如:`0 3 * * * /root/dashboard/dashboard_cronjob/db_backup.sh 2>> /root/dashboard/dashboard_cronjob/db_backup.log`。这条命令表示在每天的凌晨3点执行`db_backup.sh`脚本...
Linux脚本集合是一个涵盖多种用途和功能的脚本资源库,它主要服务于那些希望在Linux环境中自动化执行任务或管理系统操作的用户。这个集合可能包含了各种类型的shell脚本,如bash、sh、ksh等,以及一些相关的配置文件...