在UBuntu上部署项目的时候,我们往往通过一段shell来启动程序,甚至是通过crontab定时任务来定时的调用java程序,但是很奇怪的一个问题就是,比如我写了一个如下的shell脚本:

#!/bin/sh

export mypath=/root/project/wishnomal

java -Xmx3000m -Xms3000m -server -d64 -Dfile.encoding=UTF-8 -Dfetch.threads=300 -classpath $mypath/:$mypath/wish2-assembly-1.0.0.jar newstandard.CrawlerNewStandard $*

echo "END"

手动命令行运行该脚本的时候,可以正常运行java程序,但是使用crontab定时任务,貌似就不起效果了

分析可能原因:

1)是否当前用户对此shell脚本没有可执行权限,通过ls -lrt /apps/service/mtk/checking/run.sh查看脚本是有可执行,但是有执行权限呀-rwxr-xr-x

2)既然单独运行脚本没问题,那会不会是定时的问题呢?于是写了一个简单的输出的shell脚本通过定时也是没问题的。说明还是脚本的问题。

后来上网查了下,想到可能是脚本中环境变量的原因,因为通过crontab运行脚本,是以root用户,而不是当前用户,于是cat /etc/profile查看环境变量,然后修改脚本如下:

分析可能原因:

1)是否当前用户对此shell脚本没有可执行权限,通过ls -lrt /apps/service/mtk/checking/run.sh查看脚本是有可执行,但是有执行权限呀-rwxr-xr-x

2)既然单独运行脚本没问题,那会不会是定时的问题呢?于是写了一个简单的输出的shell脚本通过定时也是没问题的。说明还是脚本的问题。

后来上网查了下,想到可能是脚本中环境变量的原因,因为通过crontab运行脚本,是以root用户,而不是当前用户,于是cat /etc/profile查看环境变量,然后修改脚本如下:

#!/bin/sh

export mypath=/root/project/wishnomal

export JAVA_HOME=/root/lib/jdk1.7.0_72

PATH=$PATH:$JAVA_HOME/bin

java -Xmx3000m -Xms3000m -server -d64 -Dfile.encoding=UTF-8 -Dfetch.threads=300 -classpath $mypath/:$mypath/wish2-assembly-1.0.0.jar newstandard.CrawlerNewStandard $*

echo "END"

export显示导出为用户环境变量的环境变量

这样crontab计划任务就正常了。

修改参考:http://blog.csdn.net/haoren_e/article/details/6043645

#!/bin/sh

# -----------------------------------------------------------------------------

# Start script for the CMGP BOSSCONTROL

#

# $Id: run_bosscontrol.sh,v 1.0 2007/11/06 Exp $

# -----------------------------------------------------------------------------

#指定字符集

LANG=zh_CN.GBK export LANG

RUN_HOME=.

CLASSPATH=$CLASSPATH:$RUN_HOME/lib/checking.jar

CLASSPATH=$CLASSPATH:$RUN_HOME/lib/ojdbc14.jar

CLASSPATH=$CLASSPATH:$RUN_HOME/lib/commons-dbutils-1.1.jar

CLASSPATH=$CLASSPATH:$RUN_HOME/lib/log4j-1.2.14.jar

CLASSPATH=$CLASSPATH:$RUN_HOME/lib/dom4j-1.6.jar

export CLASSPATH

java  com.**.checking.Checking_Start >> log.out &

手动命令行运行该脚本的时候,可以正常运行java程序,但是使用crontab定时任务,貌似就不起效果了,很是郁闷哪,查原因哪,分析可能原因:

1)是否当前用户对此shell脚本没有可执行权限,通过ls -lrt /apps/service/mtk/checking/run.sh查看脚本是有可执行,但是有执行权限呀-rwxr-xr-x

2)既然单独运行脚本没问题,那会不会是定时的问题呢?于是写了一个简单的输出的shell脚本通过定时也是没问题的。说明还是脚本的问题。

