GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Mendapatkan Tty Di Bash Yang Sedang Berjalan?

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)


Linux
  1. Bagaimana cara mendapatkan perbedaan antara dua tanggal di bawah bash

  2. Cara mendapatkan status keluar satu lingkaran di bash

  3. Bagaimana saya bisa mendapatkan folder temp dari mesin yang menjalankan maven?

  1. Bagaimana cara memeriksa apakah ssh-agent sudah berjalan di bash?

  2. Bagaimana saya bisa mendapatkan nomor terakhir dari string di bash?

  3. Cara grep bagian file di bash shell

  1. Cara menggunakan perintah grep Linux

  2. Bagaimana cara mendapatkan netmask dari bash?

  3. Bagaimana saya bisa mendapatkan waktu jam dinding dari proses yang sedang berjalan?