プロセスは実行中ですが、xmms2d
2つの可能な実行可能ファイル(他のディレクトリ、実行可能ファイルパスの両方)がプロセスを作成できます。時にはプログラムが動作し、時には動作しないため、そのうちの1つが破損しているようです。これで実行中のプロセスが正常に動作するので、他のプロセスを削除(または名前変更)したいと思います。
ps ax|grep "xmms"
8505 ? SLl 2:38 xmms2d -v
パス情報なしで返されます。 PIDが与えられたら、または/usr/bin/xmms2d
で実行されているかどうかを確認できますか/usr/local/bin/xmms2d
?
ありがとうございます!
答え1
この試み:
ls -l /proc/8505/exe
または、解析された出力を望まない場合は、ls
次のようにします。
readlink /proc/8505/exe
または
realpath /proc/8505/exe
答え2
Solarisを実行している場合、推奨されるアプローチはLinuxとは少し異なります。
$ for i in $(pgrep bash)
do
printf "%6d %s\n" $i $(readlink /proc/$i/path/a.out)
done
577 /usr/bin/bash
11247 /usr/bin/bash
13921 /usr/bin/bash
13992 /tmp/bash
実行中のプロセスの現在の作業ディレクトリを知りたい場合は、次のものを使用できます。
pwdx $(pgrep xmms)
たとえば、
$ pwdx $(pgrep ksh)
2904: /home/jlliagre
2906: /home/jlliagre
3844: /tmp
答え3
シェルからマウスパッドを起動します。
mousepad &
[1] 24289
ソースがどこにあるかを確認してください。
which mousepad
/usr/bin/mousepad
パスで始まる:
/usr/bin/mousepad &
psを通して見る:
ps v -C mousepad
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
24289 pts/3 S 0:00 3 62 85441 10964 1.0 mousepad
24292 pts/3 S 0:00 0 62 85433 10864 1.0 /usr/bin/mousepad
ご覧のとおり、パスなしで呼び出されたものはパスを表示せずにPATHで始まるため、渡されることがあります。
which mousepad
本当に簡単ではありませんか?待つ!メニューからマウスパッドを起動するとどうなりますか? PATH設定を有効または無効にすることができます。頑張りました。通常の起動は単純な「マウスパッド」を生成しますps v -C
。 〜/ binは私のPATHの最初の部分なので、そこにダミープログラムを作成し、ジャジャン、メニューからダミープログラムを開始しました。
しかし、自分で削除されるプログラムを実行するとどうなりますか? 2番目のプログラムがパスにある場合、削除されたプログラムが見つからず、エラーが報告されます。
これは競争条件です。プログラムが場所を調査中にプログラム自体が削除または移動されないことがわかっている場合は、正常に機能しps v -C NAME
ますwhich NAME
。
答え4
強制 -f オプションを使用せずに両方のファイルを削除します。削除されたファイルは実行されないファイルです!
システム実行可能ロックを使用すると、現在実行中のファイルを削除できません。