有时候我们需要将一个进程丢到后台运行,甚至需要在我们退出终端后还能继续运行。本文将几种实现方式与区别整理了一下。
那么,回到文题,怎样实现将进程丢到后台还能继续运行呢?在上面的例子中也就是让系统在后台一直 ping www.iots.vip,我们可以使用 & 来实现将进程丢到后台:
这里实现的是将 ping 的正确输出信息输出至 ping.msg 文件,而屏幕标准输出只输出错误信息,同时将进程丢进后台。
Ctrl + Z 与上面的不同,Ctrl + Z 会将当前进程挂起丢入后台,也就是暂停至后台,不会继续运行。挂起的进程通过 jobs 可以看到:
使用 bg %任务号 可以在激活挂起的任务让其在后台运行:
这里将会不停的输出 ping 的回复,必须要退出终端才能终止,在所运行的程序有标准输出的时候不推荐这样使用。
使用 fg %任务号 可以在激活挂起的任务让其在前台运行。
值得注意的是,Ctrl + Z 后使用 bg 激活的后台运行进程以及使用 nohup & 在后台运行的进程,在重登终端的时候 jobs 均不会显示,只能通过 ps -ef 看到,要停止运行也只能使用 kill 来停止。
感谢 @Bill 补充,screen 也是一个很棒的工具,不过需要单独安装:
通过执行 screen 来新建一个会话,使用 Ctrl + AD 离开该会话,会话将在后台继续运行,之后 screen -ls 可以查看会话列表。screen 相比上面的方式更加方便,能做的事情也更多,