标签: stdout

Ansible 显示实时 shell 标准输出

我想查看实时shell标准输出,而不是register在变量中输入,然后在完成后显示。

示例剧本 - test.yml

- name: Testing RUN Shell Command
  hosts: localhost
  connection: local

  tasks:
  - name: Runnig Update
    shell: apt update
Run Code Online (Sandbox Code Playgroud)

默认输出

$ ansible-playbook  test.yml 

PLAY [Testing RUN Shell Command] ******************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************
ok: [localhost]

TASK [Runnig Update] ******************************************************************************************************************
changed: [localhost]

PLAY RECAP ****************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0   

Run Code Online (Sandbox Code Playgroud)

但是我想看看当我们运行apt update终端时它在做什么

$ sudo apt update
Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:2 http://dl.google.com/linux/chrome/deb stable Release                                                                            
Hit:3 http://ppa.launchpad.net/brightbox/ruby-ng/ubuntu bionic InRelease                                                              
Get:4 http://security.ubuntu.com/ubuntu bionic-security …
Run Code Online (Sandbox Code Playgroud)

stdout ansible

5
推荐指数
1
解决办法
8658
查看次数

Cronjob 条目中的“/dev/null 2>&1”是什么意思?

有人可以向我解释一下下面的 cron 作业中“2>&1”的含义是什么吗

0 23 * * * wget -q -O /dev/null "https://example.com/index.php" > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

linux centos cron stderr stdout

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

从日志文件实时到终端

我在 Ubuntu 上。

是否可以在终端中打开 putty 并观察日志文件的更新?就像标准输出是否会被定向到终端一样?

例如,我将一个应用程序的 stdout 和 stderr 定向到一个文件中,并且想查看我的应用程序如何从另一个终端启动。

ubuntu ssh logging putty stdout

4
推荐指数
2
解决办法
659
查看次数

BASH:coproc 的替代品

我有一些脚本使用coproc来控制子进程的stdout/stdin。不幸的是,coproc 是在 Bash 4.0 中引入的,并且在我使用的许多系统上,都有较早版本的 bash。

coproc 有什么替代品吗?

bash stdin stdout

4
推荐指数
1
解决办法
1664
查看次数

Linux 管道、警告消息、标准输出

这可能是以最简单的形式提出问题的最佳场所。我正在编写一个脚本,它获取命令的输出并将其放入变量中。经过一些调试后,我找出了错误时的命令,它没有转到标准输出而是转到控制台(或墙)。请参阅下面的示例:

命令运行成功时

root@local# apcaccess status
APC : 700
VERSION : xxxxx
BATTSTAT : AC
Run Code Online (Sandbox Code Playgroud)

当命令出错时

root@local# apcaccess status
apcupsd @ localhost: Connection Refused.

root@local# apcaccess status | grep -i version
apcupsd @ localhost: Connection Refused.
Run Code Online (Sandbox Code Playgroud)

我注意到当我尝试通过 grep 'apcaccess status | 管道命令时 grep -i version' 我会在成功运行时获得版本号,但在系统上它会出错,我会收到错误消息。我相信它不会通过标准输出。

问题是:如何强制输出转到标准输出?

linux pipe stdout

3
推荐指数
1
解决办法
1318
查看次数

禁止 GPG“从文件描述符 0 读取密码”消息

简单地说,我怎样才能让 GPG 不打印该消息?以下是我正在使用的命令:

echo "test input" > test.in
echo "test" | gpg -q -c --passphrase-fd 0 --output test.enc --yes --force-mdc test.in
echo "test" | gpg -q -d --passphrase-fd 0 test.enc > test.out
Run Code Online (Sandbox Code Playgroud)

并运行它:

$ echo "test input" > test.in 
$ echo "test" | gpg -q -c --passphrase-fd 0 --output test.enc --yes --force-mdc test.in
Reading passphrase from file descriptor 0    
$ echo "test" | gpg -q -d --passphrase-fd 0 test.enc > test.out
Reading passphrase from file descriptor 0
Run Code Online (Sandbox Code Playgroud)

编辑:重定向 stderr …

gpg stdin stdout

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

CentOS 5.3、Perl、bash 命令、隐藏所有输出到屏幕

我正在运行以下命令:

[user@server ~]$ /usr/sbin/ntpdate -d IPREMOVEDFORSECURITY | egrep 'transmit timestamp' | tail -1 | awk '{print $4, $5, $6, $7, $8}'
host found : HOSTREMOVEDFORSECURITY
Tue, Feb 15 2011 12:38:38.321
Run Code Online (Sandbox Code Playgroud)

所以问题是,无论我使用哪种类型的重定向,我总是得到“找到主机:”行。我尝试了以下方法:

