标签: tty

在Mac OS X中用于Ctrl-Alt F1和Alt-F1 ... F6的TTY开关

可能吗...

  1. 为键绑定Ctrl+ Alt+ 设置终端模式F1
  2. 在TTY之间切换Alt+ F1...F6

Ubuntu具有上述命令在不同的TTY之间移动.

似乎Mac没有激活它们.

如何在Mac中激活上述功能?

macos tty

19
推荐指数
3
解决办法
3万
查看次数

Jenkins sudo:没有tty存在,也没有使用NOPASSWD指定的askpass程序

我花了几天时间设置文件/etc/sudoers,以便能够向用户授予root权限jenkins.我在我的服务器上安装了Jenkins,因为我主持了几个项目,包括symfony,ionic,neo4j等等......问题是我无法用离子构建项目,我得到这个错误:sudo: no tty present and no askpass program specified.这是我/的内容etc/sudoers文件:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User …
Run Code Online (Sandbox Code Playgroud)

debian sudo tty sudoers jenkins

18
推荐指数
2
解决办法
5万
查看次数

在终端中留下tmux回滚(iTerm2)

通常tmux只显示与终端当前显示的行数相同的输出.然后当我分离它时,它会清除所有内容.我知道如何看待回溯(ctrl+A,[,k,...),但我怎么可以配置TMUX只打印了所有输出终端,因为如果我不使用它呢?

我喜欢tmux因为我很难记住nohup某些任务,并且因为它使查看长时间运行作业的输出变得更容易.不过,我想能够更自然地查看其回溯,通过简单地滚动回在iTerm2.

或者,如果有办法做到这一点screen,我也可以使用它.

ssh gnu-screen tty iterm tmux

17
推荐指数
2
解决办法
9403
查看次数

无法禁用systemd serial-getty服务

在使用Arch Linux的Raspberry Pi上,有一个名为的服务活动serial-getty@AMA0.

单元文件是:/usr/lib/systemd/system/serial-getty@.service

作为root我可以调用

systemctl stop serial-getty@ttyAMA0
systemctl disable serial-getty@ttyAMA0
Run Code Online (Sandbox Code Playgroud)

但重启后,服务已启用并再次运行.

禁用后为什么启用服务?如何永久禁用它?

UPDATE

systemd使用发电机在/ usr/lib中/ systemd /系统发电机/是称为systemd-getty的发电机二进制.此二进制文件在系统启动时运行,并将符号链接serial-getty@ttyAMA0.service添加到/run/systemd/generator/getty.target.wants.

我终于找到了一个肮脏的解 我在/usr/lib/systemd/system/serial-getty@.service中注释掉了所有操作.无论如何,服务确实似乎已开始,但没有阻止ttyAMA0.

tty archlinux gpio raspberry-pi systemd

17
推荐指数
1
解决办法
1万
查看次数

如果分配了伪tty,为什么在ssh上运行后台任务会失败?

在ssh上运行命令时,我最近遇到了一些奇怪的行为.我有兴趣听到下面这种行为的任何解释.

正在运行ssh localhost 'touch foobar &'创建一个名为expect的文件foobar:

[bob@server ~]$ ssh localhost 'touch foobar &'
[bob@server ~]$ ls foobar
foobar
Run Code Online (Sandbox Code Playgroud)

但是,运行相同的命令但使用-t强制伪tty分配选项无法创建foobar:

[bob@server ~]$ ssh -t localhost 'touch foobar &'
Connection to localhost closed.
[bob@server ~]$ echo $?
0
[bob@server ~]$ ls foobar
ls: cannot access foobar: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我目前的理论是,由于触摸过程正在被覆盖,因此伪进程在进程有机会运行之前被分配和未分配.当然,添加一秒睡眠可让触摸按预期运行:

[bob@pidora ~]$ ssh -t localhost 'touch foobar & sleep 1'
Connection to localhost closed.
[bob@pidora ~]$ ls foobar
foobar
Run Code Online (Sandbox Code Playgroud)

如果有人有明确的解释,我会非常有兴趣听到它.谢谢.

ssh bash jobs tty pty

17
推荐指数
1
解决办法
3557
查看次数

为什么我要两次输入ctrl-d?

为了我自己的娱乐,我已经编写了一个python脚本,允许我使用python进行bash one-liners; 提供python生成器表达式; 并且脚本遍历它.这是脚本:

DEFAULT_MODULES = ['os', 're', 'sys']

_g = {}
for m in DEFAULT_MODULES:
    _g[m] = __import__(m)

import sys
sys.stdout.writelines(eval(sys.argv[1], _g))
Run Code Online (Sandbox Code Playgroud)

这就是你如何使用它.

$ groups | python pype.py '(l.upper() for l in sys.stdin)'
DBORNSIDE
$ 
Run Code Online (Sandbox Code Playgroud)

对于预期用途,它完美地工作!

但是当我不用管道输入它并直接调用它时,例如:[强调添加以显示我键入的内容]

$ python pype.py '("%r\n" % (l,) for l in sys.stdin)'
fooEnter
barEnter
bazEnter
Ctrl DCtrl D'foo\n'
'bar\n'
'baz\n'
$ 

为了停止接受输入并产生任何输出,我必须要么键入Enter- Ctrl D- Ctrl DCtrl D- - .Ctrl D Ctrl …

python tty eof

16
推荐指数
1
解决办法
3321
查看次数

使用诗歌 shell 时如何动态设置环境变量?

当我通过 激活虚拟环境时poetry shell,GPG 签名会变得混乱,因为$GPG_TTY是为父 shell 设置的。所以每次我用的时候poetry shell我都要做GPG_TTY=$(tty)。有没有办法自动执行此操作?理想情况下,我会在全球范围内设置一次,而不是为每个诗歌项目设置一次。

gnupg virtualenv tty python-poetry

16
推荐指数
2
解决办法
2万
查看次数

为什么ssh在没有-t的情况下等待我的子shell,并用-t杀死它们?

我有一个bash脚本start.sh,如下所示:

for thing in foo bar; do
    {
        background_processor $thing
        cleanup_on_exit $thing
    } &
done
Run Code Online (Sandbox Code Playgroud)

这就是我想要的:我运行start.sh,它以代码0退出,并且两个子shell在后台运行.每个子shell运行background_processor,当它退出时,它运行cleanup_on_exit.即使我退出我最初运行start.sh的终端(即使这是一个ssh连接),这也有效.

然后我尝试了这个:

ssh user@host "start.sh"
Run Code Online (Sandbox Code Playgroud)

这是有效的,除了start.sh退出后,ssh显然也等待子壳退出.我真的不明白为什么.一旦start.sh退出,子shell变成pid 1的子项,并且它们甚至没有被赋予tty ...所以我无法理解它们如何仍然与我的ssh连接相关联.

我后来试过这个:

ssh -t user@host "start.sh"
Run Code Online (Sandbox Code Playgroud)

现在进程有一个指定的伪tty.现在,我发现ssh一旦start.sh退出就会退出,但它也会杀死子进程.

我猜想在后一种情况下子进程被发送了SIGHUP,所以我这样做了:

ssh -t user@host "nohup start.sh"
Run Code Online (Sandbox Code Playgroud)

这实际上有效!所以,我有一个解决我的实际问题的方法,但我想在这里掌握SIGHUP/tty的微妙之处.

总之,我的问题是:

  1. 为什么ssh(没有-t)即使在start.sh退出后也等待子进程,即使它们有父pid 1?
  2. 为什么SSH(与-t)杀子进程,显然与一个SIGHUP,即使当我从一个终端运行它们,然后注销该终端不发生?

ssh bash tty subshell

15
推荐指数
1
解决办法
4732
查看次数

运行命令并像在终端中一样近乎实时地获取它的stdout,stderr

我试图在Python中找到一种方法来运行其他程序:

  1. 正在运行的程序的stdout和stderr可以单独记录.
  2. 正在运行的程序的stdout和stderr可以近乎实时地查看,这样如果子进程挂起,用户就可以看到.(即我们不会在将stdout/stderr打印到用户之前等待执行完成)
  3. 奖励标准:正在运行的程序不知道它是通过python运行的,因此不会做意想不到的事情(比如chunk它的输出而不是实时打印,或退出因为它需要终端查看其输出) .这个小标准几乎意味着我们需要使用我认为的pty.

这是我到目前为止所得到的...方法1:

def method1(command):
    ## subprocess.communicate() will give us the stdout and stderr sepurately, 
    ## but we will have to wait until the end of command execution to print anything.
    ## This means if the child process hangs, we will never know....
    proc=subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, executable='/bin/bash')
    stdout, stderr = proc.communicate() # record both, but no way to print stdout/stderr in real-time
    print ' ######### REAL-TIME ######### '
    ########         Not Possible
    print ' ########## RESULTS ########## …
Run Code Online (Sandbox Code Playgroud)

python subprocess tty pexpect pty

15
推荐指数
1
解决办法
3702
查看次数

如何完全禁用屏幕中的铃声(视觉和音频)

在屏幕上,有没有办法完全禁用铃声?

我知道你可以切换到音频铃而不是视觉铃,并且已经完成了并且也没有在腻子中指定铃声所以我什么都听不到,但是当一个窗口中有铃声时,我看到一个恼人的弹出窗口其他窗口说"窗口1中的铃"等等.

关于如何摆脱它的任何想法?

linux terminal gnu-screen tty

14
推荐指数
1
解决办法
8403
查看次数