一、我们常常碰到在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)
相关推荐
前面介绍了Linux下有多种Shell,一般缺省的是Bash,如果想更换Shell类型可以使用chsh命令。先输入账户密码,然后输入新Shell类型,如果操作正确系统会显示“Shell change”。其界面一般如下: Changing fihanging ...
cron 容器 定期在 Docker 容器内运行 ...CRONJOB_COMMAND 调度程序将使用的命令。 目前设备支持两种选择: etcbackupjob.sh和elasticsearchbackupjob.sh 。 “etcbackupjob.sh” 全球的 AWS_ACCESS_KEY_ID AWS_ACCE
使用此python脚本,shell脚本和crontab,您可以通过几个简单的步骤自动执行Google排名检查器。 我将逐步解释如何实现此功能并使它每天运行。 需要注意的一件事是,当前该脚本不使用代理来检查关键字排名,因此,...
您可以手动运行该命令,也可以通过cronjob自动执行该命令。安装您可以简单地下载脚本文件并授予可执行文件权限。 curl -0 ...
CF-Auto-UAM安装两个cronjob: 一项cronjob每15秒检查一次CPU负载,如果该负载大于10,则会启用CloudFlare在Attack Mode(攻击模式)下。 一个cronjob,每10-30分钟检查一次CPU负载,如果它小于10,则会禁用“攻击...
为运行 cronjob 的用户读取和执行脚本和 conf 目录的权限 运行 cronjob 的用户对本地备份文件夹的读写权限 偏僻的 必须备份的文件的读取权限 私有 ssh-key 的公共 ssh-key 安装 文件结构 小路 权限 ./脚本 rwx ./...
# Set proper permissioschmod 755 /home/backupsites.sh# Add to cronjob that runs at 3am0 3 * * * /home/backupsites.sh此脚本将在包含存档/组织文件的backupdir文件夹中创建每日、每周和每月子目录。...
LABB2 MED ORSKI 解决以下问题: 构建以下功能: ... cron作业设置为每5分钟执行一次,但实验室预计需要一个小时,只需将setuo_labb2.sh中cronjob中的第一个参数更改为0 IE(每隔5分钟)echo“ * /
自动数据工具链 ...| |-start.sh # shell script to start job in new container | |-Dockefile # container to build | |-.env # the global repo's .env file will be copied here | +-... | |-Script 2 folde
不带任何参数调用它将(如果正在运行)找到集合中的下一个 MAC 并切换到那个(您可以将其设置为通过 cronjob 调用)。 笔记 你需要弄清楚和纠正一些事情: hostapd.conf文件中的driver值应该是您的卡的无线驱动...
cronjob每分钟都会在队列之外处理任务。 Cron任务每隔15分钟运行一次,并将更多垃圾拉入该队列。 几个小时后,它建成了。 建造 docker-compose up --build 启动可能需要大约5分钟。 检查构建状态 docker-compose ...
这是一个简单的脚本,可在网络文件更改时通知我。 当包含下一次德国业余无线电考试的PDF发生更改时,它会特别通知我。... 使它成为cronjob并将变量文件设置为参数: ./email-on-changed-file.sh email-on-chang
) 测试Nirmata应用程序(默认) ./nirmata_test.sh --nirmata 测试本地节点的Nirmata Agent兼容性: ./nirmata_test.sh-本地集群测试(需要有效的kubectl配置): ./nirmata_test.sh-群集还有许多其他功能,例如...
更新 在 XMLRPC API 的帮助下进行动态 dns 更新的脚本。 大多数免费的 DDNS 服务,除了像或这样的好服务。 但即使是好人也保留随时... 通常您想定期执行此操作,您可以为此使用 cronjob ( crontab -e )。 去做 IPv6
DigitalOcean自动快照卷 该脚本有什么作用? 由于DigitalOcean当前不提供该卷的自动备份。 因此,我创建了脚本来调用DigitalOcean API并创建卷的快照。 成功创建后,它将删除旧...将cronjob设置为执行auto-snapshot.sh
cleanmails.sh 脚本必须定期启动(例如通过 cronjob 每小时一次)。 示例中的文件夹结构 Posteingang | --> _Wiedervorlage | --> 0_abends (um 17 Uhr) 0_Wochenende (am Freitag) 1_1h (1 Stunde) ...
托尼的维基百科刮板/镜子 这使用单个BASH脚本从Wikipedia文章下载和提取内容。 它从一篇文章作为其“种子”页面开始。...#Then run this occasionally (perhaps as a cronjob): ./wikiscrape.sh -p ``` You s
TweetDB 一种使用Twitter搜索API归档推文的准用户友好方法,它是一组python脚本,您可以轻松地使用它们通过cronjob创建推文的sqlite3数据库。 这很有用,因为如果没有一些$$$$$$$$,您将无法获得旧的tweet。 因此,...
邮件服务IP增量更改日志和导入列表 救命! 我想尝试容纳尽可能多的对收信人有效的服务! 请打开一些。 请仅要求添加您想中继的服务。... 0 0,6,12,18 * * *〜/ msipdelta / job.sh 2> / dev / null
这是一个可以作为 cronjob 或启动脚本启动的脚本,它每天都会为像服务器那样不一直在线的客户端备份到 BackupPc-Server,例如。 用于工作站。 更多内容可以在这里找到: : 如何安装? 更改 backupToBackupPC.config...