后来上网查了下,想到可能是脚本中环境变量的原因,因为通过crontab运行脚本,是以root用户,而不是当前用户,于是cat /etc/profile查看环境变量,然后修改脚本如下:

#!/bin/sh

# -----------------------------------------------------------------------------

# Start script for the CMGP BOSSCONTROL

#

# $Id: run_bosscontrol.sh,v 1.0 2007/11/06 Exp $

# -----------------------------------------------------------------------------

export PATH=/apps/usr/java/jdk1.5/bin:$PATH

export JAVA_HOME=/apps/usr/java/jdk1.5

export JRE_HOME=/apps/usr/java/jdk1.5/jre

export CLASSPATH=/apps/usr/java/jdk1.5/lib:/apps/usr/java/jdk1.5/jre/lib:$CLASSPATH

RUN_HOME=/apps/service/checking

CLASSPATH=$CLASSPATH$RUN_HOME/lib/checking.jar

CLASSPATH=$CLASSPATH:$RUN_HOME/lib/ojdbc14.jar

CLASSPATH=$CLASSPATH:$RUN_HOME/lib/commons-dbutils-1.1.jar

CLASSPATH=$CLASSPATH:$RUN_HOME/lib/log4j-1.2.14.jar

CLASSPATH=$CLASSPATH:$RUN_HOME/lib/dom4j-1.6.jar

export CLASSPATH=$CLASSPATH

java  com.**.checking.Checking_Start >> log.out &

export显示导出为用户环境变量的环境变量

以上这种jar包是通过eclipse工具export导出,不包含MANIFEST.MF文件,如果使用打包工具Ant,我们可以在打包默认的build.xml文件中设置Class-Path

将第三方jar包加入manifest.mf文件中,且指定程序主类

在build.xml中添加如下内容:

另外,在create manifest文件时,加上:

这样运行ant,打成的jar包中MANIFEST.MF中内容如下:

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.7.0

Created-By: 1.5.0_09-b01 (Sun Microsystems Inc.)

Implementation-Title: fee task

Implementation-Version: 1.0

Implementation-Vendor: Aspire

Main-Class: com.aspire.cmgp.flowcontrol.server.FlowControlServer

Class-Path: lib/cmgp-util-1.0.1.jar lib/commons-codec-1.3.jar lib/comm

ons-collections.jar lib/commons-dbcp-1.2.1.jar lib/commons-httpclient

.jar lib/commons-logging.jar lib/commons-pool-1.2.jar lib/dom4j.jar l

ib/log4j.jar lib/ojdbc14.jar

这样在shell脚本中就不需要指定程序所需要的jar包了,也就不存在环境变量设置的恼人问题。比较正规的也是这么操作的。

这样在shell中就直接运行jar包就行了:java -jar 主程序.jar -Xmx1024m -Xms1024m -Xmn512m,

########

#!/bin/bash后追加

source /etc/profile

source ~/.bash_profile

测试下。。

#! /bin/sh

export JAVA_HOME=/usr/java/jdk1.6.0_18

export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

