Linux后台执行Shell
2025-01-09 09:12:45

平常我们会遇到一些需求,比如执行某个shell命令会执行很久,但是终端可能会意外关闭,我们的任务就会半途而废。

比如scp传输大文件、wget下载大文件等等,这个时候我们就需要将任务在后台执行,本文将提供几种方案。

1. jobs、bg、disown -h %1

1.1 正常执行命令

image-20250108231342912

1.2 ctrl+z 暂停任务

image-20250108231633493

输入 jobs查看任务

image-20250108231720383

1代表任务号

1.3 bg 后台执行

1
2
3
4
5
6
# 将1号任务放到前台
fg %1
# 将1号任务挂到后台
bg %1
# 将1号任务终止
kill %1

image-20250109085139978

此时jobs查看任务,运行中。此时如果关闭终端,会接收到SIGHUP信号,任务会被终止。

1.4 disown -h %1 移除作业、防止终止

image-20250109090617798

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

image-20250109090915400

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

上一页
2025-01-09 09:12:45