草庐IT

playframework - 在没有伪 TTY 的情况下保持 Play 框架应用在 Docker 容器中运行

我有一个开发设置,我需要多个容器运行不同的服务,我正在尝试使用Fig为达到这个。其他一切正常,但其中一项服务是PlayFramework应用程序,它不想继续运行,除非它获得伪TTY。这很好,但由于我想协调这些多个容器,我想figup,并且该命令似乎没有分配伪TTY,所以进程在启动后立即死亡,以及所有的容器。我创建了arepositorywithashowcaseofthisproblem任何人都可以克隆并运行,说明在自述文件中。如果有人可以阐明如何创建例如一个可以让应用程序运行的中间人脚本,或者我可以figup我的链接容器设置的任何其他解决方案,那就太棒了。或者,如果有人使用任何其他方

python - Paramiko 和伪 tty 分配

我正在尝试使用Paramiko连接到远程主机并执行一些文本文件替换。i,o,e=client.exec_command("perl-p-i-e's/"+initial+"/"+replaced+"/g'"+conf);其中一些命令需要以sudo运行,这会导致:sudo:sorry,youmusthaveattytorunsudo我可以使用-t开关和ssh强制分配伪tty。是否可以使用paramiko做同样的事情? 最佳答案 其实很简单。只是:stdin,stdout,stderr=client.exec_command(comman

java - unix ps 命令中的 TTY 是什么意思?

当我运行PS时,其中一列输出是TTY。这是什么意思?特别是“??”的as值如何?与“ttys000”比较?我问是因为我有一个Java程序通过ProcessBuilder执行sort,并且当这个程序通过我的IDE(IntelliJ)运行时,该进程所需的时间比在IDE之外作为可执行jar运行时少5倍.在每种情况下,我都会在排序运行时运行ps,唯一的区别是IDE会创建一个TTY为??而jar创建一个TTY为ttys000的进程。 最佳答案 一个TTY是计算机终端。在ps的上下文中,它是执行特定命令的终端。缩写代表“TeleTYpewrit

docker - 什么时候在 Docker 容器中使用 `--interactive` 而没有 `--tty`?

我进行了一些谷歌搜索,但没有找到运行dockerrun-isome_image而不是dockerrun-itsome_image的案例。如果我运行dockerrun-i--namesamplesome_imagebash,容器会在前台运行,但我无法从我所在的shell与它交互。我可以'甚至用CTRL+C停止它。但是,我可以打开另一个shell并运行dockerexec-itsamplebash并获得对容器的访问权限。如果我运行dockerrun-i-d--namesamplesome_imagebash,容器会立即退出。我可以用dockerstartsample重新启动它,然后它会一直

docker - 使用 grunt-shell 调用调用 docker run 的脚本时如何解决 "the input device is not a TTY"?

发出gruntshell:test时,我收到警告“输入设备不是TTY”并且不想使用-f:$gruntshell:testRunning"shell:test"(shell)tasktheinputdeviceisnotaTTYWarning:Commandfailed:/bin/sh-c./run.shnpmtesttheinputdeviceisnotaTTYUse--forcetocontinue.Abortedduetowarnings.这是Gruntfile.js命令:shell:{test:{command:'./run.shnpmtest'}这里是run.sh:#!/bin

docker - Gitlab-runner 本地构建 - 从非 TTY 设备登录

我正在尝试在Linux上使用gitlab-runner在本地构建我的项目。docker-build:stage:buildimage:docker:latestscript:-dockerlogin-u"gitlab-ci-token"-p"$CI_JOB_TOKEN"$CI_REGISTRY#user"gitlab-ci-token"isautomaticallycreatedbyGitLab-dockerbuild-t"$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"target/-dockerpush"$CI_REGISTRY_IMAGE:$CI_C

docker - 对分配伪 TTY 的 Docker -t 选项感到困惑

这个选项到底有什么作用?我在TTY上读了很多书,但我仍然很困惑。我在没有-t和只有-i的情况下玩耍,似乎期望用户输入的程序在没有-t的情况下抛出错误。为什么启用伪TTY很重要? 最佳答案 -t选项转到Unix/Linux如何处理终端访问。过去,终端是硬线连接,后来是基于调制解调器的连接。这些具有物理设备驱动程序(它们是真实的设备)。一旦通用网络开始使用,就开发了一个伪终端驱动程序。这是因为它在理解可以使用哪些终端功能而无需直接将其写入程序(阅读stty、curses上的手册页)之间产生了分离。因此,以它为背景,运行一个没有选项的容器

linux - 如何在 unix 中杀死 tty

这是finger命令的结果(今天(星期一)我(Vidya)登录时)sekic1083[6:14am][/home/vidya]->fingerNameTtyIdleLoginTimeWhereFelixpts/0-Thu10:06sekic2594.rnd.ki.sw.johnpts/12dFri15:43john*pts/22dFri15:43john*pts/34Fri15:44john*pts/7-Thu16:25Vidyapts/0-Mon06:14Vidya*pts/5-Mon06:14Vidya*pts/6-Tue10:13Vidya*pts/9-Wed05:39Vidya

ruby - Capistrano 3 - 错误 : sorry, 你必须有一个 tty 才能运行 sudo

我刚刚将Capistrano从v2升级到v3.1。我重写了我的任务,其中包括一个运行shell脚本的任务,该脚本会重新启动NGINX等。要重新启动NGINX,我必须以sudo身份运行,这会导致错误:Sorry,youmusthaveaTTYtorunsudo在Capistrano2中,为了解决这个问题,我在我的Capfile中添加了:default_run_options[:pty]=trueCapistranov3的等价物是什么?我的deploy.rb文件如下所示:#configvalidonlyforCapistrano3.1lock'3.1.0'set:application,'

c - 编写伪装成 TTY 的程序

我正在编写一个程序,该程序从标准输入读取输入、操作输入并将输出写入标准输出。然而,许多程序检查标准输入是终端还是管道(通过调用类似isatty的函数),并以不同的方式生成输出。如何让我的程序伪装成TTY?该解决方案应该适用于Linux和macOS。任何生成独立二进制文件的编程语言都是可接受的,但首选Go。请注意,我问的是编程问题,而不是工具。所以,像script或unbuffer这样的东西不是我想要的。 最佳答案 以下是在pty中运行命令并捕获其输出的完整工作代码。(没有你想象的那么多行。)#include#include#incl