AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[stdout](unix)

Martin Hope
Whimusical
Asked: 2024-02-25 01:41:21 +0800 CST

如何识别哪些文件描述符与 STDIN、STDOUT 等关联

  • 5

我似乎记得一些命令或环境变量告诉你这一点。例如,我基本上想要在终端上执行的东西,给你

echo $STDIN 
/dev/tty
echo $STDOUT
/dev/tty
fdescribe 0 or fdescribe /dev/stdin
/dev/tty
fdescribe 1 or fdescribe /dev/stdout
/dev/tty

但可以在脚本或子进程中执行

stdout
  • 1 个回答
  • 23 Views
Martin Hope
Muhammad Ikhwan Perwira
Asked: 2022-05-21 06:22:06 +0800 CST

为什么 dmesg 输出显示在 /dev/tty1 上

  • 0

这仍然与我昨天的线程有关,所以有警报或者它只是显示在我的终端上的日志/dev/tty1。当然这很烦人,因为它显示在我的 bash 提示符中,所以每当我想输入一些东西时,我的输入都会被该输出覆盖。它可能会定期打印出来3 second。所以你可以看到它有多烦人

我的终端看起来像这样:

root@LFS:# echo "Hey get out of there"clocksource: timekeeping watchdog on CPU0: acpi_pm wd-wd readback delay of 643744ns
clocksource: wd-tsc-wd read-back delay of 182144ns, clock-skew test skipped!
clocksource: timekeeping watchdog on CPU0: acpi_pm wd-wd readback delay of 643744ns
clocksource: wd-tsc-wd read-back delay of 182144ns, clock-skew test skipped!
clocksource: timekeeping watchdog on CPU0: acpi_pm wd-wd readback delay of 643744ns
clocksource: wd-tsc-wd read-back delay of 182144ns, clock-skew test skipped!
...

我怀疑这不是因为clocksource,而是因为dmesg输出。因为当我指挥dmesg. 它显示相同。但是,每当我使用/dev/pts没有烦人的输出或定期发出警报时,我都会在我的 LFS 系统中登录 SSH 时对其进行测试。

那么如何防止dmesg日志显示到/dev/tty1

更新:内部/proc/cmdline

root@LFS:~# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.16.9-lfs-11.1 root=/dev/sda1 ro
tty stdout
  • 1 个回答
  • 235 Views
Martin Hope
John R
Asked: 2022-05-11 11:14:06 +0800 CST

websocat / wscat 每秒保存一个新文件

  • 1

这个问题是关于将 wss:// 流保存到多个文件中......在执行时(不是之后)

例子 :

websocat "wss://stream.binance.com:9443/ws/btcusdt@depth" > /path/$(date +%s).txt

此命令每秒接收 TONS 的新行 ....

此命令使用 unix 时间戳中的日期创建一个文件,但将继续保存在同一个文件中,直到我 ctrl+c .....

我不想膨胀成 1 个超大文件....我希望保存标准输出(在多个文件中)

例子

1652209720.txt 将有 30 行

1652209721.txt 将有 10 行

ETC

我试图创建一个.sh,while command do ....但我在shell中收到stdout而不是新文件......

我怎样才能做到这一点 ?

  • 注意:我知道更多 bash 脚本的 php... 编辑完整的 .sh ------

    #!/bin/bash

    而 websocat "wss://stream.binance.com:9443/ws/btcusdt@depth" 确实读取 line echo $line >> /Users/jinto/Downloads/d/$(date +%s).stub done

stdout socket
  • 1 个回答
  • 124 Views
Martin Hope
Kilian
Asked: 2022-04-12 23:31:26 +0800 CST

监视输出到 /dev/null

  • 2

我有一些科学程序可以运行几分钟到几天。该程序将进度信息打印到以回车结尾的标准输出。

如果程序运行了几天,我通常将输出通过管道传输到 /dev/null 以避免巨大的日志文件。

有没有办法定期查看程序的输出,而不必保留所有生成的文本?

terminal stdout
  • 2 个回答
  • 188 Views
Martin Hope
pmor
Asked: 2022-02-26 06:10:21 +0800 CST

