【问题标题】:Running a process with the TTY detached在分离 TTY 的情况下运行进程
【发布时间】:2021-03-10 13:53:16
【问题描述】:

我想从终端运行一个 linux 控制台命令,以防止它自己访问 TTY(例如,当控制台命令尝试向用户请求密码时,这种情况经常发生 - 这应该只是失败)。我最接近解决方案的是使用这个包装器:

temp=`mktemp -d`
echo "$@" > $temp/run.sh
mkfifo $temp/out $temp/err
setsid sh -c "sh $temp/run.sh > $temp/out 2> $temp/err" &
cat $temp/err 1>&2 &
cat $temp/out
rm -f $temp/out $temp/err $temp/run.sh
rmdir $temp

这会在没有 TTY 访问的情况下按预期运行命令,但由于某种原因无法通过 FIFO 管道传递 stdout/stderr 输出。即使进程写入标准输出或标准错误,我最终也没有任何输出。

有什么想法吗?

【问题讨论】:

  • 为什么不my_script </dev/null >/dev/null
  • @Roadowl 如果 my_script 显式打开 /dev/tty,重定向将无济于事。试试head -n1 /dev/tty < /dev/null > /dev/null。它阻止了我。

标签: linux shell tty


【解决方案1】:

好的,谢谢大家观看。事实证明,该脚本已经包含了一种可行的方法。它只是包含一个错字,导致它失败。我在问题中更正了它,以便将来参考。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多