java - shell脚本从crontab调用,但脚本中的结束任务没有被执行,但手动它可以工作

标签 java python shell

我有一个用于发送通知的 shell 脚本。 shell 脚本可以通过 CLI 手动运行,但当放入 crontab 时,它不会执行其结束任务。

更具体地说,我通过将输出从 crontab 发送到 cron.log 来逐行检查脚本,该日志给出了预期的输出。但通过 java 命令发送通知的最终任务在 crontab 中仍然不起作用。

我已经检查了所有可能的条件,但不知道我缺少什么,请帮忙。

定时任务:

* * * * * bash absolute_path/script.sh > abolutepath/pushNotCron.log

shell 脚本:

#!/bin/bash

if [ condition ]
then
     some code ........
     java -jar $absPath/$jarFileName "argument"
fi

脚本中没有错误

最佳答案

问题是,当您通过 cron 启 Action 业时,默认创建的 shell 是使用最小环境创建的。要看到这一点,请尝试运行一个仅显示所有环境变量(包括 PATH)的 cron 作业。

解决这个问题的一些常见方法是:

1) 通过运行 .profile 来启动所有 cron 脚本

2) 显式调用所需的“.profile”,因此:

* * * * * bash ./.profile ; Absolute_path/script.sh > abolutepath/pushNotCron.log

3) 有一个特殊的 cron-wrapper 脚本 - 请参阅 https://stackoverflow.com/a/41756145/681444

关于java - shell脚本从crontab调用,但脚本中的结束任务没有被执行,但手动它可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58424246/

相关文章:

python - 使用 pandas 从基于时间的列中选择最新值

java - 使用 Fresco 库 android/java 将图像从手机加载到我的应用程序

java - 如何实现可以使用 Java 安全递增的多线程变量?

Java 第一次使用按键绑定(bind),按键绑定(bind)事件未在 JPanel 上注册

python - 如何将嵌套字典变成矩阵列表?

python - 解析 json 并通过它进行搜索

node.js - 在 NodeJS/Express 服务器上运行具有共享对象依赖项的二进制文件

linux - 在 bash 函数中,如何将 stdin 放入变量中

linux - 为什么两个进程同时使用一个java命令

java - 如何获取表或索引容器中的多个选定行?