Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何列出当前正在使用的终端_Bash_Shell_Terminal_Tty - Fatal编程技术网

Bash 如何列出当前正在使用的终端

Bash 如何列出当前正在使用的终端,bash,shell,terminal,tty,Bash,Shell,Terminal,Tty,我想将脚本运行的终端设置为bashshell脚本中的变量。 如tty7、pts/0或ttyacm0等 我尝试了printenv,sudo printenv和declare-xp 但在列表中我只看到了ssh_术语。但我知道我在/dev/tty6中运行了一个脚本 所以它并没有列出所有正在使用的终端,只是列出了当前的终端 有没有一种简单的方法列出所有正在使用的shell 更新: who-a似乎是正常运行期间使用的所有终端。 那些说old的是那些我知道还有其他脚本在运行的脚本。 但这是什么生意 j0h

我想将脚本运行的终端设置为bashshell脚本中的变量。 如tty7、pts/0或ttyacm0等

我尝试了
printenv
sudo printenv
declare-xp
但在列表中我只看到了ssh_术语。但我知道我在/dev/tty6中运行了一个脚本 所以它并没有列出所有正在使用的终端,只是列出了当前的终端

有没有一种简单的方法列出所有正在使用的shell

更新: who-a似乎是正常运行期间使用的所有终端。 那些说old的是那些我知道还有其他脚本在运行的脚本。 但这是什么生意

j0h      - tty6         2014-05-16 07:50  old         9593
LOGIN      tty1         2014-05-15 19:10              1675 id=1
j0h      + tty7         2014-05-15 19:13  old         1936

如果我正确理解了问题,您正在寻找特定脚本使用的终端,如果是这样,您可以使用以下内容:

x=($(ps aux | grep script_name)| awk '{print $7}') #you may have to check which column to filter
脚本使用的所有终端都将位于数组x中,然后您可以

for i in ${x[*]}
do
echo $i
done

要获取单个值,请执行以下命令

tty
打印连接到标准输入的终端的文件名,例如
/dev/pts/51

要查看所有shell,可以使用
w
who

who-a
who-p
应该给你更多的信息

读读这个人的文章,快速了解各种可能性。(您可以选择用户…)

更新:
假设您的脚本名为
MyScript.sh
。如果添加为第1行

#!/bin/bash  
您可以更改属性

chmod u+x MyScript.sh
您可以使用
/MyScript.sh执行它,以后您可以直接使用它们进行搜索

pgrep -wal MyScript.sh 

(它将返回进程的pid)

来自
man who
who-T
添加用户的消息状态为
+
-
。而
who-a--all
与-b-d--login-p-r-t-t-u相同