Java后台执行Shell脚本, Java方法不用等待Shell程序执行完成并保证关掉Java程序Shell脚本正常运行

   首先说明,我现在要解决的两个问题:


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)