for i in lib/*.jar;

do CLASSPATH=$i:${CLASSPATH}

done

export CLASSPATH=.:${CLASSPATH}

java -cp ${CLASSPATH} main方法所在包名.main方法所在的类名

脚本运行java_shell脚本运行java程序jar相关推荐

  1. linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本

    #!/bin/sh# 该脚本为Linux下启动java程序的脚本## author: luandy# date: 2021/1/15## 特别注意:# 该脚本使用系统kill命令来强制终止指定的jav ...

  2. java -jar 停止_推荐:Linux启动Java程序jar包Shell脚本

    每次启动Java程序jar包的时候,难道你还在手敲java -jar xxserver.jar--?边敲边想着都需要追加哪些参数? 今天就推荐给大家一个几乎通用的Shell脚本,它支持Java程序Ja ...

  3. 编写运行最简单的java程序——使用记事本编写java程序

    编写运行最简单的java程序--使用记事本编写java程序 第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还 ...

  4. 树莓派Java程序运行_树莓派上Java程序作为linux服务并开机自动启动

    http://www.iigrowing.cn/shu_mei_pai_shang_java_cheng_xu_zuo_wei_linux_fu_wu_bing_kai_ji_zi_dong_qi_d ...

  5. java bat 运行 jar文件_运行bat文件启动java的jar且不弹出DOS窗口,后台运行java的jar包...

    本文主要是将java的jar包启动的cmd命令添加到bat文件来执行,且不弹出DOS窗口,也就是后台运行java的jar包. 这里以win10为例 1.新建 一个txt文件,在文件添加以下内容.其中E ...

  6. Eclipse在运行同一包下Java程序出现Error提示框,解决方案

    平时运行java程序使正常,在一个包下写了几个java程序,当在Eclipse下运行程序时出现一个大大的Error提示框? (分析了下原因可能是classpath没配置的原因,配置完classpath ...

  7. 如何重启java程序jar包_windows下jar包开机自动重启的步骤

    最近做了很多项目,不同的系统,不同的部署方式,这里做个记录 1.在jar包目录新建一个start.bat  文件,然后写入启动命令 jar -jar XXXX.jar 2.仍然在此目录,新建start ...

  8. java程序jar包xjar加密及破解解密

    背景 项目要部署到第三方服务器上,于是研究了一下jar包加密的方式,其中在github上有一个项目XJar,挺多使用用户,也搜到了破解的教程,于是研究了一下.详细说下如何加密.破解.这些加密只能说&q ...

  9. Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包

    一.建立脚本文件: 二.设置权限 三.将脚本文件放到启动目录下 四.更新优先级 cd /etc/init.d sudo update-rc.d startm.sh defaults 90 至此,开机启 ...

最新文章

  1. 使用Java操作Redis(二)
  2. chosen组件实现下拉框
  3. 创造包容的环境和上升空间
  4. 200820C阶段一通用链表
  5. 系统ghost后变成一个盘了别的分区的文件怎么找回
  6. python反射、闭包、装饰器_python之闭包、装饰器、生成器、反射
  7. java集合—— 链表(java中的所有链表都是双向链表)
  8. 关于(我们流量表优化),分区表数据块过多,聚合又导致数据倾斜问题
  9. 只卖了2000辆,竟扬言吊打特斯拉!贾跃亭昔日偶像,还在忽悠?
  10. django url 中的namespace详解
  11. spring bean加载过程_Spring的Bean加载容器机制
  12. Java基础之写文件——通过缓冲流写文件(StreamOutputToFile)
  13. 一个小时快速搭建微信小程序教程
  14. PDF附加字体和不附加字体
  15. 王道数据结构课代表 - 考研数据结构 第三章 栈和队列 究极精华总结笔记
  16. 虚拟机开启系统蓝屏报错:“终止代码:SYSTEM_SERVICE_ECXEPTION“
  17. 最优化——阻尼牛顿法
  18. 软件企业认定条件政策
  19. SecureCRTSecureFX(一):SecureCRT的介绍与下载安装
  20. 差之毫厘.失之千里 英语学习新需求之.支持通配符的电子字典

热门文章

  1. 云安全趋势:IaaS?谢了,我要 PaaS
  2. Flash Builder 4.7 安装
  3. ruby on rails错误undefined method `title#39; for nil:NilClass
  4. ARCGIS影像配准教程
  5. HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...
  6. Linux route命令详解和使用示例(查看和操作IP路由表)
  7. jsp访问WEB-INF下面的资源
  8. ASP.Net 使用css换肤(转)
  9. queuetimer,如何使用CreateTimerQueueTimer建立在C#中高分辨率计时器?
  10. factory i/o下载_推荐 Dynalist.io 大纲笔记整理工具