Linux nohup命令详解,终端关闭程序依然能够在执行!

你们好,我是良许。程序员

在工做中,咱们很常常跑一个很重要的程序,有时候这个程序须要跑好几个小时,甚至须要几天,这个时候若是咱们退出终端,或者网络很差链接中断,那么程序就会被停止。而这个状况确定不是咱们想看到的,咱们但愿即便终端关闭,程序依然能够在跑。面试

这时咱们就可使用 nohup 这个命令。bash

nohup 命令是英语词组 no hangup 的缩写,意思是不挂断,也就是指程序不退出。这个命令会使程序忽略 HUP 信号,保证程序可以正常进行。HUP 信号有些人可能比较陌生,它是在终端被停止的时候向它所关联的进程所发出的信号,进程收到这个信号后就会停止运行。因此若是你不但愿进程被这个信号干掉的话,就能够忽略这个信号。而 nohup 命令作的就是这个事情。网络

本文咱们将详细介绍 nohup 命令的具体用法。架构

nohup命令基本语法

nohup 命令的基本语法以下:学习

$ nohup command arguments复制代码

或者:网站

$ nohup options复制代码

若是你想要获得更多关于 nohup 的用法介绍,能够查看它的帮助页面:spa

$ nohup --help复制代码

若是你须要查看它的版本号,可使用 --version 选项。3d

$ nohup --version复制代码

使用nohup命令启动一个程序

若是你须要运行一个程序,即便对应的 Shell 被退出后依然保持运行,能够这样使用 nohup 运行这个程序:日志

$ nohup command复制代码

当这个程序进行起来以后,这个程序对应的 log 输出及其错误日志都将被记录在 nohup.out 文件里,这个文件通常位于家目录或者当前目录。

重定向程序的输出

若是我不想把程序的输出保存在家目录或者当前目录,我想保存在我指定的路径,而且自定义文件名,要怎么操做?这时咱们就可使用重定向操做 >

好比,我如今有个脚本 myScript.sh 我想把它的输出保存在家目录下的 output 目录下,文件名为 myOutput.txt ,能够这样运行:

$ nohup ./myScript.sh > ~/output/myOutput.txt复制代码

使用nohup命令后台启动一个程序

若是想让程序在后台运行,能够加上 & 符号。但这样运行以后,程序就无影无踪了。想要让程序从新回到终端,可使用 fg 命令。

这个命令的输出 log 将保存在 nohup.out 文件里,你可使用 cat 或其它命令查看。第二行里 8699 这个数字表明这个命令对应的进程号,也就是 pid 。咱们可使用 ps 命令来找到这个进程。

使用nohup同时运行多个程序

若是你须要同时跑多个程序,不必一个个运行,直接使用 && 符号便可。好比,你想同时跑 mkdir ,ping,ls 三个命令,能够这样运行:

$ nohup bash -c 'mkdir files &&
ping -c 1 baidu.com && ls'> output.txt复制代码

终止跑在后台的进程

上面有提到,nohup 命令结合 & 符号可使进程在后台运行,即便关闭了终端依然不受影响。这时,若是想要终止这个进程,要怎么操做呢?

最简单的当属 kill 命令,相信你们用过不少次了。

$ kill -9 PID复制代码

那要如何找到进程对应的 pid 呢?咱们可使用 ps 命令。

$ ps aux | grep myScript.sh复制代码

或者你使用 pgrep 命令也行。

接下来,再使用 kill 命令就能够终止该进程了。

$ kill -9 14942复制代码

最后,最近不少小伙伴找我要Linux学习路线图,因而我根据本身的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。不管你是面试仍是自我提高,相信都会对你有帮助!目录以下:

免费送给你们,只求你们金指给我点个赞!

电子书 | Linux开发学习路线图

也但愿有小伙伴能加入我,把这份电子书作得更完美!

有收获?但愿老铁们来个三连击,给更多的人看到这篇文章

推荐阅读:

相关文章
相关标签/搜索