![发送命令到另一个用户的屏幕终端](https://linux22.com/image/1269446/%E5%8F%91%E9%80%81%E5%91%BD%E4%BB%A4%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%94%A8%E6%88%B7%E7%9A%84%E5%B1%8F%E5%B9%95%E7%BB%88%E7%AB%AF.png)
我有两个用户: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 重定向到给定的文件。)