Gna*_*nam 1 linux redhat command-line-interface centos
我们每分钟都会设置一个基于 cron 的 Java 程序调用。该 Java 程序调用是用 shell 脚本编写的,并设置为cron作业。每个调用的 Java 程序都定向到其自己单独的日志文件(使用日期和时间作为文件名,精确到分钟),如下所示:
调用javaprogram.sh
DATE=`date +%Y-%m-%d_%H-%M`
/usr/java/jdk1.6.0/bin/java -Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError MyJavaProgram 2>&1 >> $DATE.log | tee -a $DATE.err >> $DATE.log &
Run Code Online (Sandbox Code Playgroud)
例如,我可以使用以下命令随时查找当前正在运行的Java进程(MyJavaProgram):
[root@user ~]# ps -ef |grep MyJavaProgram
user 4321 1 0 Oct17 ? 00:00:17 /usr/java/jdk1.6.0/bin/java -Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError MyJavaProgram
user 5747 1 0 Oct17 ? 00:00:11 /usr/java/jdk1.6.0/bin/java -Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError MyJavaProgram
Run Code Online (Sandbox Code Playgroud)
我的问题是,我想找出当前正在执行的Java 进程 (MyJavaProgram) 正在写入的实际日志文件名。因此,例如,如果MyJavaProgram
当前有 2 个进程正在执行,我想知道每个进程的日志文件名。在这种情况下,我感兴趣/想知道.log
扩展文件,尽管有 2 个扩展名 -.log
和.err
.
注意:日志文件名以此模式生成,2011-10-17_19-28.log
例如 。我们的服务器是RHEL4。
命令“lsof”可能会帮助您。
lsof | grep $PID |grep .log
Run Code Online (Sandbox Code Playgroud)
或类似的内容应该会为您提供进程正在访问的文件列表。
归档时间: |
|
查看次数: |
12779 次 |
最近记录: |