您的位置:首页 > 运维架构 > Shell

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 &");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: