自分のシェルで作業していますが、タスク管理について混乱しています。
ユーザーが所有するプロセスを一覧表示し、その pid を指定したすべてのプロセスを一時停止できます。ただし、タイトルが示すように、一時停止したジョブを実行状態とバックグラウンドまたはフォアグラウンドで再起動する必要があります。
私のコマンドは次のとおりです。
mybg <PID>
myfg <PID>
さて、そのpidを使ってプロセス名を取得し、プロセス名でbg / fgを使用したいと思います。これはあまり役に立ちません。
答え1
タスクを一時停止する方法は?私が知っている唯一の方法はSIGSTOPを送信することです。これはbashでCtrl-Zを使用してフォアグラウンド操作を実行できます。
これ以降は実行されなくなり、フォアグラウンド操作ではなくなり、キーボードはそれに接続されません。シェルはフォアグラウンド操作なので、シェルfgまたはbgを子プロセスとして指定する必要があります。
ただし、シェルは停止を解放するためにジョブに SIGCONT を送信します。プロセスはこれらの信号を直接取得しません。カーネルはPidの実行状態を変更し、スケジューラはジョブが停止状態の場合はそのジョブを無視します。
kill -STOP %1
bashのように直接または(ジョブIDまたはpid)を使用することもできますkill -STOP 14193
。-CONT