を押すctrl+z
とアプリが停止することを既に知っています。bg
コマンドを使用してアプリをバックグラウンドに送信できますが、それはアプリが停止する時間の短い期間があることを意味します。
アプリを停止せずにバックグラウンドに直接送信するにはどうすればよいですか?
ctrl+z
コマンドを実行しbg
ます。アプリをバックグラウンドに送信するための単一のキーストロークコンボはありますか?
を押すctrl+z
とアプリが停止することを既に知っています。bg
コマンドを使用してアプリをバックグラウンドに送信できますが、それはアプリが停止する時間の短い期間があることを意味します。
アプリを停止せずにバックグラウンドに直接送信するにはどうすればよいですか?
ctrl+z
コマンドを実行しbg
ます。アプリをバックグラウンドに送信するための単一のキーストロークコンボはありますか?
回答:
フォアグラウンドからバックグラウンドにアプリケーションを送信するには、端末とシェルの両方からの協力が必要です。シェルはフォアグラウンドプロセスグループを設定する必要があるため、ターミナルは単独ではできません。端末はキー入力を処理する必要があるため、シェルはそれだけでは実行できません(シェルはフォアグラウンドにないため、キー入力を受信できません)。
近似は、アプリケーションを非常に高速でバックグラウンドに送信することです。結局、アプリケーションは他のユーザーとCPU時間を共有し、数百分の1秒の休止は問題になりません。(リアルタイムアプリケーションで実行されるため、バックグラウンドで起動するようにしてください。)最後にフォアグラウンド処理されたジョブをバックグラウンドに送信する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
英語で、聴衆の非zshユーザーの場合:
以下を行うシェル関数を定義します。
この関数をCtrl+にバインドしますZ。
コマンドラインが空であるかどうかに関係なく、単にバックグラウンド動作が必要な場合:
function bg_ { builtin bg "$@"; }
zle -N bg_
bindkey '^Z' bg_
bashで同じことができるかどうかはわかりません。bind -x '"\C-z": bg'
bashはttyストップ文字をそのままにしておき、入力としてCtrl+ Zを取得しないことを除いて、と同じくらい簡単でなければなりません。
タスクをバックグラウンドに追加する&
には、タスクを追加します。
たとえばtail -f /var/log/messages &
、タスクをすぐにバックグラウンドにします。
いつものように、jobs
コマンドでバックグラウンド化したタスクを確認できます。
もちろん、これはまだコマンドを実行していないことを前提としています。
ctrl+z
場合bg
は、コマンドラインでを押して実行し、アプリをバックグラウンドで実行します。ただし、を押してctrl+z
から実行するまでの間にbg
、アプリが完全に一時停止する期間があります。私はそれを望んでいません。すぐにバックグラウンドに送信するにはどうすればよいですか?