要将前台作业置于后台,我先按cltr+Z然后按bg [job-number]
。有没有办法用一些cltr+[key]命令一步而不是两步完成这个操作?
我的意思不是&
。我想将已启动并正在交互的进程置于后台。
答案1
您可以跳过作业 ID 号:如果您省略它,它将从当前环境中获取最后一个暂停的作业。因此cltr+Z和bg
更短。
如果你将其添加到你的.profile
或.bashrc
bind '"\ek"':"\"bg\C-m\""
alt+w应该放在bg
你的屏幕上并执行它,以便它最终进入后台。
例子:
rinzwind@discworld:~$ smplayer
This is SMPlayer v. 0.6.9 (SVN r3447) running on Linux
^Z
[1]+ Stopped smplayer
rinzwind@discworld:~$ bind '"\ek"':"\"bg\C-m\""
[1]+ smplayer &
不过,我无法在命令中添加cltr+ Z。可能是因为信号被忽略:
Ctrl+Z 暂停信号,向正在运行的程序发送 SIGTSTP,从而停止它并将控制权返回给 shell。
12.1.1.2. 向 Bash shell 发送信号
如果没有任何陷阱,交互式 Bash shell 会忽略 SIGTERM 和 SIGQUIT。SIGINT 会被捕获并处理,如果作业控制处于活动状态,SIGTTIN、SIGTTOU 和 SIGTSTP 也会被忽略。如果键盘生成,则作为命令替换结果运行的命令也会忽略这些信号。
默认情况下,SIGHUP 会退出 shell。交互式 shell 将向所有正在运行或已停止的作业发送 SIGHUP;如果要禁用特定进程的此默认行为,请参阅 disown 内置函数的文档。使用 shopt 内置函数的 huponexit 选项,在收到 SIGHUP 信号后终止所有作业。