Solusi 1:
cat /proc/<pid>/environ
Jika Anda ingin memiliki pid dari suatu executable yang sedang berjalan, Anda dapat, di antara beberapa kemungkinan lainnya, gunakan pidof
:
AlberT$ pidof sshd
30690 6512
EDIT :
Saya benar-benar mengutip komentar Dennis Williamson dan Teddy untuk mendapatkan hasil yang lebih mudah dibaca. Solusi saya adalah sebagai berikut:
tr '\0' '\n' < /proc/<pid>/environ
Solusi 2:
Karena pertanyaan ini memiliki unix tag dan semua orang telah melakukan pekerjaan yang luar biasa menangani linux tag, Anda bisa mendapatkan informasi ini di OS X dan sistem turunan BSD lainnya menggunakan
ps -p <PID> -wwwe
atau
ps -p <PID> -wwwE
dan di Solaris dengan
/usr/ucb/ps -wwwe <PID>
Solaris juga mendukung /proc
direktori jika Anda tidak ingin mengingat ps
yang tidak jelas perintah.
Solusi 3:
Seperti yang telah disebutkan orang lain, di Linux, Anda dapat melihat /proc tetapi ada, bergantung pada versi kernel Anda, satu atau dua batasan:
Pertama-tama, file lingkungan berisi lingkungan seperti yang terlihat saat proses tersebut dijalankan. Artinya, setiap perubahan yang mungkin dilakukan proses pada lingkungannya tidak akan terlihat di /proc:
$ cat /proc/$$/environ | wc -c
320
$ bash
$ cat /proc/$$/environ | wc -c
1270
$
Shell pertama adalah shell login dan awalnya memiliki lingkungan yang sangat terbatas tetapi menumbuhkannya dengan sumber mis. .bashrc tetapi /proc tidak mencerminkan hal ini. Shell kedua mewarisi lingkungan yang lebih besar dari awal, yang mengapa ditampilkan di /proc.
Selain itu, pada kernel lama, konten file lingkungan dibatasi hingga ukuran halaman (4K):
$ cat /proc/$$/environ | wc -c
4096
$ env | wc -c
10343
$
Di antara 2.6.9 (RHEL4) dan 2.6.18 (RHEL5), batas ini telah dihapus...
Solusi 4:
penggunaan opsi BSD yang benar untuk melakukan ini (setidaknya di linux):
ps e $pid
atau
ps auxe #for all processes
dan ya, halaman manual ps cukup membingungkan.(via)
Solusi 5:
Meskipun agak jarang didokumentasikan, isi dari /proc/<pid>/environ
hanya akan berisi lingkungan yang digunakan untuk memulai proses.
Jika Anda perlu memeriksa status lingkungan proses saat ini, salah satu cara melakukannya adalah dengan menggunakan gdb
.
# Start gdb by attaching it to a pid or core file
gdb <executable-file> <pid or core file>
# Run the following script to dump the environment
set variable $foo = (char **) environ
set $i = 0
while ($foo[$i] != 0)
print $foo[$i++]
end