Runtime記錄

window

1.執行jar程序:

String cmd = "cmd /c java -jar test.jar $1 $2"; $1, $2爲傳入參數。

2.mysql導出數據:

String[] cmds = new String[3];

cmds[0] = "cmd /c mysql -uroot -p123456";

cmds[1] = "use database";

cmds[2] = "source d:/abc.sql";

3.mysql導入數據:

String cmd = "mysqldump -uroot -p123456 database --skip-lock-tables table > d:/table.sql";

linux

1.執行jar程序

String cmd = "java -jar test.jar $1 $2"; $1, $2爲傳入參數。

2.mysql導出數據:

String[] cmds = new String[3];

cmds[0] = "mysql -uroot -p123456";

cmds[1] = "use database";

cmds[2] = "source /data/abc.sql";

3.mysql導入數據:

String cmd = "mysqldump -uroot -p123456 database --skip-lock-tables table -r /data/table.sql";

注意這裏不能像在window裏一樣用>重定向符,linux環境中會解析不到,所以最好統一都用 -r 參數。


1跟3的命令只需要獲取Runtime後直接執行該條命令就行:

Process process = Runtime.getRuntime().exec(cmd);

而2有多條命令,則要逐條執行:

Process process = Runtime.getRuntime().exec(cmd[0]);

OutputStreamWriter writer = new OutputStreamWriter(process.getOutputStream());

writer.write(cmds[1] + "\r\n" + cmds[2]);

writer.flush();

writer.close();

process.waitFor();是個阻塞進程。要等子進程執行完以後纔會往下執行主進程的代碼。

process.exitValue();是個非阻塞進程。

兩個方法都會得到一個int類型返回值,0代表子進程正常結束,1代表有異常終止。


以上命令中java, mysql, mysqldump都要加入了環境變量中才能直接使用,否則就要寫絕對地址.

linux中可以通過env命令查看用戶已經設置的環境變量,或者在/etc/profile中加入環境變量export JAVA_HOME=/usr/local/jdk1.6.0_45 後重新讀取一次環境變量source /etc/profile

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章