Questions tagged «tty»

异步发送和接收串行数据的设备的表示形式。

1
交互式外壳在孤立的流程组中应该做什么?
(根据/programming/13718394/what-should-interactive-shells-do-in-orphaned-process-groups中的建议在UNIX中重新发布) 简短的问题是,如果外壳程序位于不拥有tty的孤立进程组中,它应该怎么办?但我建议阅读冗长的问题,因为这很有趣。 这是一种有趣且令人兴奋的方法,可以使用您喜欢的外壳将笔记本电脑变成便携式太空加热器(除非您是那些tcsh怪人之一): #include <unistd.h> int main(void) { if (fork() == 0) { execl("/bin/bash", "/bin/bash", NULL); } return 0; } 这导致bash将CPU固定在100%。zsh和fish的作用相同,而ksh和tcsh则对工作控制含糊其辞,然后再进行龙骨化处理,这虽然好一些,但效果不明显。哦,这是与平台无关的违规者:OS X和Linux都受影响。 我的解释(可能是错误的)如下:子外壳检测到它不在前台:tcgetpgrp(0) != getpgrp()。因此,它试图停止自身:killpg(getpgrp(), SIGTTIN)。但是它的进程组是孤立的,因为它的父级(C程序)是领导者并死亡,并且SIGTTIN发送给孤立进程组的操作只是被丢弃(否则什么也无法再次启动它)。因此,子外壳并没有停止,但是它仍然在后台,因此马上就可以再次执行所有操作。冲洗并重复。 我的问题是,命令行外壳程序如何检测到这种情况?正确的做法是什么?我有两个解决方案,都不是理想的: 尝试通知其pid与我们的组ID匹配的进程。如果使用失败ESRCH,则表明我们很可能成为孤儿。 尝试从中无阻塞读取一个字节/dev/tty。如果使用失败EIO,则表明我们很可能成为孤儿。 (我们跟踪此问题的是https://github.com/fish-shell/fish-shell/issues/422) 感谢您的想法!

1
如何使用.ttc格式的字体作为控制台字体?
我宁愿不喜欢可用的tty字体,而宁愿使用Menlo,这是我在OS X的Terminal中使用的字体。Menlo是一种.ttc格式,但是(从参考资料的内容来看/usr/share/consolefonts)Linux似乎需要.psf.gz字体,每种样式和大小的组合都有不同的文件。如何将其转换为正确的格式并设置为ttys中的字体? (我有运行Ubuntu Server 12.04的PowerBook G4和运行OS X Mountain Lion的Intel MacBook Pro。)
10 ubuntu  fonts  tty  ttf 

3
甚至通过屏幕检测我的终端支持多少Unicode
问题出在这里:我希望能够辨别我的终端是否能够像样的unicode,以便使用某些字符,就像一眼就能看出来一样,有时使用颜色,而其他使用下划线。 产生这种动机的原因是,在任何类型的虚拟终端中,我都得到了不错的字体,但是我了解基本的Linux控制台具有256个或512个同时出现的符号的字符集,因此您不能期望完全支持字体。 起初我以为我可以使用$TERMtty或tty,但这是要注意的地方:我也使用byobu,所以$TERM总是“ screen.linux”。tty的输出也不是很清楚:/dev/pts/<some number>无论是“真实”还是虚拟的术语。 $BYOBU_TTY也没有帮助,因为例如可能是这样,/dev/tty1并且在Ctrl+ Alt+中打开会话时,F1字符不会显示,但是从某个X术语附加到同一会话时,它们会正确显示并且仍然$BYOBU_TTY不会更改。此外,我希望能够在不假设byobu是否存在的情况下进行检测。 另外,在所有情况下,语言环境都显示为en_US.UTF-8 然而,即使我在byobu内部,也以某种方式瞥了一眼(命名为一个我看到检测到的特定工具),这取决于我连接到byobu会话的终端是否使用不同的输出。 我在使用Google时遇到了麻烦,因为终端和tty似乎太常见了。我最多$TERM只能提出解决方案推荐或tty。
10 linux  terminal  tty  unicode 

2
更改tty登录超时-ArchLinux
默认情况下,当我在tty中登录Arch Linux框时,在输入用户名之后但在输入密码之前会有超时。 像这样 Login: mylogin <enter> Password: (+ 60 seconds) Login: 如您所见,如果我不键入密码,它将回收提示-我希望它无限期地等待我的密码,而不是回收登录提示。 这可能吗? 这似乎是--timeout选项agetty会是我想要的。但是,我尝试将此标志添加到getty文件中/usr/lib/systemd/system/(默认情况下不使用该选项),然后重新启动-似乎没有任何效果。
10 linux  login  tty  timeout  getty 

4
从一个终端用户向另一个用户发送消息
我在tty1中有一个名为x的用户,在tty2中有一个名为y的用户。现在x想要向y写一些消息,反之亦然。现在我在tty1终端输入write y tty2 它显示 write:write:您已关闭写权限 write:y已禁用消息 当y向x发送消息时显示的是相同的内容,而不是最后一行中的“ x”。我该怎么办?
10 terminal  tty  write 

1
如何更改TTY显示在哪个监视器上?
当我启动或按时CtrlAltF*,我将被带到物理终端/ TTY。问题是TTY出现在我的HDMI监视器上,而实际上它与我不在同一个房间。 是否可以配置PC在DisplayPort监视器上显示TTY?澄清一下,当我按时CtrlAltF1,我希望TTY显示在我的DisplayPort显示器上,而不是我的HDMI显示器上。 编辑:经过更多的挖掘后,看来引导加载程序可能涉及到这里,所以我应该指定我正在使用GRUB 2.02〜beta2-20

