包装脚本:fork:重试:没有子进程

包装脚本:fork:重试:没有子进程

“myapplication”需要完成一些设置或清理,因此我使用以下包装脚本:

#!/bin/bash
echo "Do important set up stuff"
myapplication
echo "Clean up"

并将其放入我的路径中,命名为“myapplication”,以便它自动优先于原始路径。这在测试时有效,但在我实际将其放入我的路径中后停止,并给出以下错误:

/home/user/bin/myapplication: fork: retry: No child processes
[more of the same line]
/home/user/bin/myapplication: fork: retry: No child processes
/home/user/bin/myapplication: fork: Resource temporarily unavailable

并且还会导致其他程序在脚本启动后、因最后一个错误而中止之前出现同样的错误。

答案1

一旦脚本位于路径中,脚本中应该调用原始程序的行就会调用该脚本,这会创建无限的非终止递归,直到达到某个系统限制。

正确的方法是which myapplication在将脚本放入 PATH 之前找到 myapplication 原始可执行文件的绝对路径,然后使用该路径从脚本调用 myapplication。

一般来说,要吸取的教训是:此错误可能表明非终止递归。

相关内容