【问题标题】:Detect java program started from crontab检测从 crontab 启动的 java 程序
【发布时间】:2018-08-27 18:43:15
【问题描述】:

在 Redhat 操作系统上,我有一个启动 Java 程序的脚本。此脚本可以从命令行启动,但也由 crontab 启动(定期)。
在这个程序中,我需要知道程序是如何启动的。这是因为输出被写入 STDOUT(如果从命令行启动)或日志文件(如果由 crontab 启动)。

首先我认为我可以使用System.console()
问题是,如果程序是从命令行启动但重定向了 STDIN 和/或 STDOUT,此方法也会返回 null

知道如何解决这个问题吗?
我试过How can I check if a Java program's input/output streams are connected to a terminal?,但这并没有回答我的问题。

【问题讨论】:

    标签: java cron


    【解决方案1】:

    很多选择:

    1. 从 cron 运行时添加 -Dcron=1 命令行选项,以设置可以检查的属性
    2. 从 cron 运行时向命令行添加一个简单参数,并通过查看 args[] 数组来检查它
    3. 在脚本中设置环境变量,在程序中检查。

    【讨论】:

    • 我已经怀疑它不能自动完成。我选择第二个选项。谢谢。
    【解决方案2】:

    在启动 java 程序之前使用您在 cron 作业中设置的环境变量。查询程序内部的环境变量。

    【讨论】:

      猜你喜欢
      • 2014-03-25
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 2022-01-22
      • 1970-01-01
      • 2010-11-03
      相关资源
      最近更新 更多