可能吗...
Ubuntu具有上述命令在不同的TTY之间移动.
似乎Mac没有激活它们.
如何在Mac中激活上述功能?
我花了几天时间设置文件/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) 通常tmux只显示与终端当前显示的行数相同的输出.然后当我分离它时,它会清除所有内容.我知道如何看待回溯(ctrl+A,[,k,...),但我怎么可以配置TMUX只打印了所有输出终端,因为如果我不使用它呢?
我喜欢tmux因为我很难记住nohup某些任务,并且因为它使查看长时间运行作业的输出变得更容易.不过,我想能够更自然地查看其回溯,通过简单地滚动回在iTerm2.
或者,如果有办法做到这一点screen,我也可以使用它.
在使用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.
在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)
如果有人有明确的解释,我会非常有兴趣听到它.谢谢.
为了我自己的娱乐,我已经编写了一个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 D或 Ctrl D- - .Ctrl D Ctrl …
当我通过 激活虚拟环境时poetry shell,GPG 签名会变得混乱,因为$GPG_TTY是为父 shell 设置的。所以每次我用的时候poetry shell我都要做GPG_TTY=$(tty)。有没有办法自动执行此操作?理想情况下,我会在全球范围内设置一次,而不是为每个诗歌项目设置一次。
我有一个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的微妙之处.
总之,我的问题是:
start.sh退出后也等待子进程,即使它们有父pid 1?我试图在Python中找到一种方法来运行其他程序:
这是我到目前为止所得到的...方法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) 在屏幕上,有没有办法完全禁用铃声?
我知道你可以切换到音频铃而不是视觉铃,并且已经完成了并且也没有在腻子中指定铃声所以我什么都听不到,但是当一个窗口中有铃声时,我看到一个恼人的弹出窗口其他窗口说"窗口1中的铃"等等.
关于如何摆脱它的任何想法?