相关疑难解决方法(0)

在bash中超时命令没有不必要的延迟

这个答案了一定的时间后,命令行命令来自动杀死命令

提出了一个单行方法来从bash命令行超时长时间运行的命令:

( /path/to/slow command with options ) & sleep 5 ; kill $!
Run Code Online (Sandbox Code Playgroud)

但是,给定的"长时间运行"命令可能比超时更早完成.(我们称之为"通常长时间运行但有时快速"的命令,或者称为tlrbsf.)

所以这种漂亮的1-liner方法有几个问题.首先,sleep它不是有条件的,因此在序列完成所花费的时间上设置了不希望的下限.当tlrbsf命令在2秒内完成时,考虑30s或2m甚至5m的睡眠- 非常不受欢迎.其次,它kill是无条件的,所以这个序列将试图杀死一个非运行的进程并发出呜呜声.

所以...

有没有办法超时通常长时间运行但有时快("tlrbsf")命令

  • 有一个bash实现(另一个问题已经有Perl和C的答案)
  • 将在两个之前终止:tlrbsf程序终止或超时
  • 不会杀死不存在/未运行的进程(或者,可选:不会抱怨糟糕的杀戮)
  • 不必是1班轮
  • 可以在Cygwin或Linux下运行

...对于奖励积分,在前台运行tlrbsf命令,在后台运行任何"睡眠"或额外进程,这样tlrbsf命令的stdin/stdout/stderr 可以被重定向,就像它曾经被重定向一样直接跑吗?

如果是这样,请分享您的代码.如果没有,请解释原因.

我花了一段时间试图破解前面提到的例子,但我正在达到我的bash技能的极限.

bash command-line utilities timeout

267
推荐指数
11
解决办法
28万
查看次数

linux:杀死后台任务

如何杀死linux中最后生成的后台任务?

例:

doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
Run Code Online (Sandbox Code Playgroud)

unix linux bash kill job-control

188
推荐指数
4
解决办法
15万
查看次数

bash使用陷阱SIGCHLD重启子进程?

我已经看过监视程序,无论是在脚本中,使用'ps'或'服务状态(在Linux上)'定期检查进程状态,还是在C/C++中分析并等待进程...

我想知道是否有可能使用带有陷阱的bash并在收到SIGCLD时重新启动子进程?

我已经在RedHat Linux上测试了一个带有以下想法的基本套件(当然它没有用......)

#!/bin/bash
set -o monitor # can someone explain this? discussion on Internet say this is needed
trap startProcess SIGCHLD
startProcess() { 
  /path/to/another/bash/script.sh & # the one to restart
  while [ 1 ]
  do
    sleep 60
  done
}
startProcess
Run Code Online (Sandbox Code Playgroud)

什么bash脚本启动只是睡了几秒钟然后退出.

观察到几个问题:

  • 当shell在前台启动时,SIGCHLD只会被处理一次.陷阱复位信号处理如signal()?
  • 脚本及其子代似乎不受SIGINT的影响,这意味着它们不能被^ C阻止
  • 由于无法关闭,我关闭了终端.脚本似乎是HUP,许多僵尸孩子离开了.
  • 在后台运行时,脚本导致终端死机

......无论如何,这根本不起作用.我不得不说我对这个话题知之甚少.有人可以建议或提供一些有用的例子吗?是否有这样的脚本?

那么在bash中使用等待怎么样?

谢谢

bash child-process sigchld bash-trap

7
推荐指数
1
解决办法
6541
查看次数

从bash脚本启动新进程组

我基本上想在新进程组中运行一个脚本(调用更多脚本),以便我可以向脚本调用的所有进程发送信号.

在Linux中,我发现setsid可以帮助我做到这一点,但这在FreeBSD上是不可用的.

setsid的语法(由util-linux-ng提供).

setsid /path/to/myscript
Run Code Online (Sandbox Code Playgroud)

然而,我了解到会话和进程组不一样.但是开始一个新的会议也解决了我的问题.

unix bash signals freebsd process

3
推荐指数
1
解决办法
9013
查看次数