Linux suspend 内建命令:挂起 Shell 进程实操详解

Linux 学习资料 https://pan.baidu.com/s/1A6qqBk2ViE_Le2cQjSowkQ?pwd=7uz8
 

一、命令简介

suspend 是 Bash 内建命令,用于挂起当前 Shell 的执行。该命令通常用于作业控制,将 Shell 置于后台暂停状态,直到收到 SIGCONT 信号才会恢复执行。它特别适用于在子 Shell 或非登录 Shell 中临时暂停任务,但默认情况下不能直接挂起登录 Shell。

二、语法格式

bash

运行

suspend [-f]

三、常用选项及说明

表格

选项说明
-f强制挂起登录 Shell(login shell)。如果不使用此选项,suspend 默认无法挂起登录 Shell。

四、示例用法

示例 1:在非登录 Shell 中挂起执行

打开一个终端,查看当前 Shell 的进程 ID(PID):

bash

运行

echo $$  # 输出示例:12345

执行挂起命令:

bash

运行

suspend

此时 Shell 会暂停执行,终端无响应。

在另一个终端中,向该 PID 发送 SIGCONT 信号以恢复执行:

bash

运行

kill -s SIGCONT 12345

原终端将恢复交互状态。

示例 2:强制挂起登录 Shell

如果需要在登录 Shell 中使用 suspend,必须添加 -f 选项:

bash

运行

suspend -f

执行后,登录 Shell 将被挂起,同样需要从其他终端发送 SIGCONT 信号来恢复。

示例 3:在脚本中挂起子 Shell

在脚本中创建子 Shell 并挂起:

bash

运行

( echo "子Shell开始执行"
suspend
echo "子Shell恢复执行" )

执行后,子 Shell 会在 suspend 处暂停,直到收到 SIGCONT 信号。

五、注意事项

  1. 作业控制依赖:suspend 是 Bash 作业控制命令之一,其他相关命令包括 bg、fg、kill、wait、disown 等。使用前需确保作业控制功能已开启。

  2. 启用作业控制:suspend 需要 monitor 选项处于开启状态。检查当前设置:

bash

运行

set -o | grep monitor

若未开启,可通过以下命令启用:

bash

运行

set -o monitor # 或 set -m
  1. 登录 Shell 限制:出于安全考虑,默认不允许挂起登录 Shell,以避免终端被意外锁定。如需挂起登录 Shell,必须显式使用 -f 选项。

  2. 信号处理:挂起的 Shell 会一直保持暂停状态,直到收到 SIGCONT 信号。确保有可靠的方式发送该信号(如从另一个终端或进程)。

  3. 内建命令:suspend 是 Bash 内建命令,更多帮助信息可通过 help suspend 查看。

  4. 返回值:命令执行成功返回 0,如果作业控制未开启或发生错误则返回非零值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿成学长_Cain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值