如何让 Linux 进程在后台运行 Shepard-Wang

nohup 命令与 & 命令

nohup 是指 no hang up,让进程忽略 SIGHUP 信号,当 session 结束时,进程依然会运行

& 表示让进程在后台运行。一般放在命令的最末尾。

在 shell 1 中输入如下命令

nohup ./main & 

然后关闭 shell 1,打开 shell 2

ps -axjf | head -1 && ps -axjf | grep main
❯ ps -axjf | head -1 && ps -axjf | grep main
   PPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND
       1  142145  142145  120383 ?             -1 SN       0   0:00 ./main
ctrl + z 将进程挂起到后台

ctrl+z表示将当前前台运行的经常放在后台并挂起,如需其在后台继续运行,需用“bg 进程号”使其继续运行;再用”fg 进程号”可将后台进程前台化。

jobs 命令

显示当前 shell 后台运行的进程

-l 查看进程 pid

fg/bg 命令
  • fg

    将后台中的命令调至前台继续运行

    如果后台中有多个命令,可以用 fg %jobnumber 将选中的命令调出,%jobnumber 是通过 jobs 命令查到的后台正在执行的命令的序号(不是pid)

  • bg

    将一个在后台暂停的命令,变成继续执行

    如果后台中有多个命令,可以用 bg %jobnumber 将选中的命令调出,%jobnumber 是通过 jobs 命令查到的后台正在执行的命令的序号(不是pid)

fg 如果没有指定后台进程,则选中最近放到后台执行的命令

❯ jobs
[1]  + suspended  nohup ./main
[2]  - suspended  nohup ./main
❯ fg %2
[2]  - 174411 continued  nohup ./main
^Z
[2]  + 174411 suspended  nohup ./main
❯ fg %1
[1]  - 174358 running    nohup ./main
^Z
[1]  + 174358 suspended  nohup ./main