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ı /procincelemektir 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 whichde 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 .
whichiyidir, 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
( $pidbir 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 ...