检测从crontab启动的java程序

时间:2018-03-19 08:57:48

标签: java cron

在Redhat OS上,我有一个启动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?,但这并没有回答我的问题。

2 个答案:

答案 0 :(得分:3)

很多选择:

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

答案 1 :(得分:0)

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