元凶:SIGHUP 信号
让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。
在Linux/Unix中,有这样几个概念:
进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。
会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。
根据POSIX.1定义:
挂断信号(SIGHUP)默认的动作是终止程序。
当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。
如果会话期首进程终止,则该信号发送到该会话期前台进程组。
一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。
因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。
java 应用程序在linux部署方法:1,将项目达成war包(用eclipse,项目右键--Export--选择war file)
2,将tomcat(用winSCP当然也可以用secureCRT,用securCRT需要建立sftp(即上传文件的目录),用put tomcat命令)考到ilunx对应的目录下
3,然后将项目的war包放到tomcat的webapps目录下
4,启动tomcat(命令:./startup.sh(linux下启动tomcat是.sh文件而非.bat文件))
遇到问题如下:
运行./startup.sh 是报错
-bash: ./startup.sh: Permission denied
原因:没有运行.sh的权限
解决:chmod 777 *.sh
755 代表用户对该文件拥有读,写,执行的权限,同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样。
777代表,user,group ,others ,都有读写和可执行权限。
获得权限后再运行./startup.sh命令时报错:
This file is needed to run this program
原因:该文件需要一个运行环境(即配置jdk环境变量)
解决:JAVA_HOME=/usr/java/jdk1.6.0_25/(当然这个目录根据自己的jdk安装目录)
然后在运行./startup.sh 提示:
Using CATALINA_BASE: /usr/local/sarft/apache/apache-tomcat-6.0.29
Using CATALINA_HOME: /usr/local/sarft/apache/apache-tomcat-6.0.29
Using CATALINA_TMPDIR: /usr/local/sarft/apache/apache-tomcat-6.0.29/temp
Using JRE_HOME: /usr/java/jdk1.6.0_25/
Using CLASSPATH: /usr/local/sarft/apache/apache-tomcat-6.0.29/bin/bootstrap.jar
如果提示以上信息表明 tomcat启动成功,可以正常run了。
方法/步骤1:打开SecureCRT,点击文件中的”快速连接“
2:在打开的窗口中输入要连接的服务器主机名,端口、用户、密码 点击链接
3:进入Tomcat部署bin目录
输入cd/usr/local/netwaymedia/expo_tomcat/bin 命令,按回车键确认
4:查看Tomcat是否运行
输入 ps-ef|grepjava 命令 ,按回车键确认(如下图红色框中标注则在运行)
5:停止Tomcat运行
输入shshutdown.sh命令 ,按回车键确认
6:查询Tomcat是否运行停止(如下图该语句无结果输出表示Tomcat已停止运行)
输入ps-ef|grepjava-V|grepjava命令,按回车键确认
7:如果Tomcat还有在活动,用命令杀掉进程
输入ill-97753 命令,按回车键确认
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)