停止せずにバックグラウンドに作業を入れる

停止せずにバックグラウンドに作業を入れる

このように仕事を始めるとしましょう。

foo

それからそれを背景にしたいと思います。Ctrl+を入力するZbgトリックが実行されますが、+とfooの間で停止します。最初にfooを凍結せずにバックグラウンドに入れることはできますか?CtrlZbg

答え1

&コマンド()の後に記号を追加すると、foo &すぐに背景になります。しかし、私は方法がないと信じています。基準一部の背景コンテンツに使用される端末/シェルの構成まもなく一応前景です。

答え2

技術的にはfooすでにバックグラウンドで実行されています。 2番目のターミナルセッションを開始でき、他の操作を実行している間は、最初のターミナルセッションがfoo実行され続けます。

Xでは、単に2番目のターミナルアプリケーションを起動するか、選択したターミナルエミュレータにその機能がある場合は別のタブを開くことが含まれます。

コンソールに計画がない場合は、別の仮想端末に切り替えて再度ログインする必要があります。

screenあるいは、同じ端末マルチプレクサを使用している場合は、tmux別のセッションを開始できます。たとえば、画面ではCtrl+Aの後に+を使用してCtrl実行されますC。これらを切り替えるには、Ca Cn と Ca Cp を使用してターミナルセッション間を前後に切り替えます。

答え3

フォアグラウンドからバックグラウンドにアプリケーションを送信するには、端末とシェルの協力が必要です。端末は、シェルがフォアグラウンドプロセスグループを設定する必要があるため、単独では実行できません。端末がキー押下を処理する必要があるため、シェルはこの操作を単独で実行できません(シェルは前景にないため、キー押下を受信できません)。

zshの構成+をすばやく連続して2回押すことができますCtrlZ最初に押すとプロセスが一時停止し、2回目を押すとバック​​グラウンドで再起動されます。これをbashに移植する方法がわかりません。

キー入力注入を許可する端末エミュレータで実行している場合は注入できます^Zbg^M^制御文字記号を使用)。たとえば、X11端末エミュレータの場合、xdotool --window 1234 Ctrl_L+Z b g Return1234が端末エミュレータのウィンドウIDである場合に実行します。 Screenの場合、ここでscreen -S foo -p 12 -X stuff $'\032bg\r'fooスクリーンセッションの名前、12ウィンドウIDです。

答え4

この状況で入力速度が十分に速くない場合は、kill -s SIGSTOP 1023 && kill -s SIGCONT 10231023をターゲットPIDとし、別のシェルで実行してください。

免責事項:ルスランbashこのシーケンスは、実際にはユーザーが気づかないようにタスクを早く再開することを示しています。

関連情報