相关疑难解决方法(0)

系统何时向进程发送 SIGTERM?

我的服务器程序收到一个 SIGTERM 并停止(退出代码为 0)。我对此感到惊讶,因为我很确定它有足够的内存。linux (busybox) 在什么情况下会向进程发送 SIGTERM?

linux process signals busybox

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

在 shell 命令(不是脚本)中获得“确保”/“最终”功能?

我需要知道命令是成功还是失败,然后无条件地运行一些清理。

用于执行顺序命令的正常选项似乎都不适用于此处:

$ mycmd.sh && rm -rf temp_files/    # correct exit status, cleanup fails if mycmd fails
$ mycmd.sh ;  rm -rf temp_files/  # incorrect exit status, always cleans up
$ mycmd.sh || rm -rf temp_files/    # correct exit status, cleanup fails if mycmd succeeds
Run Code Online (Sandbox Code Playgroud)

如果我要在 shell 脚本中执行此操作,我会执行以下操作:

#!/usr/bin/env bash
mycmd.sh
RET=$?
rm -rf temp_files
exit $RET
Run Code Online (Sandbox Code Playgroud)

有没有比分号将所有这些命令链接在一起更惯用的方法来在命令行上完成它?

command-line bash exit exit-status

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

捕获 INT 和 ERR,但回调被多次执行

我用以下代码捕获 INT 和 ERR

set -ex -o pipefail

dest=$(mktemp -d)
cd "$dest"

trap "echo; echo Clean up; rm -rf $dest" INT ERR
sleep 9999
Run Code Online (Sandbox Code Playgroud)

当我按下^C清理回调被执行多次

++ echo Clean up
Clean up
++ rm -rf /tmp/tmp.KYXL110516
++ echo

++ echo Clean up
Clean up
++ rm -rf /tmp/tmp.KYXL110516
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?是否可以只执行一次?

bash trap

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

标签 统计

bash ×2

busybox ×1

command-line ×1

exit ×1

exit-status ×1

linux ×1

process ×1

signals ×1

trap ×1