Java后台执行Shell脚本, Java方法不用等待Shell程序执行完成并保证关掉Java程序Shell脚本正常运行
2013-09-05 15:26
1326 查看
首先说明,我现在要解决的两个问题:
1、如果要调用的Shell脚本是常驻内存,也就是说里面有循环不会结束的脚本,我用Java方法调用,但是不能等Shell执行完成,即调用执行一下后,我的Java方法要结束,同时还要保证Shell已经运行了;
2、用Java调用后,把Java程序杀掉,这时由Java执行的Shell脚本要保证正常运行,不能随Java程序的关闭而停止。
这里涉及到两个问题,一个是后台执行Shell脚本,一个是设置为孤立进程。后台执行Shell脚本的方法有好多种,比如直接加&,或使用Ctr+Z,也或者bg等等,还有一个就是设置为孤立进程,我查到的有这样的说法,使用setsid,nohup等等,这样的文章很多,在这我就不多说了。下面是我的解决方法:
Java后台执行Shell脚本,在关掉Java程序时保证Shell脚本正常运行,同时让JAVA方法不用等待程序执行完成就返回,使用如下 命令:
nohup ./test.sh >test.out 2>&1 &
Java程序运行就是这样:Runtime.getRuntime().exec("nohup /home/test/test.sh >/del/nul 2>&1 &");
1、如果要调用的Shell脚本是常驻内存,也就是说里面有循环不会结束的脚本,我用Java方法调用,但是不能等Shell执行完成,即调用执行一下后,我的Java方法要结束,同时还要保证Shell已经运行了;
2、用Java调用后,把Java程序杀掉,这时由Java执行的Shell脚本要保证正常运行,不能随Java程序的关闭而停止。
这里涉及到两个问题,一个是后台执行Shell脚本,一个是设置为孤立进程。后台执行Shell脚本的方法有好多种,比如直接加&,或使用Ctr+Z,也或者bg等等,还有一个就是设置为孤立进程,我查到的有这样的说法,使用setsid,nohup等等,这样的文章很多,在这我就不多说了。下面是我的解决方法:
Java后台执行Shell脚本,在关掉Java程序时保证Shell脚本正常运行,同时让JAVA方法不用等待程序执行完成就返回,使用如下 命令:
nohup ./test.sh >test.out 2>&1 &
Java程序运行就是这样:Runtime.getRuntime().exec("nohup /home/test/test.sh >/del/nul 2>&1 &");
相关文章推荐
- Java后台执行Shell脚本, Java方法不用等待Shell程序执行完成并保证关掉Java程序Shell脚本正常运行
- PHP执行shell脚本运行程序不产生core文件的方法
- Shell 脚本等待上一行执行完成再执行下一行的方法
- shell脚本运行java程序jar的方法
- 解决手动运行脚本执行正常而放入crontab后不正常的方法
- [转] 让java程序在后台一直执行(例如putty关闭后后台程序继续运行)
- 配置crontab定时执行调用java程序的shell脚本遇到的问题
- linux下运行java程序的shell脚本
- 【Linux】shell调用Java程序main方法通过crontab定时执行
- Docker - 避免启动container后运行shell脚本执行完成后docker退出container
- 一个用shell写的执行java程序的脚本
- PHP执行shell脚本运行程序不产生core文件
- 如何用Java后台执行SHELL脚本?
- java执行shell命令或者脚本,返回结果到程序
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- Mac系统下执行hadoop jar 运行在某包内的程序 提示java.lang.ClassNotFoundException的解决方法
- 运行java程序shell脚本
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- 让shell脚本在后台运行的两种方法