命令简介:
通常在Linux系统上部署完程序,需要让它一直在后台运行,否则ssh一旦断开,整个进程就挂了。今天介绍一个关于让程序在后台运行的命令nohup!!
nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。
无论是否将 nohup 命令的输出重定向到终端,输出都将追加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,则输出重定向到$HOME/nohup.out文件中。如果没有文件能创建或打开以用于追加输出的内容,那么 command 参数指定的命令不可调用。
命令格式:
#1.后台启动程序
nohup command [参数] &
#参数可选但不是必须的,有需要看文档既可
#例如:
#后台运行test.sh这个shell脚本
nohup sh test.sh &
#在后台运行bbs.jar程序
nohup java -Xmx2000m -Xms2000m --server.port=8080 -jar bbs.jar &
#执行之后会返回一个进程号
#以及告诉你程序的标准输出都会保存在一个叫outhup.out的文件中在程序根目录下
#2.查看此程序运行状态
#端口状态查看
lsof -i:port
#某某程序运行状态
ps -ef | grep <程序名>
#jobs这个命令也可查看程序后台运行状态,不过另启一个ssh就出不来了。
#3.停掉这个程序
#可以把后台程序转到前台,也可以根据进程号直接干掉,这里我们推荐后者
#例如根据 ps -ef | grep <程序名> 得到进程号24365
kill -9 24365
#这个进程就会停止运行了
#问题:我之前执行命令的时同时用了nohup和&想让程序后台一直运行,但只要我一断开ssh终端程序依然会挂掉。
#原因:程序在后台运行了之后,直接把ssh给关了属于不正常断开ssh远程连接,会影响后台程序的运行。
#解决:这时候我们需要用exit来退出远程连接,苍了天啊啊啊那天我百度了一下午~~~