Bir işlemin başlatıldığı dizin / disk konumunu bulmanın bir yolu var mı? / Proc mount'un farkındayım ama gerçekten nereye bakacağımı bilemiyorum.
Bir işlemin başlatıldığı dizin / disk konumunu bulmanın bir yolu var mı? / Proc mount'un farkındayım ama gerçekten nereye bakacağımı bilemiyorum.
Yanıtlar:
Yol , ihaleye karşılık gelen dizindeki bağlantıyı /proc
incelemektir exe
.
Bir örnek verelim update-notifier
:
Bu örnekte 15421 olan pid'i bulun :
egil@gud:~$ ps x | grep update-notifier
2405 pts/4 S+ 0:00 grep update-notifier
15421 ? Sl 0:00 update-notifier
Sembolik linke bakınız:
egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'
Belki which
de aradığın şeydir. Örneğin, sistemimde
which firefox
döner
/usr/bin/firefox
Ayrıca bkz . Solaris, Ubuntu, Suse veya Redhat Linux'ta Çalışan Uygulama Yolunu Bulma .
which
iyidir, ancak yalnızca $ PATH’ınızdaki programları döndürür. Eğer kaçarsam RandomProgramIDownloadedToErisKnowsWhere.bin
, bu pek işe yaramayacak.
Kullanılabilir bir işlem kimliğiniz olması koşuluyla şunları kullanabilirsiniz:
readlink -f /proc/$pid/exe
( $pid
bir işlemin işlem kimliği ile değiştirilir )
İşlem size ait değilse sudo
, önüne koymak zorundasınız .
Komutun yerini belirlemek için bir örnek firefox
:
Çıktısı ps ax -o pid,cmd | grep firefox
:
22831 grep --color=auto firefox
28179 /usr/lib/firefox-4.0.1/firefox-bin
28179
işlem kimliği olduğundan, çalıştırmanız gereken:
readlink -f /proc/28179/exe
hangi çıktılar:
/usr/bin/firefox
/proc/$pid/exe
İkili yanlışlıkla siliniyorsa, ile serin şeyler yapabilirsiniz, ile geri yükleyebilirsiniz:dd if=/proc/$pid/exe of=restored-binary
Bir terminale gitmek için Ctrl+ Alt+ tuşlarına basın Tve şunu yazın:
ls -al /proc/{pid}/fd
ve sonra çıkışı kontrol edin
Bu, işleminizin ilişkili olduğu tüm dosyaları listeler ...