tru*_*ktr 25 command-line shell jobs background-process
我已经知道按下会ctrl+z停止应用程序,然后我可以使用bg命令将应用程序发送到后台,但这意味着应用程序停止的时间很短。
如何在不停止的情况下将应用程序直接发送到后台?
pra*_*k61 18
您可以通过在任务&后面添加一个来作为后台任务。
例如tail -f /var/log/messages &将立即后台任务。
与往常一样,您可以看到您使用该jobs命令后台处理的任务。
这当然假设您尚未运行该命令。
Gil*_*il' 18
将应用程序从前台发送到后台需要终端和外壳的合作。终端不能单独做,因为shell要设置前台进程组。外壳无法单独完成,因为终端必须处理按键操作(外壳不在前台,因此无法接收按键)。
一个近似的方法是非常快速地将应用程序发送到后台。毕竟,应用程序与其他应用程序共享 CPU 时间,百分之几秒的暂停应该无关紧要。(它适用于实时应用程序,因此请确保在后台启动这些应用程序。)我使用 shell 绑定Ctrl+Z将最后一个前台作业发送到后台。这样,按Ctrl+ Z Ctrl+Z会将作业以最少的暂停时间发送到后台。
这是我的 zsh 绑定,当命令行不为空时,它也“背景”了一个半类型的命令。
fancy-ctrl-z () {
emulate -LR zsh
if [[ $#BUFFER -eq 0 ]]; then
bg
zle redisplay
else
zle push-input
fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z
Run Code Online (Sandbox Code Playgroud)
在英语中,对于观众中的非 zsh 用户:
定义执行以下操作的 shell 函数:
将此函数绑定到Ctrl+ Z。
如果您只想要后台行为而不管命令行是否为空:
function bg_ { builtin bg "$@"; }
zle -N bg_
bindkey '^Z' bg_
Run Code Online (Sandbox Code Playgroud)
我不知道你是否可以在 bash 中做同样的事情。它应该和 一样简单bind -x '"\C-z": bg',只是 bash 将 tty 停止字符留在原地,因此它永远不会将Ctrl+Z作为输入。
| 归档时间: |
|
| 查看次数: |
30050 次 |
| 最近记录: |