shell 启动程序

Java程序多数情况下都会用到一些第三方的类库,如果仅用到几个jar文件,写到java命令里就好,但是依赖的jar文件很多的情况,写到java命令里就不好了,而且如果jar文件被替换,名字变了,就需要改java命令,所以最好在启动命令里不出现jar文件名。假设程序依赖的类库jar文件存放在同级的lib目录下,

简单的:

java -Djava.ext.dirs=lib -Djava.library.path=lib com.myapp.MyAppClass $*

这个写法绝大部分情况下都是正确有效的,但是曾经在启动一个用Spring框架写的程序时失败,总报告某些类找不到,实际上都已在lib目录下,原因不明。

下面换个方法,把依赖的jar文件都加入环境变量CLASSPATH,并且前面还增加了程序是否已启动的检查。

 

Shell代码 复制代码  收藏代码
  1. #!/bin/sh   
  2. ##############   
  3. #判断是否程序已启动   
  4. jappname='MyAppClass'  
  5. javaps=`jps`   
  6. i=0  
  7. psid=0  
  8. for psresult in $javaps   
  9. do   
  10.   let cur=i%2  
  11.   if [ $cur -eq 0 ]; then   
  12.     psid=$psresult   
  13.   else   
  14.     if (test "$psresult" = "$jappname")   
  15.     then   
  16.         echo "程序"$jappname"[pid="$psid"]已经启动!"  
  17.         exit 0  
  18.     fi         
  19.   fi   
  20.   let i++;   
  21. done   
  22. #引入依赖类库到类路径    
  23. export CLASSPATH=.   
  24. pathtmp=''  
  25. for jarpath in `ls lib/*.jar`   
  26. do   
  27.    CLASSPATH=$CLASSPATH:$jarpath      
  28. done   
  29. export CLASSPATH=$CLASSPATH   
  30. java -server com.myapp.MyAppClass $*  
#!/bin/sh###############判断是否程序已启动jappname='MyAppClass'javaps=`jps`i=0psid=0for psresult in $javapsdo  let cur=i%2  if [ $cur -eq 0 ]; then    psid=$psresult  else    if (test "$psresult" = "$jappname")	then        echo "程序"$jappname"[pid="$psid"]已经启动!"		exit 0    fi		  fi  let i++;done#引入依赖类库到类路径 export CLASSPATH=.pathtmp=''for jarpath in `ls lib/*.jar`do   CLASSPATH=$CLASSPATH:$jarpath   doneexport CLASSPATH=$CLASSPATHjava -server com.myapp.MyAppClass $*

 

 

附带一个关闭大量Java进程的脚本

服务器上部署的有JBoss和十几个Java程序,测试时经常需要把这十几个Java程序重启一遍,把Java进程全kill掉的话,JBoss也会被杀掉,但是JBoss不需要重启,一个一个用ps命令找pid,再挨个kill?程序太多,无法忍受。JDK里有个小工具叫jps,可以列出当前的Java进程,利用这个jps写了一个杀掉除指定进程之外的所有Java进程的shell脚本。

 

