Linux后台执行Shell
      
        
          
          2025-01-09 09:12:45
        
        
      
      平常我们会遇到一些需求,比如执行某个shell命令会执行很久,但是终端可能会意外关闭,我们的任务就会半途而废。
比如scp传输大文件、wget下载大文件等等,这个时候我们就需要将任务在后台执行,本文将提供几种方案。
1. jobs、bg、disown -h %1
1.1 正常执行命令

1.2 ctrl+z 暂停任务

输入 jobs查看任务

1代表任务号
1.3 bg 后台执行
1  | 将1号任务放到前台  | 

此时jobs查看任务,运行中。此时如果关闭终端,会接收到SIGHUP信号,任务会被终止。
1.4 disown -h %1 移除作业、防止终止

此时任务再受当前 shell 管理,也就不受 SIGHUP 信号影响。

终止当前会话测试,此时任务还在执行,但是父进程号为1