【问题标题】:Is it possible to prevent a script to print "Killed" on the stdout when it kills a process?是否可以阻止脚本在终止进程时在标准输出上打印“已终止”?
【发布时间】:2021-07-22 15:26:52
【问题描述】:

我有一个简单的 shell 脚本,它执行以下操作:

#!/usr/bin/bash
while read line; do
   *prints menu*
   *process 1* (e.g. pid=500)
   sleep 2
   *process 2* (e.g. pid=502)
   *while process 1 is active*; do
      sleep 1
    kill -9 502

在第一个 while 循环中,一切都在正确的地方进行,如果 process 1process 2 之前终止,那么它就会被杀死。问题出在第二个循环以后:当第 i 个循环开始时,它总是打印如下内容:

script.sh: line "n": 502 Killed             ( python3 program_name argv[1] ecc...)

有人知道如何避免这种打印吗?该脚本应该可以工作(我检查了ps -a,当 pid 500 死亡时,pid 502 立即被杀死)但是那个打印并不优雅。

【问题讨论】:

  • 在脚本中使用kill -9 是非常糟糕的风格。
  • 如何运行脚本?状态应该只在交互式 shell 中报告,所以我怀疑你正在做类似. ./script.sh 而不是bash script.sh

标签: bash shell kill


【解决方案1】:

如果您不希望标准输出仅用于命令,

command > /dev/null

如果您不希望 stderr 仅用于命令,

command 2> /dev/null

如果您不想只为一个命令同时输出 stdout 和 stderr,

command > /dev/null 2>&1

【讨论】:

猜你喜欢
  • 2020-01-11
  • 2011-10-18
  • 1970-01-01
  • 2011-12-10
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
相关资源
最近更新 更多