echo "Hello World" > /dev/stdout 什么也不打印

  • 0

设想:

$ echo "Hello World" > /dev/stderr
Hello World

$ echo "Hello World" > /dev/stdout

$ uname -a
CYGWIN_NT-10.0 xxx 3.3.4(0.341/5/3) 2022-01-31 19:35 x86_64 Cygwin

为什么echo "Hello World" > /dev/stdout什么都不打印?如何解决问题?

UPD。

echo "Hello World"打印正常吗?

是的:

$ echo "Hello World"
Hello World

如果没有,你是否exec >/dev/null在 shell 中调用或类似的?

不。

UPD2。找到它停止工作的地方:

$ clang t554.c -std=c11 -pedantic -Wall -Wextra -c -S -O3 -o /dev/stdout
        .text
        <asm code>

# "exxxtern" was a typo
$ clang t554.c -std=c11 -pedantic -Wall -Wextra -c -S -O3 -o /dev/stdout
t554.c:6:3: error: use of undeclared identifier 'exxxtern'
                exxxtern int xxx;
                ^
1 error generated.


TASKING+pavel.morozkin@SPBPC023 ~
$ clang t554.c -std=c11 -pedantic -Wall -Wextra -c -S -O3 -o /dev/stdout
# nothing is printed for the 1st time

UPD3。我可以在另一台机器上用 clang 重现它:

$ clang t455.c -S -o /dev/stdout
        .text
        <asm code>

# introduce the error

$ clang t455.c -S -o /dev/stdout
t455.c:26:1: error: unknown type name 'x'
x
^
t455.c:26:2: error: expected identifier or '('
x
 ^
2 errors generated.

# fix the error

$ clang t455.c -S -o /dev/stdout
# nothing is printed

$ clang --version
clang version 8.0.1 (tags/RELEASE_801/final)
io-redirection stdout
  • 1 个回答
  • 322 Views
Martin Hope
Manuel Jordan
Asked: 2022-02-05 07:29:21 +0800 CST

mount cifs:如何从终端检索命令执行的状态?

  • 0

以下mount cifs代码工作正常:

sudo mount -t cifs //192.168.1.77/something /mnt/192.168.1.77/something \
           -o username=alpha,rw,uid=alpha,gid=tango,dir_mode=0770,file_mode=0770,nounix,sec=ntlmssp

通过在终端中执行的 shell 脚本出现一个新行:

� Password for alpha@//192.168.1.77/something:

如果密码正确,则终端不会写入/放置/显示任何内容,并且目录已按预期挂载。但是如果密码不正确,它会显示

mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)

我想创建一个循环迭代始终 while: 如果终端中出现任何错误消息以再次执行命令并因此要求输入密码。当然,如果密码正确并且mount cifs返回的内容表明一切正常,则必须停止循环。

如何做到这一点?我试过命令替换:

result=$(sudo mount -t cifs //192.168.1.77/something /mnt/192.168.1.77/something \
           -o username=alpha,rw,uid=alpha,gid=tango,dir_mode=0770,file_mode=0770,nounix,sec=ntlmssp)
echo "result: '${result}'" 

并发生以下情况:

# Valid password scenario
� Password for alpha@//192.168.1.77/something:
result: ''

# Invalid password scenario
� Password for alpha@//192.168.1.77/something:
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
result: ''

即使使用命令替换,您也无法看到预期的效果。结果变量总是为空。

不确定是否存在mount cifs该启用的参数返回一些东西然后让结果变量显示一些东西

mount stdout
  • 1 个回答
  • 75 Views
Martin Hope
falsePockets
Asked: 2021-10-21 17:26:03 +0800 CST

什么时候给 tr 添加 -u 有好处?

  • 0

该tr命令的参数之一是:

-u 保证任何输出都是无缓冲的。

在什么情况下不缓冲输出是个好主意?

例如,-u如果我希望每行都超长,我应该使用吗?

例如,-u如果我的内存受限,我应该使用吗?

例如,如果我将它输入awk(逐行处理文件),那么这是否意味着使用缓冲输出更好?