3
调用与控制终端断开连接的命令/脚本?
我正在研究通常以自动化流程运行的脚本的行为(例如cron,Jenkins)。脚本可以(最终)调用以交互方式运行时行为不同的命令(寻求用户输入);例如,patch将询问如何处理反向补丁,并svn询问密码,但是我需要查看当它们非交互式运行时会发生什么。 说服patch它是非交互的是相当容易的。我只需要重定向stdout成为非tty: $ </dev/null > >(cat) /path/to/myscript --args 但是,svn将连接到控制端子(如果存在);否则将连接到控制端子。编辑脚本以通过--non-interactive不是一个真正的选择,因为它来自多个层次,很难确定我是否找到了每个调用。 有没有办法在没有控制终端的情况下(因此/dev/tty不存在)非交互地调用脚本/命令?我希望stdout / stderr仍然可以转到我的终端。 (我在非交互式外壳中找到了问题“运行脚本”吗?但是该问题的答案讨论了cron和用户环境之间的差异;我已经消除了除非交互性之外的所有差异。)

1
是否可以用指定的tty / pty打开终端
(我正在使用Ubuntu。)据我了解,tty只是一种端口。您输入了一些内容,它应该输出一些内容。终端(仿真器)是处理这些输入和输出的软件。从字面上看,终端可以选择要连接到的端口。 我在/ dev中看到了很多tty文件,在/ dev / pts /中看到了很多pts文件,但我不知道为什么会有这么多。它们都被使用了吗? 如果没有,我可以启动指定pty的终端机吗? 例如 gnome-terminal /dev/pts/47 更新资料 我这样做的原因是我想要一个远程终端。我知道合适的方法是使用ssh或telnet。 但是对于临时访问,这不是很方便。我想使用socat将tty或pty转发给客户端。然后,客户可以使用该pty或tty启动终端。 以下代码可以正常工作。它在客户端和服务器端执行,我得到“你好”。 echo "hello" > /home/myhomefoler/pty_created_by_socat
9 terminal  tty 

1
如何从otf中为控制台制作psf字体?
我想在tty控制台中使用Inconsolata字体,但是我需要为此生成一个psf字体。 我发现应该使用otf2bdf和两种工具bdf2psf,但是每次尝试使用第二种工具时,都会得到: /usr/bin/bdf2psf: Inconsolata12.bdf: the width is not integer number.
9 tty  fonts 

2
命令在80个字符后换行
minicom连接到Yocto Linux计算机的串行控制台时遇到麻烦的问题。 我输入的命令在第80个字符后环绕在同一行。使用起来非常不便。我在该行开头输入的所有内容都会被该行的最后一个字符覆盖。 与同一台计算机的SSH连接可以正常工作。在第80个字符之后,ssh转到下一行。 这是stty设置: stty -a speed 115200 baud; rows 24; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; …

1
bash:此shell中无作业控制
我有一个最小的Linux系统。 init是/bin/bash,仅库中的最少数量/lib/,/dev/静态填充,没有运行的守护进程(无udev的,..) 当bash开始时,出现以下错误: bash: cannot set terminal process group (-1) inappropriate ioctl for device bash: no job control in this shell 当我使用strace启动bash时,得到以下输出: rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 open("/dev/tty", O_RDWR|O_NONBLOCK) = -1 ENXIO (No such device or address) ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 …
8 bash  terminal  tty  ioctl 

1
如果待处理的字符超过256个,为什么8250 UART驱动程序不唤醒TTY?
这种if条件的动机是什么void serial8250_tx_chars(struct uart_8250_port *up)? if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) uart_write_wakeup(port); 自Linux 1.1.13(1994年5月)以来一直存在,并且在大多数UART驱动程序中都重复使用。 背景:定制的Linux 3.4.91,ARMv7上的嵌入式系统,UART端口0配置为38400波特,I / o使用16字节FIFO。在我们的设置中,所有这些都无法更改。 当的printf-ING 非常沉重经由UART在控制台上,内部的4kB缓冲液(UART_XMIT_SIZE)填满,然后档的用户空间进程直到缓冲器被清空(这需要在38400波特1秒!)。然后,此行为重复。这是因为n_tty_write()当缓冲区已满时,函数将进入睡眠状态,并且由于上述问题而无法长时间唤醒。 如果只删除此检查,我会发现它更自然,更有效。然后,printfs将尽快填充缓冲区,然后以清空缓冲区的速度继续,而不是我观察到的突发处理。 在我的环境中,它可以正常工作,但我肯定会丢失或误解某些东西。当前实施必须有一个理由。如果我消除这种状况,会有副作用吗? 作为附带的问题:是否有配置选项来调整此行为,例如使printf总是立即返回并在缓冲区已满时丢弃输出?


3
从詹金斯致电sudo
我有一台构建计算机,该计算机的abcsudo访问权限受到限制。当我签出源代码并运行构建脚本时,它可以正常工作。生成脚本包含的sudo调用不会说“ sudo:不存在tty且未指定askpass程序”。但是,当我在添加为从属的构建机上对Jenkins执行相同的操作时,它显示“ sudo:不存在tty且未指定askpass程序”。 我发现一种解决方案说Default requiretty在文件中注释掉/etc/sudoers。但我无权访问此文件。 我该如何克服这个问题?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.