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

本文介绍如何使用Java方法后台执行Shell脚本,并确保在Java程序关闭后,Shell脚本仍能正常运行,包括后台执行、孤立进程设置及避免依赖于Java程序的关闭。

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

       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 &");


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值