0>/dev/null
1>/dev/null
2>/dev/null
2>&1
2>&/dev/null
Run Code Online (Sandbox Code Playgroud)

以及我能想到的或能够在网上找到的所有其他变体。我需要并希望返回的是该命令输出的第二行(时间戳)。我不明白为什么我似乎无法影响“主机找到:”行?!?!

我通过 perl 运行这些命令,但是在 bash 中直接运行它们时我看到了相同的行为。我需要抑制该 host: 行,因为在 perl 中,我使用反引号运行命令将输出分配给变量,并根据其他一些条件输出干净的响应。无论如何,该主机行显示并混淆了我的脚本输出,尽管它不会影响实际分配给变量的内容。

我的假设是这条线没有使用普通的 STDIN、STDOUT、STDERR 线程,但我似乎无法确定关于第 4 种输出方法的任何特定信息。我发现的每个网站都只谈论这三个。

如果有人对此有答案,请告诉我!

PS:这不是显示此行为的唯一命令,chkconfig 和其他一些命令也执行此操作,我真的很想弄清楚如何抑制这种不必要的输出。

perl stderr stdin stdout

2
推荐指数
1
解决办法
726
查看次数

将标准输出附加到文件,但继续输出到控制台

在 linux/bash 上,我想将命令的 stdout 附加到文件,但不重定向它(即我希望它同时转到控制台和文件)。有什么线索吗?

linux bash stdout

2
推荐指数
1
解决办法
481
查看次数

暂时将 STDOUT 重定向到另一个文件描述符,但仍会重定向到屏幕

我正在制作一个在内部执行一些命令的脚本,这些命令显示一些输出STDOUTSTDERR以及,但这没问题)。我需要我的脚本生成一个 .tar.gz 文件到STDOUT,所以脚本中执行的一些命令的输出也会转到STDOUT,这以输出中无效的 .tar.gz 文件结束。

因此,简而言之,可以将第一个命令输出到屏幕(因为我仍然想看到输出)但不能通过STDOUT? 此外,我想保持STDERR原样,以便那里只显示错误消息。

我的意思的一个简单例子。这将是我的脚本:

#!/bin/bash

# the output of these commands shouldn't go to STDOUT, but still appear on screen
some_cmd foo bar
other_cmd baz

#the following command creates a tar.gz of the "whatever" folder,
#and outputs the result to STDOUT
tar zc whatever/
Run Code Online (Sandbox Code Playgroud)

我试过搞乱exec文件描述符,但我仍然无法让它工作:

#!/bin/bash

# save STDOUT to #3
exec 3>&1

# the output of these commands should go to …
Run Code Online (Sandbox Code Playgroud)

linux shell bash redirection stdout

2
推荐指数
1
解决办法
3228
查看次数

使任何二进制文件接受标准输入/标准输出重定向的 Unix 包装器

这是一种常见情况:您希望将命令 'foo' 作为管道的一部分包含在内,但不幸的是,命令 'foo' 只接受 I/O 的实际文件名,并且不从 stdin/stdout 读/写。我知道有一个 Unix 命令可以作为诸如“foo”之类的错误命令的包装器,但我不记得它的名字。它是什么?

unix command-line-interface stdin stdout

2
推荐指数
1
解决办法
869
查看次数

将 cronjob STDOUT 和 STDERR 重定向到 /dev/null 不起作用

我很困惑为什么这不起作用。

我试过使用“&>”和“2>&1”重定向STDOUT和STDERR,但似乎都不起作用。我仍然收到这个 cron 作业(每分钟!)的电子邮件,smbclient 抱怨共享中没有文件。

* * * * * smbclient //scanner/scan-import secretpass -U administrator -c "prompt; mget *; del *" &> /dev/null
Run Code Online (Sandbox Code Playgroud)

好奇:客户有一台旧的、昂贵的扫描仪,可以高速扫描多个文档——但该软件无法配置保存位置。他们不想将文档直接保存在旧的 XP 工作站上,所以我已经共享了保存位置并使用此 cron 作业自动将文档拉到他们的 linux 服务器上。

linux redirect cron stderr stdout

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

无法将 STDERR 或 STDOUT 重定向到文件

我有用语言编写的应用程序Go并且它运行在screen (我认为问题与Go语言无关。我相信它使用STDOUTSTDERR

screen -S log_server -d -m go run log_server.go 2 > err3.txt 1 > std3.txt
Run Code Online (Sandbox Code Playgroud)

当它崩溃时,我在屏幕中写入错误,而不是在err3.txtstd3.txt

screen 不滚动并且不允许我阅读完整错误。

std3.txt工作正常 err3.txt,大小为 0 并打印错误screen(我可以看到最后 20 或 30 行)应用程序每 3 或 5 天崩溃一次。

stderr gnu-screen stdout

0
推荐指数
1
解决办法
1456
查看次数