Control+Zキーボードキーの代わりにコマンドラインで作業する方法は? (Linuxで)
実行中のすべての端末を停止し、後で再起動する必要があります。
答え1
Control+フォアグラウンドのすべてのプロセス端末にシグナル(Linux amd64では20、Solaris amd64では24、FreeBSD amd64では18...シグナルを数字で参照するのは避けるのが最善です)を受け取るZ制御文字を書き込みます。プロセスグループ。susp
SIGTSTP
-コマンドを使用してコマンドラインから信号を送信してプロセスを停止できますkill
。
kill -s STOP <pid>
(<pid>
一時停止したいプロセスのIDはどこにありますか)、または特定の名前を使用してプログラム内のすべてのプロセスを指定したい場合(技術的に名前が付けられた拡張正規表現に一致するすべてのプロセス):
pkill -STOP xterm
(xterm
サンプル名はどこにありますか?)
プロセスを再開する必要がある場合でも、SIGCONT
同じ方法で信号が送信されます。
答え2
制御端末であるすべてのプロセス(該当する端末とシェルで実行されているすべてのフォアグラウンドおよびバックグラウンドジョブを含む)を停止するには、/dev/pts/12
次のようにします。
pkill -STOP -t pts/12
これにより、会議リーダーも一時停止します。場合によっては、プロセスが自動的に再開される可能性があります。たとえば、GNU は中断されscreen
たことを検出するとすぐに、セッションリーダーを直ちに再開します。
その端末のフォアグラウンドプロセスグループにSIGTSTP信号を送信するには、^Z
次の手順を実行します。
kill -s TSTP -- "-$pgid"
ここでは、$pgid
フォアグラウンドプロセスグループのプロセスグループIDです。リストにあるLinuxおよびBSDでは、ps -o tpgid= -p "$pid"
その端末を制御端末として使用するプロセスのIDを実行して見つけることができます。$pid
ほとんどのシステムでは、これらのプロセスはtcgetpgrp()
。
どちらの場合も、SIGSTOP / SIGTSTPの代わりにSIGCONT信号を送信してこれらのプロセスを再開できます。
答え3
STOP
中断したいプロセスにシグナルを送信します。
CONT
停止したプロセスをキャンセルするために後でシグナルを送信できます。
たとえば、
pkill -STOP terminal
これにより、すべてのterminal
プロセスが中断されます。
pkill -CONT terminal
これにより、名前付きのすべてのプロセスが中断解除されますterminal
。