shell之nohup&

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/answer100answer/article/details/86703753

说明

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

例如:
启动springboot时,通常以下命令:

java -jar test.jar >/dev/null 2>&1 &
#或
java -jar test.jar &>/dev/null &

nohup

nohup 无疑是我们首先想到的办法。顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号。

只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&“来将命令同时放入后台运行,也可用”>filename 2>&1"来更改缺省的重定向文件名。

1、控制台显示

$ ping baidu.com
PING baidu.com (123.125.115.110): 56 data bytes
64 bytes from 123.125.115.110: icmp_seq=0 ttl=57 time=5.047 ms
64 bytes from 123.125.115.110: icmp_seq=1 ttl=57 time=41.392 ms

2、输出至nohup.out,还在该终端运行,关闭结束

$ nohup ping baidu.com
appending output to nohup.out
# 输出至nohup
$ cat nohup.out
PING baidu.com (220.181.57.216): 56 data bytes
64 bytes from 220.181.57.216: icmp_seq=0 ttl=52 time=7.172 ms
64 bytes from 220.181.57.216: icmp_seq=1 ttl=52 time=23.256 ms

3、输出至nohup.out,后台进程

$ nohup ping baidu.com &
[1] 31104

可以进程会一直运行。

$ tail -f  nohup.out
64 bytes from 220.181.57.216: icmp_seq=11 ttl=52 time=5.830 ms
64 bytes from 220.181.57.216: icmp_seq=12 ttl=52 time=6.242 ms
64 bytes from 220.181.57.216: icmp_seq=13 ttl=52 time=5.156 ms

通过kill关闭。

猜你喜欢

转载自blog.csdn.net/answer100answer/article/details/86703753
今日推荐