让进程在后台运行,不受本地关闭终端窗口/网络断开连接干扰

nohup/setsid/&
我们知道,将一个或多个命名包含在“()”中就能让这些命令在子 shell 中运行中

&: 当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。例如:sh test.sh &
不过,作业在后台运行一样会将结果输出到屏幕上 可以这样:
command > out.file 2>&1 & //所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。

PS:当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。(ps -ef | grep 进程号 或者 kill -9 进程号)

nohup: 使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行
nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:
nohup command &
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
使用了nohup之后,其实这样有可能在当前账户非正常退出或者结束的时候,命令还是自己结束了。需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行

setsid: 处理 不属于接受 HUP 信号的终端的子进程
也只需在要处理的命令前加上 setsid 即可 setsid ping www.ibm.com

1.command>out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
2. 2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个&, 是让该命令在后台执行。
3。 试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.

Leave a Reply

Your email address will not be published. Required fields are marked *