日期:2014-05-16  浏览次数:20764 次

linux 执行 java 程序

建个类

?

?

/**
 * Hello world!
 * 
 */
public class App {
	public static void main(String[] args) throws InterruptedException {
		while (1 == 1) {
			System.out.println(args[0] + " ==================== > time "
					+ System.currentTimeMillis());
			Thread.currentThread().sleep(1000);
		}
	}
}

?

?

打成jar 包, Main-class 是A

?

?

写sheel ?test-java.sh

?

?

#!/bin/bash
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#export CLASSPATH
cd /home/guoba/lib
java -classpath $CLASSPATH -jar test.jar a &
java -classpath $CLASSPATH -jar test.jar b &
wait
java -classpath $CLASSPATH -jar test.jar c &
java -classpath $CLASSPATH -jar test.jar d &
? ? ?& 是后台执行,不同步
? ? wait 是等待上面的进程完毕后再进行

?

?

执行命令:

?

nohup ./test-java.sh > success.log 2>error.log &

?

这种是后台执行,并把标准输出重定向,关闭终端仍在执行

?

./test-java.sh?

?

输出在当前控制台,关闭该终端时,将退出启动的进程。

?

crontab -e

*/2 * * * * /home/guoba/test/test-java.sh 1>success.log 2>error.log
?每两分钟启动一次,关闭终端不影响任务

?

?

?

?

?

1 楼 sammor 2011-11-16  
补充:
因为前面shell脚本里面
java -classpath $CLASSPATH -jar test.jar a & 

后面加了&,使进程变成后台运行。

这时要查看进程进行,可以使用命令查看
ps -ef


执行该命令可以查看当前系统运行的进程。
如下格式:
UID   PID  PPID  C STIME TTY          TIME CMD


对于强制停止进程命令:
kill -9 [PID]
2 楼 sammor 2011-11-16  
上面写的脚本里面的wait,虽然是等待前面运行完,但这里面的程序写的都是死循环了,这样哪有机会执行到下面的呢?
3 楼 锅巴49 2011-11-16  
sammor 写道
补充:
因为前面shell脚本里面
java -classpath $CLASSPATH -jar test.jar a & 

后面加了&,使进程变成后台运行。

这时要查看进程进行,可以使用命令查看
ps -ef


执行该命令可以查看当前系统运行的进程。
如下格式:
UID   PID  PPID  C STIME TTY          TIME CMD


对于强制停止进程命令:
kill -9 [PID]



程序是死循环,不可能下来
这个只是做个演示
4 楼 sammor 2011-11-16  
锅巴49 写道
sammor 写道
补充:
因为前面shell脚本里面
java -classpath $CLASSPATH -jar test.jar a & 

后面加了&,使进程变成后台运行。

这时要查看进程进行,可以使用命令查看
ps -ef


执行该命令可以查看当前系统运行的进程。
如下格式:
UID   PID  PPID  C STIME TTY          TIME CMD


对于强制停止进程命令:
kill -9 [PID]



程序是死循环,不可能下来
这个只是做个演示

嗯,巴哥最近在学linux这块吗?