Linux系统下的java进程消失无故消失怎么办

3478人阅读
java Concurrency(1)
Linux(1)
今天学习在linux中查看进程状态的方法,在一本书上面看到可以使用kill -3 &java pid& 查看进程状态,我非常激动的想看一下效果,就自己写了一个小Demo。可是当我使用时,这个命令死活没有反应,下面贴运行图。
可以看到run.log里面根本没有一个字。终端也没有反应,程序也没有中断。咦~,这就起了个怪了,怎么会没有反应呢。开始我以为是因为我用的JDK版本有问题,我就将openjdk换成了SUNJDK,可是运行之后还是这样,都没有反应。没办法,我只好google,最终被我google到了原因。
原来是 -Xrs JVM选择没有被使用,kill -3命令被忽略了。解决方法:那么如果你是OpenJDK 或者 SUNJDK1.6以后的JDK就可以使用jstack -l [java pid] & jstack.out 来达到一样的效果。接下上输出成功的运行图。
好了,最后可以看到在run.log里面已经有了数据。开始分析自己的进程吧。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9492次
排名:千里之外
(1)(1)(1)(2)(1)(1)(1)热门装机教程
您现在的位置: &>&
Linux系统下的Java进程无故消失怎样解决
来源: & &发布时间: 10:03:09
  用户反映,在Linux系统的步骤中,有一些Java项目总是无故的消失,这样的问题其实是Java进程被关闭掉了。那么怎么会出现这样的问题呢?其实这样的问题很可能是被系统自动清除了多余的进程,还有就是其他程序关掉了Java项目,那么这样的问题用户应该怎样进行解决呢?
  解决方法:
  1.磁盘满了,这个问题比较简单,只要清理一下磁盘就可以了。
  2.tomcat在关闭的或是重启的时候,常常后台进程没有被关闭。需要用ps&aux|grep&java&这个命令查一下,把多余的进程关掉,再启动startup.sh
  3.这种情况比较少见,就是在系统资源缺少的情况下,被系统自动DOWN掉,或是被其它软件干掉了。
  其实在我这里,这样还是没有解决,进程还是莫名其妙会自己挂掉,日志也没有任何报错。后来打开tomcat主目录下的子目录conf里面的tomcat-users.xml文件,用户配置内容如下:
  &tomcat-users&
  &user&name=&tomcat&&password=&tomcat&&roles=&tomcat&&/&
  &user&name=&role1&&password=&tomcat&&roles=&role1&&/&
  &user&name=&both&&password=&tomcat&&roles=&tomcat,role1&&/&
  &/tomcat-users&
  全都关闭掉。
  关于Linux系统下的Java进程无故消失的具体解决方法就介绍完了,按照以上3种方法总有一个能够解决Linux上的问题,这样就可以放心地在Linux系统中部署Java项目了。
[上一个]:
[下一个]:Linux下Java程序的启动shell脚本 - MagicMind - ITeye博客
博客分类:
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,并且前面还增加了程序是否已启动的检查。
##############
#判断是否程序已启动
jappname='MyAppClass'
javaps=`jps`
for psresult in $javaps
let cur=i%2
if [ $cur -eq 0 ]; then
psid=$psresult
if (test "$psresult" = "$jappname")
echo "程序"$jappname"[pid="$psid"]已经启动!"
#引入依赖类库到类路径
export CLASSPATH=.
pathtmp=''
for jarpath in `ls lib/*.jar`
CLASSPATH=$CLASSPATH:$jarpath
export CLASSPATH=$CLASSPATH
java -server com.myapp.MyAppClass $*
附带一个关闭大量Java进程的脚本
服务器上部署的有JBoss和十几个Java程序,测试时经常需要把这十几个Java程序重启一遍,把Java进程全kill掉的话,JBoss也会被杀掉,但是JBoss不需要重启,一个一个用ps命令找pid,再挨个kill?程序太多,无法忍受。JDK里有个小工具叫jps,可以列出当前的Java进程,利用这个jps写了一个杀掉除指定进程之外的所有Java进程的shell脚本。
#####################
# kill all java applications
#####################
javaps=`jps`
for psresult in $javaps
let cur=i%2
if [ $cur -eq 0 ]; then
psid=$psresult
if (test "$psresult" = "Main" -o "$psresult" = "Jps")
echo $psresult" not to be killed."
echo "kill "$psresult
kill $psid
* Main是JBoss的主类名
论坛回复 /
(0 / 4220)
浏览: 57512 次
来自: 郑州
设置过allowLinking=“true”之后,jboss服 ...
除了软链接,还有别的方式指定外部war文件吗?
设置了 还是不行linux中crontab定时任务启动Java程序碰到的问题
最近工作需求,需要在Linux中启动定时任务,每隔2分钟调用一个Java程序,碰到一系列的问题,总结如下
1.crontab定时任务如果指定了结果输出流文件,则要输入 2&&1 才会将结果输出到指定的文件,如
*/2 * * * * /opt/a8box/mb_umdtasker/create_umd.sh &/opt/a8box/mb_umdtasker/out.log 2&&1
如果要将标准流与错误流输出到Linux回收站中,即不显示任何东西,则需要加上 /dev/null 如
*/2 * * * * /opt/a8box/mb_umdtasker/create_umd.sh &/opt/a8box/mb_umdtasker/out.log /dev/null 2&&1
在Linux定时器当前目录会产生问题,如果Java工程需要在同级目录下加载一些配置文件(如连接数据库的信息),则当前目录会加载不到,此时,可以在java命令设置当前路径系统属性,程序中根据该属性动态加载配置文件
setsid java -Dbase_dir="/opt/a8box/mb_umdtasker/" -jar /opt/a8box/mb_umdtasker/mb_content_umdtasker.jar
在程序中可以用
String path = System.getProperty("base_dir");
Java工程中的log4j日志输出文件一般都是配置在当前目录下,而在Linux定时器中会有问题,即当前目录并不是Java程序所在的目录了,而
log4j配置文件又在Java程序源文件中,则可以将log4j.properties提取出来,在Java工程中动态加载
String path = System.getProperty("base_dir");
File log4jfile = new File(path+"/"+"log4j.properties");
if(log4jfile.exists()){
PropertyConfigurator.configure(path+"/"+"log4j.properties");
手动执行启动Java程序没有问题,Linux定时器启动Java程序会丢失环境变量的配置,需要在shell脚本中加入环境变量
source /etc/profile
setsid java -Dbase_dir="/opt/a8box/mb_umdtasker/" -jar /opt/a8box/mb_umdtasker/mb_content_umdtasker.jar
原文:/liangge0218/archive//3292378.html
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。2014年5月 Java大版内专家分月排行榜第三
2016年1月 Java大版内专家分月排行榜第二2015年12月 Java大版内专家分月排行榜第二2015年8月 Java大版内专家分月排行榜第二2015年3月 Java大版内专家分月排行榜第二2015年1月 Java大版内专家分月排行榜第二2014年12月 Java大版内专家分月排行榜第二2014年11月 Java大版内专家分月排行榜第二2014年6月 Java大版内专家分月排行榜第二2014年4月 Java大版内专家分月排行榜第二2014年1月 Java大版内专家分月排行榜第二2013年11月 Java大版内专家分月排行榜第二
2015年9月 Java大版内专家分月排行榜第三2015年6月 Java大版内专家分月排行榜第三2015年5月 Java大版内专家分月排行榜第三2015年2月 Java大版内专家分月排行榜第三2014年3月 Java大版内专家分月排行榜第三2013年12月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 lol进程消失 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信