stdout performance
  • 1 个回答
  • 63 Views
Martin Hope
kjo
Asked: 2021-10-08 03:00:20 +0800 CST

在 `tty <&1` vs `echo $(tty <&1)` vs `echo $(tty <&2)`

  • 5

下面片段中的关键语句(即除了用于打印标签和空白行的那些,用于间距)成对出现。在每一对中,第一个和第二个语句的形式分别为tty...和。echo $(tty...)

echo stdin:
tty
echo $(tty)

echo

echo stdout:
tty <&1
echo $(tty <&1)

echo

echo stderr:
tty <&2
echo $(tty <&2)

如果我获取包含此片段的文件(例如,在一个zsh或bash会话中),我会得到以下输出1(我随后添加了行号,以供参考):

 1    stdin:
 2    /dev/pts/8
 3    /dev/pts/8
 4    
 5    stdout:
 6    /dev/pts/8
 7    not a tty
 8    
 9    stderr:
10    /dev/pts/8
11    /dev/pts/8

在此输出中,由echo $(tty <&1)(第 7 行)生成的行显着突出,原因有两个:

  1. 它是- 生成的echo $(tty ...)行(即,第 3、7 和 11 行)中唯一与其tty ...前面的 - 生成的对应物(第 2、6 和 10 行)不同的行;和
  2. 它不同于形式上类似的输出(第 11 行)echo $(tty <&2)。

问:如何解释这两个差异?


作为记录,我试图在 的手册页中找到这些明显异常的解释tty,但是,据我所知,该页面根本没有解决这些问题2;当然不是明确的3。

这个问题是由一些代码激发的,这是我早期问题的一个很好的答案。


1当然,/dev/pts/如果我更换终端后实际数字会有所不同,如果您尝试相同的事情,您可能会有所不同。

2事实上,tty我系统上可用的手册页的整个说明部分仅包含一句话:“打印连接到标准输入的终端的文件名。”。

3在这里,我保留一个可能性,即比我拥有更多背景知识的人可能能够从's 简洁的手册页中推断tty出上述行为。

tty stdout
  • 1 个回答
  • 233 Views
Martin Hope
kjo
Asked: 2021-09-05 09:59:10 +0800 CST

如何捕获既不发送到 stdout 也不发送到 stderr 的输出?

  • 0

据我所知,该命令生成的某些输出/usr/bin/modulecmd既不会发送到 stdout 也不会发送到 stderr,如下例所示:

% /usr/bin/modulecmd bash help null >/dev/null 2>&1
        This module does absolutely nothing.
        It's meant simply as a place holder in your
        dot file initialization.

        Version 3.2.9

有什么方法可以调用命令(例如 /usr/bin/modulecmd),使其所有输出都发送到 stdout 或 stderr?或者,是否有某种方法可以调用代码/usr/bin/modulecmd来捕获它通常会发送到终端的所有输出?

stdout stderr
  • 2 个回答
  • 339 Views
Martin Hope
user264359
Asked: 2020-02-05 22:37:01 +0800 CST

Stdout / stderr 重定向无法防止 /dev/tcp/host/port 重定向错误

  • 2

这是正常的重定向。

user@linux:~$ randomcommand
randomcommand: command not found
user@linux:~$ 

2>

user@linux:~$ randomcommand 2> /dev/null
user@linux:~$ 

&>

user@linux:~$ randomcommand &> /dev/null
user@linux:~$ 

但是,当我尝试使用不同的命令执行相同操作时,它不起作用,如下所示。

&>

user@linux:~$ > /dev/tcp/127.0.0.1/22 &> /dev/null && echo open || echo closed
bash: connect: Connection refused
bash: /dev/tcp/127.0.0.1/22: Connection refused
closed
user@linux:~$ 

2>

user@linux:~$ > /dev/tcp/127.0.0.1/22 2> /dev/null && echo open || echo closed
bash: connect: Connection refused
bash: /dev/tcp/127.0.0.1/22: Connection refused
closed
user@linux:~$ 

这些语法有什么问题以及如何解决?

io-redirection stdout
  • 1 个回答
  • 802 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve