热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shell脚本没有通过crontab运行,手动运行正常-shellscriptnotrunningviacrontab,runsfinemanually

Ihavetriedexportingmypathsandvariablesandcrontabstillwillnotrunmyscript.ImsureIa

I have tried exporting my paths and variables and crontab still will not run my script. I'm sure I am doing something wrong.

我已经尝试导出我的路径和变量,而crontab仍然不会运行我的脚本。我确定我做错了什么。

I have a shell script which runs a jar file. This is not working correctly.

我有一个运行jar文件的shell脚本。这不能正常工作。

After reading around I have read this is commonly due to incorrect paths due to cron running via its own shell instance and therefore does not have the same preferences setup as my profile does.

阅读后我读到这通常是由于cron通过自己的shell实例运行而导致的路径不正确,因此没有与我的配置文件相同的首选项设置。

Here is what my script looks like today after several modifications:

以下是经过多次修改后我的脚本今天的样子:

#!/bin/bash --

. /root/.bash_profile

/usr/bin/java -jar Pharmagistics_auto.jar -o

...

those are the most important pieces of the script, the rest are straightforward shell based.

那些是脚本中最重要的部分,其余部分都是基于shell的。

Can someone tell me what I am doing wrong?

有人能告诉我我做错了什么吗?

6 个解决方案

#1


13  

Try specifying the full path to the jar file:

尝试指定jar文件的完整路径:

/usr/bin/java -jar /path/to/Pharmagistics_auto.jar -o

#2


3  

I would just tell you what you have already ruled out: Check your path and environment.

我只想告诉你你已经排除了什么:检查你的路径和环境。

Since you have alredy done this, start debugging. Like write checkpoints into a logfile to see how far your script gets (if even started at all), check the cronjob log file for errors, check your mail (cron sends mails on errors) and so on ...

既然已经完成了这项工作,就开始调试。就像将检查点写入日志文件以查看脚本获取的距离(如果甚至根本没有启动),检查cronjob日志文件是否有错误,检查邮件(cron发送错误邮件)等等......

Not very specific, sorry.

不是很具体,抱歉。

#3


2  

"exporting my paths and variables" won't work since crontab runs in a different shell by a different user.

“导出我的路径和变量”将无法工作,因为crontab由不同的用户在不同的shell中运行。

Also, not sure if this is a typo in how you entered the question, but I see:

此外,不确定这是否是您输入问题的错误,但我看到:

usr/bin/java

...and I can't help but notice you're not specifying the fully qualified path. It's looking for a directory named "usr" in the current working directory. Oft times for crontab, the cwd is undefined, hence your reference goes nowhere.

......我不禁注意到你没有指定完全合格的路径。它正在寻找当前工作目录中名为“usr”的目录。对于crontab来说,cwd是未定义的,因此你的引用无处可去。

Try specifying the full path from root, like so:

尝试从root指定完整路径,如下所示:

/usr/bin/java

Or, if you want to see an example of relative pathing in action, you could also try:

或者,如果您想查看相关路径的示例,您还可以尝试:

cd /

usr/bin/java

#4


1  

A few thoughts.

一些想法。

  1. Remove the -- after the #!/bin/bash
  2. 删除#后面的#!/ bin / bash

  3. Make sure to direct script output seen by cron to mail or somewhere else where you can view it (e.g. MAILTO=desiredUser)
  4. 确保将cron看到的脚本输出定向到邮件或您可以查看的其他位置(例如MAILTO = desiredUser)

  5. Confirm that your script is running and not blocked by a different long-running script (e.g. on the second line, add touch /tmp/MY_SCRIPT_RAN && exit)
  6. 确认您的脚本正在运行且未被其他长时间运行的脚本阻止(例如,在第二行,添加touch / tmp / MY_SCRIPT_RAN &&退出)

  7. Debug the script using set -x and set -v once you know it's actually running
  8. 一旦知道它实际正在运行,就使用set -x调试脚本并设置-v

#5


0  

Do you define necessary paths and env vars in your personal .profile (or other script)? Have you tried sourcing that particular file (or is that what you're doing already with /root/.bash_profile?)

您是否在个人.profile(或其他脚本)中定义了必要的路径和环境变量?您是否尝试过采购该特定文件(或者您正在使用/root/.bash_profile做什么?)

Another way of asking this is: are you certain that whatever necessary paths and env vars you expect are actually available?

另一种问这个问题的方法是:你确定你所期望的任何必要的路径和环境实际可用吗?

If nothing else, have you tried echo'ing individual values or just using the "env" command in your script and then reviewing the stdout?

如果没有别的,您是否尝试过回显单个值或只是在脚本中使用“env”命令然后查看标准输出?

#6


0  

provide full paths to your jar file, and what user are you running the crontab in? If you set it up for a normal user, do you think that user has permission to source the root's profile?

提供jar文件的完整路径,以及运行crontab的用户是什么?如果您为普通用户进行设置,您认为该用户是否有权获取根的配置文件?


推荐阅读
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • [转载]从零开始学习OpenGL ES之四 – 光效
    继续我们的iPhoneOpenGLES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可 ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
  • uboot与linux驱动1.uboot本身是裸机程序(1)在裸机中本来是没有驱动概念的(狭义的驱动概念是指在操作系统中用来具体操控硬 ... [详细]
  • 用ESP32与Python实现物联网(IoT)火焰检测报警系统
    下图是本案例除硬件连线外的3步导学开发过程,每个步骤中实现的功能请参考图中的说明。在硬件连线完成之后我们建议您先使用“一分钟上云体验”功能预先体验本案例的实际运行效果 ... [详细]
author-avatar
wing96333
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有