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 信号。
五、注意事项
-
作业控制依赖:suspend 是 Bash 作业控制命令之一,其他相关命令包括 bg、fg、kill、wait、disown 等。使用前需确保作业控制功能已开启。
-
启用作业控制:suspend 需要 monitor 选项处于开启状态。检查当前设置:
bash
运行
set -o | grep monitor
若未开启,可通过以下命令启用:
bash
运行
set -o monitor # 或 set -m
-
登录 Shell 限制:出于安全考虑,默认不允许挂起登录 Shell,以避免终端被意外锁定。如需挂起登录 Shell,必须显式使用 -f 选项。
-
信号处理:挂起的 Shell 会一直保持暂停状态,直到收到 SIGCONT 信号。确保有可靠的方式发送该信号(如从另一个终端或进程)。
-
内建命令:suspend 是 Bash 内建命令,更多帮助信息可通过
help suspend查看。 -
返回值:命令执行成功返回 0,如果作业控制未开启或发生错误则返回非零值。

116

被折叠的 条评论
为什么被折叠?



