nohup、screen命令的基本使用

一、nohup+&

1、使用nohup

 nohup command [ arg … ]  
 command是命令的意思,arg既为command命令的参数,理解为nohup加强了command的意思

​        nohup 是no hang up的缩写,意思是不挂起运行。例如现在终端(XShell等)需要执行一个shell脚本,并且希望当终端出现被迫中断,或者人为中断时,sh脚本任然不会被中断,继续执行,此时可以使用nohup命令了。

nohup sh test.sh
不挂起执行test.sh脚本,关闭当前终端,test.sh如果还没执行完成,则仍然在运行

​        通过nohup执行的命令,此时终端将不再接受标准输入,既不可以在当前的回话中输入其他命令了。原因是nohup只是起到不挂起运行,并不用有后台执行的功能。同时,nohup 命令的输出会重定向到当前目录的nohup.out 文件中,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。

       再比如启动一个jar包

nohup java -jar test.jar

​ 此时,在test.jar目录下会创建一个nohup.out文件,test.jar里面的日志输出,标准输出都会重定向一份到nohup.out中。

linux将任务放到后台运行的方式
使用nohup命名启动

nohup java -jar test-0.0.1-SNAPSHOT.jar

linux将任务放到后台运行的方式
​          此时可以看到,终端的已经不再接收输入命令,或者说执行输入命令无效。此时如果直接关闭终端,如果jar包还没执行完任务,改进程不会退出,但是注意,如果通过Ctrl+C的方式,则会中断进程。
linux将任务放到后台运行的方式

2、&命令

 语法command [ arg ... ]         将任务放到后台运行
 java -jar test-0.0.1-SNAPSHOT.jar >nohup.out &  在后台运行jar包

​        但是注意,当jar进程还没运行完成,此时关闭终端回话,则该进程会被中断。

3、nohup+&

nohup java -jar test-0.0.1-SNAPSHOT.jar >nohup.out &

linux将任务放到后台运行的方式

​ 此时执行Ctrl+C不会关掉进程,而且关闭终端不会中断,这是linux后台启动jar的正确方式之一。

二、screen命令的简单使用

        使用screen命令可以开启多个窗口,或者说是屏幕,一个screen窗口简单理解就是类似于一个真实的终端连接。对于一个长时间执行的任务,我们可以使用screen命令打开一个窗口,在这个窗口中执行这个长时间命令(进程),中途可以切换到其他的窗口,或者关闭真实的终端连接会话。再次进入可以通过screen命令在screen管理的窗口列表中,找到之前的screen,并重新进入。
        打个比喻,现在我使用xshell连接到linux,建立了一个连接会话,现在我执行一个命令,tail -20f text.log,监控这个文件的写入信息,此时我又想在这个会话中干点其他的事情,又不想用xshell重新打开另一个会话连接,那怎么办?此时就可以使用screen命令。screen是一个可以在多进程之间多路复用一个物理终端窗口管理器,既一个终端会话,可以笔者的理解就是,在screen中“虚拟”的xshell会话连接,既screen管理了这些会话连接。

如果系统没有screen命令,先安装

yum install screen

​ 使用screen,不带任何的参数,则开启了一个窗口,名称由screen管理,带上-S参数可以自定义窗口名称

screen -S test-screen-01  

在当前窗口中,按住ctrl,然后依次按下 a 和 d,回到主会话。此时键入screen -ls,查看screen管理的会话列表

screen -ls

linux将任务放到后台运行的方式

使用screen -r 会话名/会话ID恢复到该会话

screen -r 5164

如果此时无法进入,说明有另外的终端连接占用了,特别是我们自己操作时,当Ctrl a,d执行之后,没有退出当前xshell连接的会话,此时screen -r 将不能直接连上,使用screen -D -r 意思是先踢掉前一用户,再登陆。

screen -D -r 5164

删除一个窗口,可以在当前窗口输入exit,或者通过screen -d 会话ID删除

screen -d 5129
使用screen发布jar程序
  1. ​ 使用screen -S 打开一个窗口

  2. ​ 执行 java -jar test-0.0.1-SNAPSHOT.jar

  3. ​ 按住Ctrl,依次按下a,d键回到主的screen

  4. ​ screen -ls查看当前管理的窗口

  5. ​ screen -r 恢复窗口

  6. ​ 当前窗口exit退出,或者screen -d 删除窗口

相关文章: