频道栏目
首页 > 系统 > Linux > 正文

Linux nohup命令分析

2017-08-31 09:32:14      个评论    来源:timchen525的专栏  
收藏   我要投稿

场景分析:

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

给个示例脚本如下:

脚本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没有后台运行的意思,&才是后台运行。

上一篇:Linux curl 中get和post的用法详解
下一篇:Centos6.8下gitLab的安装
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训

版权所有: 红黑联盟--致力于做实用的IT技术学习网站