Linux 作业控制神器:fg 命令详解 —— 一键将后台任务切回前台

Linux 作业控制神器:fg 命令详解 —— 一键将后台任务切回前台 一、命令简介fgforeground是一个 Bash 内建命令用于将后台作业在后台运行或挂起的作业移动到前台终端继续执行。该命令是 Linux/Unix 系统作业控制的核心工具之一常用于恢复被挂起的任务或管理多任务执行。二、语法格式plaintextfg [job_spec ...]参数说明job_spec可选指定要移动到前台的作业标识符。可以是作业编号如 %1、进程 ID 或部分命令行前缀。如果省略则默认操作最近一个被挂起或放入后台的作业。三、常用选项及说明fg 命令本身没有独立选项其行为完全由 job_spec 参数控制。作业标识符的常见格式如下表格标识符格式说明%n作业编号 n例如 %1 表示 1 号作业。%string以指定字符串开头的作业命令例如 % sleep 匹配以 sleep 开头的作业。%?string命令行中包含指定字符串的作业例如 %?60 匹配包含 60 的作业。%% 或 %当前作业最近被挂起或放入后台的作业。%-前一个作业当前作业之前的一个作业。四、示例用法示例 1恢复最近挂起的作业启动一个任务例如 sleep 60然后按 CtrlZ 挂起plaintext$ sleep 60 ^Z [1] Stopped sleep 60使用 fg不带参数恢复该作业到前台plaintext$ fg sleep 60 # 任务恢复执行示例 2恢复指定编号的后台作业启动两个后台任务plaintext$ sleep 100 [1] 12345 $ sleep 200 [2] 12346将 1 号作业移动到前台plaintext$ fg %1 sleep 100 # 此时终端被该任务占用示例 3使用命令前缀指定作业启动一个后台任务plaintext$ tar -czf backup.tar.gz /home [1] 12347通过命令前缀匹配并移到前台plaintext$ fg %tar tar -czf backup.tar.gz /home # 恢复执行示例 4恢复包含特定字符串的作业启动一个后台编译任务plaintext$ make all [1] 12348通过匹配命令行内容恢复plaintext$ fg %?all make all # 恢复编译任务五、注意事项作业控制依赖 Monitor 模式 fg 命令需要 Bash 的 monitor 选项处于开启状态。可通过以下命令检查或启用检查 monitor 状态plaintextset -o | grep monitor开启 monitor 选项plaintextset -o monitor # 或使用简写 set -m作业与进程的区别 作业Job是 Shell 管理的任务单元一个作业可以包含多个进程如管道命令 ls | grep txt。fg 操作的是作业而非单个进程。后台作业的状态 使用 jobs -l 可查看后台作业的详细状态包括作业编号、进程 ID、状态等便于准确指定 job_spec。信号传递 当作业被 fg 移动到前台后终端信号如 CtrlC 中断、CtrlZ 挂起将直接传递给该作业。多作业操作 可以同时将多个作业移动到前台但只有第一个作业会立即获得控制权后续作业将在前一个结束后依次执行实践中较少这样使用。相关命令bg将挂起的作业在后台继续运行。jobs列出当前会话中的后台作业。CtrlZ挂起当前前台作业。在命令末尾添加 可使作业在后台启动。帮助信息 由于 fg 是 Bash 内建命令查看详细帮助需使用plaintexthelp fg