xshell怎么让程序后台运行_linux将任务放到后台运行的方式

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中。

​ 使用nohup命名启动

nohup java -jar test-0.0.1-SNAPSHOT.jar

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

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 &

​ 此时执行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

使用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 -X -S [session # you want to kill] quit

screen -X -S 5129 quit

使用screen发布jar程序

​ 使用screen -S 打开一个窗口

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

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

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

​ screen -r 恢复窗口

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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值