Linux教程之进程的后台运行(&,bg, fg, jobs, nohup)

Linux教程之进程的后台运行(&,bg, fg, jobs, nohup)

适用于 ubuntu 20.04
ubuntu 20.04 是 “西柚云” 主要使用的操作系统 西柚云官网

让进程后台运行的方式

  1. &

    sleep 10086 &
    
  2. ctrl + z 和 bg 搭配

    sleep 10010
    # 按 ctrl + z
    # 在终端输入 bg
    bg 
    
  3. 使用 nohup 的方式后台运行进程

    nohup sleep 1111 &
    

查看后台运行的进程(jobs)

jobs -l

将后台运行的进程转到前台运行(fg)

可以根据后台运行的进程编号将对应的进程转到前台来运行,编号可通过 jobs 命令查看

# 查看进程编号
jobs
# 将 1 号后台运行的进程转到前台运行
fg 1

# 不指定编号,默认将编号最大的进程转到前台运行
fg

补充内容

后台运行的进程在终端关闭后还能继续运行吗?

分情况,使用上文中的方式 1 和方式 2 运行的后台进程会在终端关闭后被杀死。

而使用 nohup 运行的后台进程在终端关闭后而主机还在运行的情况下继续运行。

下面我们来介绍一下原理:

假设我们通过 SSH 协议连接到一台 Linux 主机,连接后我们可以在当前的终端执行命令。

# 我们以上述的 3 种方式运行后台进程
 ## &
sleep 10010 &
 ## ctrl + z, bg
sleep 10086
 ## nohup
nohup sleep 111111 &

进程的组织结构:

Linux 中进程的组织结构就像一棵树

ps -ef | grep <username>
pstree -anph | grep sshd -A 5

# 一般来说,父进程被杀死后,子进程也会被杀死,但使用 nohup 方式运行的后台进程会在 sshd 进程被杀死后将
# 进程托管给 linux 的 init 进程,这样这个进程就会继续运行了。

ps -ef | grep sleep

使用 & 和 (ctrl + z,bg)方式运行的进程在终端关闭后就被杀死了,而使用 nohup 后台运行的进程在终端关闭后还运行在机器中。这是因为通常终端与 Linux 服务器是通过 SSH 协议连接的,每次连接都会建立一个 sshd 进程,在这个终端下运行的所有进程都会作为这个 sshd 进程的子进程。终端关闭后 sshd 进程就结束了,于是它的子进程也就被杀死了。

使用 nohup 运行的后台进程会在终端关闭后将进程托管到 Linux 的 init 进程,这个进程是一直在服务器中运行的,所以该进程的子进程不会因为父进程被杀死而结束。

记录日志:

在让进程后台运行时,我们通常需要记录日志,用于了解进程的运行情况。

比如运行 jupyter notebook 时,我们通常将日志输入到文件中

nohup jupyter notebook 1>jupyter.log 2>&1 &

这里的 2 表示的是错误输出,1 表示的是标准输出,标准输出会输出到终端。上述的 2>&1 会将标准错误输出重定向标准输出(终端),1>jupyter.log会将标准输出中的内容重定向到 jupyter.log 文件中,这样进程输出的日志信息就全都记录在 jupyter.log 文件中了,查看 jupyter.log 文件中的内容,就能知道进程的运行状态了。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux操作系统支持后台多进程的模式,允许多个进程同时运行,并且不占用用户界面。这种方式大大提高了系统的效率和性能,使得多个用户可以同时使用系统,并且进行不同的操作。以下是关于后台多进程的详细介绍: 首先,后台多进程是指进程在不占用shell窗口的情况下运行。它具有很多优点,例如可以在同一个shell窗口中运行多个程序,同时进行监控和管理,以及在后台运行程序时,不会干扰用户的操作,提高了系统的使用效率。 其次,Linux操作系统提供了多种方法来启动后台进程,例如使用&符号将进程放入后台,或者使用nohup命令,将进程放入后台并且忽略SIGHUP信号。同时,也可以使用job control命令来监控后台进程的运行情况,例如使用jobs命令查看后台的进程列表,以及使用fgbg命令将后台进程转换为前台进程,或者将前台进程转换成后台进程。 最后,对于后台多进程的使用,需要注意一些问题,例如在运行进程时,需要确保程序已经正确的设置路径和权限,同时也要注意进程间的通信和同步问题,以及避免进程间的死锁和竞争问题。 总之,后台多进程Linux操作系统的一个重要特性,可以提高系统的性能和效率,对于系统管理员和开发人员来说,也是必备的技能之一。同时,需要注意进程的管理和控制,避免出现安全漏洞和故障问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值