发送命令到另一个用户的屏幕终端

发送命令到另一个用户的屏幕终端

我有两个用户:user1 和 user2。我有一个由 user1 运行的 bash 脚本,需要在由 user2 启动的屏幕终端上运行命令。有什么建议吗?谢谢 Max

答案1

你想让它看起来像用户2输入命令了吗?

在这种情况下screen,您可以使用

screen -S user2/sessionname -p windowname -X stuff "~user1/somescript.sh
"

这会将文本~user1/somescript.sh(引用 user1 主目录中的文件)输入到给定屏幕会话的特定窗口并发送换行符。

(是的,第二个"必须在新行中,否则您只需发送文本并必须在屏幕会话中按回车键。或者,使用$'stuff blah\n'

为此,您需要具有 的写权限user2/sessionname;阅读屏幕手册页以了解multiuser和的描述acladd


在一般的“在另一个 tty 上运行东西”的情况下,你可以使用writevt /dev/pts/X sometext;该writevt工具是控制台工具软件包。如果您的发行版使用韋斯特相反,得到writevt.c。这是 Linux 所特有的。

或者你只是希望用户 2 看到输出

./somescript.sh >& /dev/pts/X

/dev/pts/X属于用户 2 的屏幕的 tty 设备在哪里。

您将需要写权限;这可以由 user2 使用 chmod/setfacl 授予,或者您可以使用sudo

>& file相当于> file 2>&1,将 stdout 和 stderr 重定向到给定的文件。)

相关内容