我必须在一个特定的tty上启动TextUI守护进程respawning。为此,我从如下脚本启动它:$set_tty $launch_app,其中
set_tty="openvt -c1 -s -w"
launch_app="my_daemon 2>'$HOME'/logfile"
这样我就启动了类似于openvt -c1 -s -w my_daemon 2>'$HOME'/logfile的命令,它只从openvt本身重定向到指定的日志文件stderr,而不是从我的守护进程。
如何重定向openvt的被叫方stderr?
我试过使用函数:

go () { my_daemon 2>"$HOME"/logfile; }
openvt -c1 -s -w

它不起作用,opentty会立即返回控件,不生成任何内容。
我试过exec 2>>"$HOME"/logfile
我试着用这个函数启动一个单独的脚本。脚本无法通过openvt运行,但如果我使用相同的参数手动启动它,则运行正常。
我错过了什么?

最佳答案

一个可能的答案是包装shell脚本,其内容将负责生成守护进程,并将stderr重定向到您选择的日志文件。

[anew@bucket ~]$ cat test.sh
#!/bin/bash
echo "Testing openvt" > /tmp/openvt-example

[anew@bucket ~]$ sudo openvt -c7 -s -w /home/anew/test.sh
[anew@bucket ~]$ cat /tmp/openvt-example
Testing openvt
[anew@bucket ~]$

10-07 18:15