最近快要过年了,在研究Java程序直接调用linux脚本,保障系统故障时自动重启,虽然简单,但还是要记录一下,以免踩坑。

1、编写shell脚本

在服务器指定目录编写好本次要执行的shell脚本,如下图。

2、编写Java程序

本次编写的Java程序是基于ProcessBuilder调用shell脚本,可谓是非常简单明了了~

示例代码如下:

   /*** java程序调用shell脚本*/public void autoRunShell(){try{log.info("autoRunShell start......");//要执行的shell脚本命令文件String command = "./test.sh";//要执行的命令所在目录pathString path = "/data/service-control/backup";//1.执行命令,要先切换目录ProcessBuilder processBuilder = new ProcessBuilder();//切换目标目录processBuilder.directory(new File(path));//添加要执行的命令processBuilder.command(command);Process ps = processBuilder.start();int execStatus  = ps.waitFor(); //阻塞,直到上述命令执行完,返回为0则表示执行成功log.info("autoRunShell execStatus:"+execStatus+",返回为0表示执行成功");log.info("autoRunShell stop......");}catch (Exception e){log.error("autoRunShell:error:"+e.getMessage(),e);}}

3、运行Java程序

上面编写好了shell脚本以及Java程序后,只需要执行Java程序,就可以达到目的了,是不是很简单。

程序执行后的目录截图

PS:调用脚本时如果有权限问题的话,可通过下面的代码进行赋权。

赋权的代码:

   /*** java程序调用shell脚本,并且附带权限控制*/public void autoRunShellWithChmod(){try{log.info("autoRunShellWithChmod start......");//要执行的命令String command = "./test.sh";//要执行的命令所在目录pathString path = "/data/service-control/backup";//0.赋权:如果权限不够的话,需要先赋权ProcessBuilder processBuilder0 = new ProcessBuilder("/bin/chmod","755",command);processBuilder0.directory(new File(path));Process ps0 = processBuilder0.start();int chmodStatus  = ps0.waitFor(); //阻塞,直到上述命令执行完log.info("autoRunShellWithChmod chmodStatus:"+chmodStatus+",返回为0表示赋权成功");//1.执行命令,要先切换目录ProcessBuilder processBuilder = new ProcessBuilder();//先切换目标目录processBuilder.directory(new File(path));processBuilder.command(command);Process ps = processBuilder.start();int execStatus  = ps.waitFor(); //阻塞,直到上述命令执行完,返回为0则表示执行成功log.info("autoRunShellWithChmod execStatus:"+execStatus+",返回为0表示执行成功");log.info("autoRunShellWithChmod stop......");}catch (Exception e){log.error("autoRunShellWithChmod:error:"+e.getMessage(),e);}}

编码不易,不喜勿喷~

Java程序调用linux脚本-简单版相关推荐

  1. java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本

    举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...

  2. Java程序调用c语言程序

    Java程序调用自定义c语言程序 计算机中有很多的编程语言,各有各的特色和应用范围.Java混合编程就是Java程序和其它应用程序进行通讯和数据交互,比如我们都知道c语言的计算性能要比Java的略好一 ...

  3. Java程序调用MATLAB接口

    Java程序调用MATLAB接口 文章目录 Java程序调用MATLAB接口 一.注意事项 二.环境安装 三.MATLAB如何生成JAR包 四.MATLAB生成的JAR包如何引入到Java程序中 五. ...

  4. java程序设计基础_陈国君版第五版_第七章例题

    java程序设计基础_陈国君版第五版_第七章例题 class Cylinder {private double radius;private int height;private double pi ...

  5. java程序设计基础_陈国君版第五版_第八章例题

    java程序设计基础_陈国君版第五版_第八章例题 class Person{private String name;private int age;public Person(){System.out ...

  6. java 采集rtsp_通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口步骤概览

    RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访问视频监控,也可以通过调用二次开发接口进行二次开发或者集成.下面介绍下Java程序调用Easy ...

  7. java调用easyxml接口_【技术教程】如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口?...

    原标题:[技术教程]如何通过Java程序调用RTSP拉流协议视频平台EasyNVR程序接口? RTSP协议视频平台EasyNVR经过多年的积累,已经是一套成熟且完善的视频平台了,用户可以通过网页直接访 ...

  8. python脚本编程实例_C程序调用Python脚本的例子

    下面我们一起来看看关于C程序调用Python脚本的例子,如果你对此有兴趣的希望此教程对各位同学会有所帮助. 代码如下 复制代码 #include int main(){ PyObject * g_pM ...

  9. java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)

    oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数. 下面是详细情况说明: 一:无返回值的存储过程调用 存储过程: creat ...

  10. java程序调用时的调用规则,Java程序调用ILog规则出错

    Java程序调用ILog规则出错 各位大虾,想请教各位一个问题,was调用ILog,WAS应用和ILog规则部署在不同的机器上. 报错信息如下: [5/9/11 20:29:55:460 GMT+08 ...

最新文章

  1. 一文了解 lambda 用法与源码分析
  2. Python真神奇,带你体验另类的“全自动编程”
  3. VLDB 2019 | 揭秘腾讯TDSQL全时态数据库系统
  4. linux集群命令关闭其中一台,自己整理的一点Linux命令集
  5. [js] 代码中如果遇到未定义的变量,会抛出异常吗?程序还会不会继续往下走?
  6. JavaEE实战班第六天
  7. oracle数据库速度测试,ORACLE数据库测试数据插入速度
  8. 2015软件测试视频教程
  9. 工业相机快门类型:卷帘快门和全局快门——哪个最好?
  10. php utc 北京时间,美国各个时区转换成北京时间 utc gmt
  11. 民进自强进修学院 计算机,#民进自强#中复班学生周记摘录
  12. Go语言学习查缺补漏ing Day1
  13. 第二证券|鲍威尔发声:释放重磅信号,美股大涨!中概股狂涨
  14. Unity 调用系统自带的虚拟键盘
  15. 神经架构搜索(NAS)2020最新综述:挑战与解决方案
  16. 利用Instrumentation单元测试模块控制安卓手机进行各项操作(微信)
  17. js的dom操作,onmouseover事件,onmouseleave事件,定时器
  18. centos7 vi保存退出_linux vi保存退出命令 (如何退出vi)
  19. CentOS7搭建keepalived+DRBD+NFS高可用共享存储
  20. 利用声网进行屏幕共享及关闭共享网络状态检测

热门文章

  1. 四款主流同步软件介绍
  2. 网易云NCM格式转换器
  3. 计算机高等数学试题及答案,北大计算机系考研_历年高等数学真题附答案
  4. Python 求水仙花数
  5. Proteus安装图文教程
  6. 24小时C语言从入门到精通「建议收藏」
  7. java web工程师百度云教程_JavaWeb工程师全套视频教程 (初级+中级+高级) 一共485集 送面试辅导...
  8. 操作系统概念 学习笔记
  9. 计算机端口详解(总结)
  10. 找图点击-找图自动点击全能模拟王软件