如何在后台运行Linux命令或者脚本
在 Linux 终端上执行命令的通常风格是简单地运行它并等待它正常退出。命令退出后,可以继续连续执行其他命令。这就是所谓的在前台运行命令。正如这个词所暗示的那样,您可以在终端上直观地看到命令的输出。
但是,在前台运行命令可能会带来一系列挑战。该命令可能需要很长时间才能退出,导致您浪费宝贵的时间,不能执行其它命令,只能等到该命令执行结束,这种就类似那种串行工作一样。这个时候如果想再执行其它命令,其实也可以在重新建立一个新的会话窗口来执行其它命令操作。
在这种情况下,在后台运行命令是您最好的选择。您可以在前台并发执行其他命令时将命令发送到后台。这提高了在终端上工作的效率,并节省了您的时间。
下面就来看一看Linux命令如何再后台运行的。
1,运行命令或脚本在后台使用&符合
要在后台运行命令或脚本,请在末尾使用 & 符号 (&) 将其终止,如下所示。
注意:以 & 符号结束命令不会将命令与您分离。它只是将其发送到您正在使用的当前会话shell的后台,该命令仍会持续输出将输出打印到STDOUT或STDERR,这也会阻止您在终端上执行其他命令。
从上图可以看出通过此种方式后台运行,是在后台运行了,但是输出还是显示在当前会话的shell中,执行后面的命令都看不到,如何解决呢,这时候就只能通过ps -a 查看进程id,通过kill -9 进程id来终止。或者再新连接一个会话窗口,从而通过ps -a,查看运行的进程,通过kill 来终止。
2,运行命令和脚本在后台使用重定向/dev/null
下面来看第二种方式运行命令或脚本在后台,将要运行的命令或脚本重定向到/dev/null,最后在加上一个&符号。命令如下
下面是具体操作的命令,运行ping www.baidu.com 重定向到/dev/null,最后在加上一个&符号。命令如下
接下来我们可以通过jobs命令来查看后台运行的命令或脚本,想要终止后台执行的命令,通过jobs查看出后台执行的进程id,通过kill -9 进程id进行杀掉后台运行的进程。
3,运行命令和脚本在后台使用nohup
在后台运行命令的另一种方法是使用 nohup 命令。nohup 命令(简称为"不挂起")是一个命令,即使在退出 shell 后也能保持进程运行。它通过阻止进程接收SIGHUP(信号挂起)信号来实现这一点,该信号通常在进程退出终端时发送到进程。命令如下
下面是具体操作的命令,运行ping 网址的nohup命令。命令如下
接下来我们可以通过jobs命令来查看后台运行的命令或脚本,想要终止后台执行的命令,通过jobs查看出后台执行的进程id,通过kill -9 进程id进行杀掉后台运行的进程。
总结:通常上面三种方式的学习,后台运行命令选用最后一个nohup命令,因为最后一个命令是在前两个基础之上的增强。
![微信公众号](https://files.cnblogs.com/files/Hackerman/%E9%BB%98%E8%AE%A4%E6%A0%87%E9%A2%98_%E6%A8%AA%E7%89%88%E4%BA%8C%E7%BB%B4%E7%A0%81_2020.gif)
出处:http://www.cnblogs.com/Hackerman/