Dalam metode kedua yang diusulkan oleh halaman ini, seseorang mendapatkan tty di mana bash dijalankan dengan perintah:
ps ax | grep $$ | awk '{ print $2 }'
Saya berpikir pada diri sendiri bahwa ini agak malas, mendaftar semua proses yang berjalan hanya untuk mengekstrak salah satunya. Bukankah lebih efisien (saya juga bertanya apakah ini akan menimbulkan efek yang tidak diinginkan) untuk dilakukan:
ps -p $$ | tail -n 1 | awk '{ print $2 }'
FYI, saya menemukan masalah ini karena terkadang perintah pertama benar-benar menghasilkan dua (atau lebih) baris. Ini akan terjadi secara acak, ketika akan ada proses lain yang berjalan dengan PID yang berisi $$
sebagai substring. Dalam pendekatan kedua, saya menghindari kasus seperti itu dengan meminta PID yang saya tahu saya inginkan.
Jawaban yang Diterima:
Cukup dengan mengetik tty
:
$ tty
/dev/pts/20
Terlalu sederhana dan jelas untuk menjadi kenyataan
Sunting: Yang pertama mengembalikan Anda juga pty
dari proses yang menjalankan grep
seperti yang Anda perhatikan:
$ ps ax | grep $$
28295 pts/20 Ss 0:00 /bin/bash
29786 pts/20 S+ 0:00 grep --color=auto 28295
oleh karena itu Anda perlu memfilter grep untuk mendapatkan hanya satu hasil, yang semakin jelek:
ps ax | grep $$ | grep -v grep | awk '{ print $2 }'
atau menggunakan
ps ax | grep "^$$" | awk '{ print $2 }'
(varian yang lebih waras)