Answers:
好吧,从技术上讲,您不在此处重定向任何内容。
调用script /dev/null
将使script
整个打字稿保存起来/dev/null
,实际上这意味着丢弃内容。
有关man script
详细信息,请参见和实现的util-linux-ng软件包(misc-utils/script.c
)。
这screen
实际上与无关。调用此功能的原因script
有一个副作用,即在为您创建了一个伪终端/dev/pts/X
。这样,您不必自己做,屏幕也不会出现权限问题-如果您是su
从用户A到用户B的用户,则直接调用即可screen
尝试抢占用户A的伪终端。除非您是root,否则这不会成功。这就是为什么您看到错误消息的原因。
为了直接输出到终端窗口,正在运行的程序必须能够写入控制终端。如果您使用的是xterm或ssh或其他虚拟连接(与真实的实时直接连接的终端相反),则您的控制终端是伪tty(pty)。
您的pty设置为只有您登录时才具有写权限,否则其他用户可能会在您的显示器上涂鸦(或阅读)。因此,当您向另一个用户(该用户不是root用户)求助时,该用户无权访问基础pty。
但是,更复杂的I / O(例如屏幕)需要直接访问pty才能工作,这就是控制整个屏幕的魔力。那就是当您遇到运行命令的人无法正确访问控制终端的问题时。
将脚本重定向到/ dev / null会导致屏幕不尝试写入控制终端,因此不会遇到权限问题。
/dev/null
。第一:脚本记录会话(参见手册页),而你不都需要它:所以说去到/ dev / null的。但是它没有副作用:它可以创建伪终端,现在您正在使用它,并且屏幕可以写入该伪终端。请参阅@ karol-piczak的答案。
su
在屏幕会话中运行。