回答:
@AFHのコメントを詳しく説明すると、「SRM」がコンソール(コマンドラインインターフェイス)プログラムであり、ターミナルから実行した場合、単にヒットするだけです。Ctrl-z
これにより、ターミナルはそのSIGSTOP
シグナルを管理してフォアグラウンドプロセスを送信し、送信します背景に。その後、fg
シェルコマンドを実行して「戻す」ことができます。これは、対話型シェルによって実装されるいわゆる「ジョブコントロール」の一部であり、プロセスの送信を含む、バックグラウンドプロセスをフォアグラウンド(したがって「fg」)SIGCONT
とりわけ信号。
もちろん、プロセスを停止するには、停止してください。LinuxベースのOSを含むUnix-yシステムでは、これはプロセスに特別なシグナルの1つ(通常SIGTERM
または)を送信することで行われSIGINT
ます。Ctrl-c
プロセスを実行する端末を押すと、プロセスにSIGINT
シグナルが送信されます。このkill
プログラムは、任意のプロセスに任意の信号を送信するために使用できます。
使用の問題kill
は、その使用のほとんどで、ユーザーが信号を送信するプロセスのいわゆる「PID」を知る必要があることです。PIDは、Pの rocessのID現在OSが管理するすべてのプロセス間で一意entifier-整数≥1。
シェルのジョブ制御では、管理するプロセスを参照するニーモニックがあるため、簡単になります:を押して現在アクティブなプロセスをバックグラウンドにするCtrl-z
場合、jobs
コマンドを使用してそのシェルで管理されているプロセスのリストを表示できます。たとえば、のインスタンスを一時停止し、その後mutt
実行jobs
しました。ここに私が見るものがあります:
~$ jobs
[1]+ Stopped mutt
その[1]+
ビットに注意してください。1
シェルがそのプロセスに割り当てられたジョブの識別子です。+
最後のバックグラウンドにプロセスを参照するための「ハンドル」です。
したがって、次のように、そのプロセスを参照するためにコマンドのいずれか%1
またはコマンドを使用できます%+
kill
$ kill %1
または
$ kill %+
…そして、それらはすべてSIGTERM
単一のバックグラウンドプロセスに送信されます。
これが、不正なコンソールプログラムを強制終了する方法です。
単数形の詳細それらSIGINT
とSIGTERM
シグナルは、それらの1つを受け取ったプロセスによって「処理」できることに注意してください。これにより、プロセスは終了前に特定のクリーンアップアクションを実行できます。
しかし、プロセスが「ハング」する場合があります。たとえば、プログラミングのバグのためにCPUで無限ループを実行したり、切断されたネットワーク共有などの「デッド」リソースのファイルを読み書きしようとしてスタックしたりする場合です。これらの場合、プロセスを配信するSIGINT
かSIGTERM
、通常はプロセスを「ウェッジ解除」できません。
このような場合に対処するために、特別な信号が存在しますSIGQUIT
。これには、よく知られた番号「9」が割り当てられています。プロセスにこのシグナルを送信すると、OSは介入する機会がなく、プロセスを強制的に無効にします。だからこそ、おそらくあなたkill -9 $pid
はいくつかのドキュメントでその法典を見たでしょう。
もちろん、他のオプションもあります。
まず、htop
実行中のプロセスの検索可能なリストを提示し、それらのいずれかに選択のシグナルを送信できる「ユーザーフレンドリー」プログラムが存在します。
GNOME、XFCE、KDEなどのグラフィカルデスクトップ環境は、通常、同じことを行うためのGUIアプリを提供します。
第二に、これらの「タスクマネージャ」が利用できないか、何らかの理由で法案に合わない場合に、不正なプロセスに対処するためのより「ハッキング」な方法が存在します。以下に、それらの一部を順不同で示します。
xkill
(Debianとそれは中だその誘導体のユーティリティx11-utils
の実行には、あなたがそれにcickingことにより、任意のウィンドウを選択するべきである、と対角十字カーソルを示し、パッケージ)xkill
を強制的にそのウィンドウを所有しているプロセスが切断されますがXサーバー(すべてのGUIをレンダリングするプログラム)。
このアクションの効果はプロセスによって異なりますがxkill
、ターミナルウィンドウの場合は、SIGHUP
管理するプロセスにシグナルを送信するため、通常は終了します。
pkill
(Debianとその誘導体、それは中だ上のユーティリティprocps
パッケージには)名前が特定の文字列と一致する一連のプロセスにシグナルを送信するために使用することができます。
したがって、srm
システムで実行されていることがわかっているプロセスを強制終了する場合は、次を実行できます。
$ pkill -9 srm
srm
システムで実行されているという名前のすべてのプロセスを停止します。
本当の答えはこちら
TL; DR(最新のディスク(および7GBのファイルを保持できるものを含む)を使用する場合)
ファイルをゼロで上書きするだけでよいので:
shred -n 0 -z trashed.dat
-n 0
0はランダムデータでパスすることを意味します(それなしでは、ランダムデータでデフォルトの3パスを取得しますが、それでも過剰です)-z
ゼロを含む1つの最終パス(必要なものは1つのみ)これを考慮して、安全な消去を効率的に完了するには:
shred
上記のコマンドを実行します(突然のカルマ落下に対するブレース...)
srm
デフォルトで38パスを行うため、228GBを書き込んでファイルを削除します。すでに数回ファイルを上書きしているでしょう。あなたはそれをコントロール-cし、後で安全性の低いパスを行うことができます-蓄積すると同じことになる可能性があります。