Shell代码 复制代码  收藏代码
  1. #####################   
  2. #!/bin/sh     
  3. # kill all java applications   
  4. #####################   
  5. javaps=`jps`   
  6. i=0  
  7. psid=0  
  8. for psresult in $javaps   
  9. do   
  10.   let cur=i%2  
  11.   if [ $cur -eq 0 ]; then   
  12.     psid=$psresult   
  13.   else   
  14.     if (test "$psresult" = "Main" -o "$psresult" = "Jps")   
  15.     then   
  16.         echo $psresult" not to be killed."  
  17.     else   
  18.         echo "kill "$psresult   
  19.         kill $psid   
  20.     fi         
  21.   fi   
  22.   let i++;   
  23. done  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下步骤来编写一个shell脚本来启动程序: 1. 打开终端并创建一个新的文件,例如:start_program.sh 2. 在文件中添加以下内容: ``` #!/bin/bash cd /path/to/program ./program_name ``` 3. 将“/path/to/program”替换为程序所在的路径,将“program_name”替换为程序的名称。 4. 保存文件并关闭。 5. 在终端中,使用以下命令来使脚本可执行: ``` chmod +x start_program.sh ``` 6. 最后,使用以下命令来运行脚本: ``` ./start_program.sh ``` 这将启动程序并在终端中显示输出。 ### 回答2: Shell脚本可以用于启动程序。我们通常可以使用Shell脚本来完成程序的自动化部署和启动工作,这对于某些长期运行的应用程序来说非常重要。 为了启动一个程序,我们首先需要创建并编写一个Shell脚本,通常以.sh为文件扩展名。脚本文件可以包含一些命令,用于启动特定的程序。 下面是一个例子,演示如何使用Shell脚本启动一个Java程序: ``` #!/bin/bash # Define Java Home JAVA_HOME=/usr/java/jdk8 # Set the classpath for the application CLASSPATH=/path/to/your/application.jar # Set the arguments for the application APP_ARGUMENTS= # Start the application ${JAVA_HOME}/bin/java -cp ${CLASSPATH} ${APP_ARGUMENTS} com.example.Application ``` 上面的脚本中,我们首先定义了JAVA_HOME环境变量,以便Shell脚本知道Java的安装位置。然后设置了应用程序的CLASSPATH,以及应用程序启动参数APP_ARGUMENTS。最后,我们启动Java应用程序,通过指定应用程序的主类,使用Java命令来启动它。 当我们在命令行中执行脚本文件时,应用程序将会被启动,并且将在后台运行。这种方式可以让我们在无人值守的情况下自动启动应用程序,而无需手动干预。 除了上述的例子,我们还可以使用Shell脚本启动其他类型的应用程序,例如Python程序、Node.js应用程序等等,只需要相应修改脚本中的执行命令即可。 总之,通过使用Shell脚本,我们可以方便地自动化部署和启动应用程序,从而提高开发人员的效率。 ### 回答3: Shell脚本是一种自动化执行程序的方法,使用shell脚本可以在操作系统中执行各种操作,包括启动程序启动程序shell脚本应用的最基本的操作之一,以下是关于如何使用shell脚本启动程序的一些细节: 准备启动程序 在使用Shell脚本启动程序之前需要先准备好程序所需的配置文件和参数,确保程序运行时可以访问到所有必需的资源。 编写启动脚本 通常使用bash、sh等脚本语言编写启动脚本,该脚本需要包含以下内容: 1. 指定环境变量 为保证程序能够正常运行,在脚本中设置环境变量是非常必要的。可以使用export命令设置环境变量,例如:export JAVA_HOME=/usr/lib/jvm/java-8-oracle。 2. 选择运行方式 可以选择在前台或后台运行程序。在前台运行时,启动脚本会一直占用该终端窗口,直到程序关闭。而在后台运行时,可以关闭该终端窗口而不会停止程序运行。 3. 执行程序 使用指定的命令执行程序,例如:java -jar my-app.jar。 4. 关闭程序 在执行程序时,需要考虑到程序停止运行的情况。可以使用kill命令来结束程序的运行。 启动脚本示例 #!/bin/bash # Set environment variables export JAVA_HOME=/usr/lib/jvm/java-8-oracle # Run the application in the background nohup java -jar my-app.jar > /dev/null 2>&1 & # Check if the application is running pid=$(ps aux | grep my-app.jar | grep -v grep | awk '{print $2}') if [ "$pid" = "" ] then echo "Application failed to start" else echo "Application running with PID $pid" fi 总之,Shell脚本启动程序是一项重要的自动化任务,可以帮助我们快速地实现对程序的管理,提高工作效率。在编写启动脚本时,需要考虑到程序干净停止和异常情况的处理,以保证程序的正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值