小编jab*_*sad的帖子

使用“bash -e”时如何获取子shell的输出和退出值?

考虑以下代码

外部作用域.sh

#!/bin/bash
set -e
source inner-scope.sh
echo $(inner)
echo "I thought I would've died :("
Run Code Online (Sandbox Code Playgroud)

内部作用域.sh

#!/bin/bash
function inner() { echo "winner"; return 1; }
Run Code Online (Sandbox Code Playgroud)

我试图outer-scope.sh在调用inner()失败时退出。由于$()调用子外壳,这不会发生。

如何在保留函数可能以非零退出代码退出的事实的同时获得函数的输出?

bash

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

使用strace调试连接超时?

我试图弄清楚为什么 Eclipse 会旋转,所以我决定启动 strace。

我使用以下方法找到了 eclipse 过程:

$ ps ax | grep java
 5546 ?        Sl    19:04 /usr/bin/java ... [arguments omitted]
Run Code Online (Sandbox Code Playgroud)

通过strace在这个进程上运行,我看到它正在等待另一个进程:

$ sudo strace -p 5546
Process 5546 attached - interrupt to quit
futex(0x7f6c416679d0, FUTEX_WAIT, 5547, NULL^C <unfinished ...>
Process 5546 detached
Run Code Online (Sandbox Code Playgroud)

有趣的是,进程 5547 没有出现在ps(谁能告诉我为什么?),但我可以strace。它反复吐出很多 EAGAIN 失败(偶尔成功)

read(16, 0x7f6c41664d10, 16)            = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(15, 0x7f6c3815f2e4, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {67410, 357843264}) = 0 …
Run Code Online (Sandbox Code Playgroud)

linux eclipse debug strace lsof

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

向 ssh 内运行的进程发送 SIGTERM 信号

是否可以向 ssh 内的进程发送 SIGTERM (或其他)信号,例如:

ssh hostname 'sleep 10; echo done'
Run Code Online (Sandbox Code Playgroud)

我可以做什么来中断睡眠命令?如果我按 ctrl-c,ssh 命令会被中断。

ssh

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

标签 统计

bash ×1

debug ×1

eclipse ×1

linux ×1

lsof ×1

ssh ×1

strace ×1