在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?,但这并没有回答我的问题。
答案 0 :(得分:3)
很多选择:
-Dcron=1
命令行选项,以设置可以检查的属性args[]
数组答案 1 :(得分:0)
使用在启动java程序之前在cron作业中设置的环境变量。查询程序中的环境变量。