今天在定位一个问题时, 查看 message 日志, 需要知道 message 日志中的记录分别是哪个 Xterm 终端操作的比较了半天才发现原来日志中可以通过 pts 来进行区分如下所示:
- 2018-02-12T15:55:10.845768+08:00|notice|[/bin/bash]|[2018-02-12 15:55:10 root cd test/] return code=[0], execute success by [root] from [pts/0 (9.4.90.52)]
- 2018-02-12T15:55:20.790348+08:00|notice|[/bin/bash]|[2018-02-12 15:55:20 root cd /home/test/] return code=[0], execute success by [root] from [pts/1 (9.4.90.52)]
另外, messages 日志中会记录操作的执行时间, 以及结束时间比如要执行一个操作, 但这个操作要等一段时间才返回, 那么这个操作不会马上记录在 messages 日志中, 需要等到这个操作执行完后, 才会在日志中有记录, 如上日志中, 蓝色的时间, 为操作执行的时间, 绿色部分的时间为操作返回的时间
下面来重点说下这个 pts, 我是个菜鸟, 竟然这个简单的基本概念也不清楚, 于是收集了一些资料学习下参考资料: http://blog.csdn.net/mountzf/article/details/51735691
下面来具体操作一下
1) 首先通过 bmc 打开远程控制台, 登陆进去后, 输入 who 和 tty, 显示如下:
- linux-UMLhEm:tty
- /dev/tty6
使用 Alt + [F1-F6] 组合键后, 需要重新登陆控制台, 在查看 tty 时, 就发现 ttyn 在发生变化通过 bmc 打开的远程控制台, 为控制台终端
2) 通过 Xtem ssh 登陆的终端为伪终端, 如下
- linux-UMLhEm:/dev/pts # tty
- /dev/pts/0
换一个 Xtem 端口, 查询
- linux - UMLhEm: /dev # tty
- /dev / pts / 1
3) 通过 ps -aux | grep tty 查询, kill -9 pid(tty6) 后, 发现控制台终端退出, 提示重新登陆
ps -aux | grep pts 查询如下:
- linux-UMLhEm:/dev/pts # ps -aux | grep pts
- root 14385 0.0 0.0 115992 2688 pts/1 Ss+ 15:51 0:00 -bash
- root 18769 0.0 0.0 139476 1656 pts/0 R+ 17:47 0:00 ps -aux
- root 18771 0.0 0.0 112648 976 pts/0 S+ 17:47 0:00 grep --color=auto pts
- root 22908 0.0 0.0 115884 2580 pts/0 Ss 15:44 0:00 -bash
- root 24002 0.0 0.0 115880 2644 pts/2 Ss+ 17:18 0:00 -bash
kill -9 pid(pts/2),Xtem 上退出登陆
可以利用命令 kill -9 pid 杀死 Xterm 连接的进程
4) 通过 echo 重定向到不同的终端
在 bmc 上的控制台终端, 输入如下:
- linux-UMLhEm:#tty
- /dev/tty6
- linux-UMLhEm:#echo "test" >/dev/tty0
- test
- linux-UMLhEm:#echo "test" >/dev/tty1
- linux-UMLhEm:#echo "test" >/dev/tty2
- linux-UMLhEm:#echo "test" >/dev/tty6
- test
- linux-UMLhEm:#echo "test" >/dev/tty
- test
tty0 则是当前所使用虚拟终端的一个别名, 系统所产生的信息会发送到该终端上,/dev/tty 就是当前进程的控制终端的设备特殊文件
在 Xtem 打开的终端, 输入如下:
- linux-UMLhEm:/dev/pts # tty
- /dev/pts/0
- linux-UMLhEm:/dev/pts # echo "test" >/dev/pts/0 // 输入到当前终端
- test
- linux-UMLhEm:/dev/pts # echo "test" >/dev/tty // 当前终端
- test
- linux-UMLhEm:/dev/pts # echo "test" >/dev/pts/1 // 该终端不存在
- -bash: /dev/pts/1: Permission denied
- linux-UMLhEm:/dev/pts # echo "test" >/dev/pts/2 // 输出到 Xterm 打开的另一个窗
- linux-UMLhEm:/dev/pts #
- linux-UMLhEm:/dev/pts # echo "test" >/dev/tty0 // 输出到 bmc 打开的控制台终端
- linux-UMLhEm:/dev/pts # echo "test" >/dev/tty6 // 输出到 bmc 打开的控制台终端
- FAQ
Q:/dev/console 是什么?
A:/dev/console 即控制台, 是与操作系统交互的设备, 系统将一些信息直接输出到控制台上目前只有在单用户模式下, 才允许用户登录控制台
Q:/dev/tty 是什么?
A:tty 设备包括虚拟控制台, 串口以及伪终端设备 / dev/tty 代表当前 tty 设备, 在当前的终端中输入 echo hello > /dev/tty , 都会直接显示在当前的终端中
Q:/dev/ttyS * 是什么?
A:/dev/ttyS * 是串行终端设备
Q:/dev/tty0 与 / dev/tty1 /dev/tty63 是什么? 它们之间有什么区别?
A:/dev/tty0 代表当前虚拟控制台, 而 / dev/tty1 等代表第一个虚拟控制台, 例如当使用 ALT+F2 进行切换时, 系统的虚拟控制台为 / dev/tty2 , 当前的控制台则指向 / dev/tty2
Q: 如何确定当前所在的终端 (或控制台)?
A: 使用 tty 命令可以确定当前的终端或者控制台
来源: http://www.bubuko.com/infodetail-2497139.html