有没有办法通过键绑定将前台作业放到后台执行?

有没有办法通过键绑定将前台作业放到后台执行?

要将前台作业置于后台,我先按cltr+Z然后按bg [job-number]。有没有办法用一些cltr+[key]命令一步而不是两步完成这个操作?

我的意思不是&。我想将已启动并正在交互的进程置于后台。

答案1

您可以跳过作业 ID 号:如果您省略它,它将从当前环境中获取最后一个暂停的作业。因此cltr+Zbg更短。

如果你将其添加到你的.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 信号后终止所有作业。

相关内容