7

私は Linux で作業しています。次のように Linux 端末で for ループを実行しました。

for i in `cat fileName.txt`
do
echo $i
vim $i
done

fileName.txt は、vim エディターで 1 つずつ開いている多数のファイル エントリを含むファイルです。ここで、その間に他のファイルを開くことをスキップする必要があります (つまり、for ループを中断する必要があります)。実行中の for ループの PID を取得する方法はありますか? そして同じことを殺します。前もって感謝します。

4

4 に答える 4

13

実行中のジョブを強制終了したい。を押しCtrlZます。Bash は次のように表示されます。

[1]+  Stopped                 vim $i

その番号を使用して信号killを送信します。KILL

kill -9 %1

その後、それを殺す必要があります:

[1]+  Killed                  vim $i
于 2012-05-07T14:21:31.650 に答える
2

これもトリックを行うかもしれません:

while true ; do killall vim ; done

これは通常どおり ^C で中止できます。

于 2012-05-07T09:20:36.013 に答える
1

vimプロセスの親のプロセスID(PID)を見つけます。これは、forループを実行するシェルである必要があります。「pstree-p」を使用してみてください。次に、「kill」を使用してそのプロセスIDを強制終了します。

于 2012-05-07T14:27:29.950 に答える
0

vim プロセスの作成を終了するには、for ループを停止する必要があります。このループは、bash プロセスによって管理されます。そのため、プロセスの PID を見つけて強制終了します。これを行うには、親プロセスの PID である vim プロセスの PPID を見つけ、親プロセスを終了します。 ps -elf | tr -s ' ' | grep vim | cut -f5 -d ' ' | xargs kill

このコマンドをこの 2 番目のコマンドと一緒に使用すると、すべての vim プロセスが強制終了され、vim インスタンスが残らないようになります。 ps -elf | tr -s ' ' | grep vim | cut -f4 -d ' ' | xargs kill

「権限が許可されていません」という問題があったようです。これはパーミッションの欠如が原因である可能性があるため、確実にプロセスを強制終了するには、 sudo で xargs kill を呼び出すことができます。ps -elf | tr -s ' ' | grep vim | cut -f5 -d ' ' | sudo xargs kill

于 2016-11-29T16:48:04.120 に答える