【问题标题】:Bash hide "killed"Bash 隐藏“杀死”
【发布时间】:2021-07-20 06:25:51
【问题描述】:

我无法隐藏脚本中的“已终止”输出。请帮忙。

killall -9 $SCRIPT

我试过了:

killall -9 $SCRIPT >/dev/null 2>&1

似乎每个人都重定向组合。感谢您的帮助。

* 更新 *

主脚本无法在后台运行。它在运行时向用户输出一堆信息。感谢您的输入。还有其他想法吗?

这是所需的输出

HEV 终止
管理员@HEV-DEV:~/hev-1.2.7$

这是当前的输出:

HEV 终止
被杀
管理员@HEV-DEV:~/hev-1.2.7$

【问题讨论】:

标签: bash redirect kill


【解决方案1】:

打印它的不是脚本,而是外壳。您可以通过将其置于后台并等待它完成来抑制它,从那里重定向错误:

./script &
wait 2>/dev/null

【讨论】:

  • 主脚本无法在后台运行
  • 你能用 SIGINT 杀死它吗?
【解决方案2】:

如果您在子shell 中执行脚本(包括&),似乎可以避免这种情况:

$ ( ./script.sh & )
$ ps
  PID TTY          TIME CMD
14208 pts/0    00:00:00 bash
16134 pts/0    00:00:00 script.sh
16135 pts/0    00:00:00 sleep
16136 pts/0    00:00:00 ps
$ killall script.sh
$

如果我像./script.sh 那样执行它(没有子shell),那么我会得到输出

[1]+  Terminated              ./script.sh &>/dev/null

【讨论】:

  • 主脚本无法在后台运行
【解决方案3】:

试试...

(killall -9 $SCRIPT) 2>/dev/null

这会在子shell 中执行“killall”,并且该子shell 的所有输出都会被重定向,包括“KILLED”输出。

【讨论】:

    【解决方案4】:

    试试 killall -q,--quiet 不打印投诉

    killall -q -9 $SCRIPT
    

    【讨论】:

    • 请解释您的答案,以及它与这个 7 岁问题的其他 3 个答案有何不同。
    猜你喜欢
    • 2017-09-25
    • 2014-09-27
    • 2016-01-24
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多