Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 玻璃鱼死了,不再重新开始_Bash_Ubuntu_Glassfish - Fatal编程技术网

Bash 玻璃鱼死了,不再重新开始

Bash 玻璃鱼死了,不再重新开始,bash,ubuntu,glassfish,Bash,Ubuntu,Glassfish,我们的一个应用服务器(Glassfish v3.0.1)无缘无故地不断崩溃。有时,我离开了互联网,所以我无法再次运行它。因此,我编写了一个简单的bash脚本,等待10分钟,然后运行asadmin。就像: #!/bin/bash while true; do sleep 600; sudo /home/ismetb/glassfishv3.0.1/glassfish/bin/asadmin start-domain; done 这似乎很好,但我有几个问题: 如果我终止bash脚本(通过按ct

我们的一个应用服务器(Glassfish v3.0.1)无缘无故地不断崩溃。有时,我离开了互联网,所以我无法再次运行它。因此,我编写了一个简单的bash脚本,等待10分钟,然后运行asadmin。就像:

#!/bin/bash
while true; 
do sleep 600;
sudo /home/ismetb/glassfishv3.0.1/glassfish/bin/asadmin start-domain; 
done
这似乎很好,但我有几个问题:

  • 如果我终止bash脚本(通过按ctrl+z按钮),Java进程(Glassfish)将死亡,
    start-domain
    stop-domain
    命令根本不起作用。这意味着,我既不能阻止玻璃鱼,也不能接近它。我不知道以前是否有人遇到过这个问题。如果进程死亡,我唯一能做的就是查找Java进程的ID并从终端终止它。这一点都不可取。知道我退出脚本时Java进程为什么会死掉吗
  • 我想添加到脚本中的是检查port Glassfish正在使用的内容。如果港口有人,我可以假设Glassfish没有下船!(然而,尽管Glassfish已经死了,但端口(8080默认值)可能仍然被Glassfish使用,我不确定)。如果没有,那么在一个简单代码的帮助下,我可以获得Java进程的id并将其全部杀死。然后,
    start domain
    命令将成功运行。关于如何做到这一点,有什么想法或指导吗 你可以用工作来代替。要为root用户安装cron作业,请输入

    sudo crontab -e
    
    再加上这一行

    */10 * * * * /home/ismetb/glassfishv3.0.1/glassfish/bin/asadmin start-domain
    
    这将每隔十分钟运行一次asadmin

    如果您对命令行不熟悉,您也可以尝试
    gnome schedule
    ,但我没有这方面的经验


    对于第二个问题,可以使用
    curl
    wget
    访问glassfish。您可以尝试获取一些URL,甚至访问管理界面,如果没有得到响应,则假定glassfish已关闭。

    Ctrl+Z不应终止脚本,只需挂起它即可。您通常可以使用
    fg
    (前台命令)再次将此程序带到for。太棒了!ctrl+z就是这种情况,我将避免使用它。但是,当我通过asadmin运行服务器时(当我不使用bash脚本时),服务器有时仍然会死机,并且不会响应start或stop命令。虽然这种情况很少见,但还是会发生。所以#2对我来说仍然是个问题,奥拉夫先生。我使用了
    crontab-e
    命令并添加了您提供的行。@iso_9001;很高兴看到,您自己解决了这个问题。我更新了我的答案,以防万一。