linux 将任务后台运行,linux下使用screen或则nohup将任务放到后台运行

本来是想着就screen和nohup使用起来很简单,就不用记了。没想到今天要用nohup突然想不起来怎么用了。所以这里还是记录一下。

screen和nohup都可以将命令放到后台去运行,并且不会随着你连接断开而终止运行。防止如果正在运行某个耗时比较长的命令时因为网络等原因导致ssh连接断开从而中断了命令运行。

1、screen使用举例

1.1、创建一个新screen窗口

[root@imzcy ~]# screen -S jboss-blog

[root@imzcy ~]# java -jar blog-imzcy.jar

[root@imzcy ~]#

1

2

3

[root@imzcy~]# screen -S jboss-blog

[root@imzcy~]# java -jar blog-imzcy.jar

[root@imzcy~]#

1.2、使用Ctrl + A + D组合键退出screen窗口

[detached from 9832.jboss-blog]

[root@localhost ~]#

1

2

[detachedfrom9832.jboss-blog]

[root@localhost~]#

1.3、列出已经创建的screen窗口

[root@localhost ~]# screen -ls

There is a screen on:

9832.jboss-blog (Detached)

1 Socket in /var/run/screen/S-root.

[root@imzcy ~]#

1

2

3

4

5

6

[root@localhost~]# screen -ls

Thereisascreenon:

9832.jboss-blog(Detached)

1Socketin/var/run/screen/S-root.

[root@imzcy~]#

1.4、恢复到指定的screen窗口

[root@imzcy ~]# screen -r jboss-blog

[root@imzcy ~]# screen -r 9832

1

2

[root@imzcy~]# screen -r jboss-blog

[root@imzcy~]# screen -r 9832

1.5、退出并删除当前screen窗口

[root@localhost ~]# exit

exit

[screen is terminating]

[root@localhost ~]# screen -ls

No Sockets found in /var/run/screen/S-root.

[root@localhost ~]#

1

2

3

4

5

6

7

8

[root@localhost~]# exit

exit

[screenisterminating]

[root@localhost~]# screen -ls

NoSocketsfoundin/var/run/screen/S-root.

[root@localhost~]#

常用选项:

-ls :列出所有screen窗口

-S :自定义一个名称,创建一个新的screen窗口并自动切换进去

-r :进入到指定screen窗口,可以指定窗口名称或窗口ID

-d :将screen窗口与在连接的会话分离并重新连接到当前会话

Ctrl + A + D :退出当前screen窗口

exit :退出并删除当前的screen窗口

screen使用中常见问题之:There is no screen to be resumed matching jboss-blog.

正常创建的screen窗口没有被使用的话,使用screen -ls查出来的状态是(Detached); 如果你创建的screen窗口被其他连接到当前服务器的用户使用了,那么查出来的状态是(Attached)。这个时候你直接使用screen -r 窗口名称是进不去该窗口的。必须先使用-d选项将screen窗口和对方的会话断开。才能继续使用。

[root@imzcy ~]# screen -ls

There is a screen on:

9849.jboss-blog (Attached) //可以看到当前状态是Attached,说明可能正在被其他人使用

1 Socket in /var/run/screen/S-root.

[root@imzcy ~]#

[root@imzcy ~]# screen -r jboss-blog //这个使用直接使用screen -r是进入不到这个窗口的,会报下面的错误

There is a screen on:

9849.jboss-blog (Attached)

There is no screen to be resumed matching jboss-blog.

[root@imzcy ~]#

[root@imzcy ~]# screen -d jboss-blog //使用screen -d将制定screen窗口与会话分离

[9849.jboss-blog detached.]

[root@imzcy ~]#

[root@imzcy ~]# screen -r jboss-blog //这个是后就可以使用screen -r进入窗口了

[remote detached from 9849.jboss-blog] //对方那边会提示screen窗口被远程分离了

[root@imzcy ~]#

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

[root@imzcy~]# screen -ls

Thereisascreenon:

9849.jboss-blog(Attached)//可以看到当前状态是Attached,说明可能正在被其他人使用

1Socketin/var/run/screen/S-root.

[root@imzcy~]#

[root@imzcy~]# screen -r jboss-blog        //这个使用直接使用screen -r是进入不到这个窗口的,会报下面的错误

Thereisascreenon:

9849.jboss-blog(Attached)

Thereisnoscreentoberesumedmatchingjboss-blog.

[root@imzcy~]#

[root@imzcy~]# screen -d jboss-blog        //使用screen -d将制定screen窗口与会话分离

[9849.jboss-blogdetached.]

[root@imzcy~]#

[root@imzcy~]# screen -r jboss-blog        //这个是后就可以使用screen -r进入窗口了

[remotedetachedfrom9849.jboss-blog]//对方那边会提示screen窗口被远程分离了

[root@imzcy~]#

2、nohup使用举例

将jar包放到后台运行,并且重定向其错误输出和标准输出到当前目录下的blog.log文件中

[root@imzcy ~]# nohup java -jar blog-imzcy.jar >blog.log 2>&1 &

[1] 9900

[root@imzcy ~]#

使用tail -f查看运行状态

[root@imzcy ~]# tail -f blog.log

查看nohup运行jar包的进程号

[root@imzcy ~]# ps -ef |grep "\-jar"

1

2

3

4

5

6

7

8

9

[root@imzcy~]# nohup java -jar blog-imzcy.jar >blog.log 2>&1 &

[1]9900

[root@imzcy~]#

使用tail-f查看运行状态

[root@imzcy~]# tail -f blog.log

查看nohup运行jar包的进程号

[root@imzcy~]# ps -ef |grep "\-jar"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值