Linux下将进程放到后台运行

Linux下将进程放到后台运行

要想让一个程序在后台运行,有两种主要的方法:

  1. 使用 &搭配nohup
  2. 使用screen命令

&搭配nohup让程序在后台运行

切换成后台

nohup xxx.sh &

&的作用是将程序由前台切换到后台,且没有了标准输入输出流。一般在脚本的后面加上&就能够将其切换成后台程序。

但是,此时的后台程序属于当前shell的一个子进程,也就是意味着当前连接的shell一旦关闭,就会将这个后台进程也关闭。

因此,需要使用nohup将这个进程从当前的shell中脱离出来,将此后台进程的进程号切换为ppid切换为1,也就是父进程不再是当前的shell了。

这样,就算关闭当前的shell也不会关闭当前进程。

查看后台进程

当shell没有关闭时,可以使用jobs -l查看当前的后台进程。

当shell已经关闭了一次,有重新开了一个时,使用以上命令已经不能查看后台进程了,所以需要用ps -ef | grep processName来查看进程。

在我实际的使用过程中,我发现即使我使用了nohup,和 &,还是无法保证当前shell关闭后程序继续运行,因此我采用下面screen的方法

screen保证程序在后台运行

安装

一般系统不自带screen,因此需要自己安装。

ubuntu/debian: sudo apt-get install screen
centos: yum install screen

常用命令

熟练的掌握以下命令,基本的常见就够用了。

screen -S <screenName>  # 新建并进入一个窗口,名字叫screenName
screen -list # 查看目前所有窗口的名字
screen -r <screenName> # 进入指定的窗口,注意要使用上一步list出来的全称
Ctrl+A+D # 退出当前窗口并挂起,窗口内的命令继续执行
Ctrl+A+X 或 exit # 关闭窗口,全关闭

使用场景

  1. 执行screen -S test创建并自动一个新的screen
  2. 执行一个不会结束的进程top(CPU占用查看程序)
  3. 使用Ctrl+A+D退出窗口
  4. 使用screen -list查看后台进程
  5. 使用screen -r <screenName>进入窗口
  6. 停止top程序,输入exit关闭当前窗口

Enjoy It~

版权声明:
作者:ishland
链接:https://loli.flyduan.xyz/linux-process-backend/
来源:飞端博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>