Linux nohup命令分析

xiaoxiao2021-02-27  186

场景分析:

如何不间断的以后台进程来运行某个进程呢?

给个示例脚本如下:

脚本tim.sh:

#!/bin/bash while [ 1 -le 2 ] do echo 'hello'>/dev/null done

这个shell 脚本会不断的将‘hello’字符串的值丢入/dev/null中,保证当前的进程不断的运行。

执行脚本:

/bin/bash tim.sh

效果如下:

打开另一个shell,执行:ps –ef|grep tim.sh,可以查看到当前的tim.sh进程正在执行:

但是,第一个/bin/bash tim.sh,执行ctr+c或者退出当前窗口,该tim.sh消失。

添加&执行脚本:

/bin/bash tim.sh &

当前的进程直接在后台运行,控制台上输出进程号,此时如果执行logout命令,则该进程仍然可以在后台运行,但是,如果强制关闭Xshell客户端,则结束该会话会发送signup信号会关闭该进程。

除了添加&还要添加nohup执行脚本:

nohup /bin/bash tim.sh &

此时,之前控制台的输出结果会被重定向到当前目录下的nohup.out文件(注意:如果用户不具备当前目录可写的权限,那么nohup.out将输出到用户的home目录下,比如,root用户为/root/下)。并且,即时强制关闭XShell终端或者网络断开,该tim.sh进程仍然可以运行。

 

区分:&和nohup

&指的是将进程放在后台运行,nohup是不间断的运行某个进程。因此,两者没有交集。

 

补充:nohup相关知识

因为普通的程序并不能真正脱离登录会话而运行进程,为了使得系统登录后还可以正常执行,只有使用命令nohup来启动相应程序。

输入man nohup给出的解释如下:

nohup

NAME:

              nohup – run a command immune tohangups, with output to a non-tty.

就是指,用nohup运行命令可以使命令永久的执行下午,和用户终端没有关系。(例如:我们断开SSH连接也不会影响它的运行)

注意:nohup没有后台运行的意思,&才是后台运行。

转载请注明原文地址: https://www.6miu.com/read-13004.html

最新回复(0)