我需要一个Bash脚本,它可以执行以下操作:
- 启动一个后台进程,将所有输出重定向到文件
- 将进程的退出代码写入文件
- 立即返回进程的pid(而不是在进程退出时返回)
- 脚本必须退出
我可以获取pid但无法获取退出代码:
$ executable >>$log 2>&1 &
pid=`jobs -p`
或者说,我可以获取退出码但无法获取pid:
$ executable >>$log;
# blocked on previous line until process exits
echo $0 >>$log;
我怎样才能同时完成所有这些要求?
mktemp
来创建临时文件以提高安全性。我真的在努力学习(而不是争论),所以如果这还不够好,请告诉我。此外,我在哪里可以阅读有关适当守护进程与 shell 脚本之间区别的内容? - user1011471mktemp
不会提供任何额外的安全措施。如果一个进程写入临时文件,然后另一个进程检查并发现锁不存在,那么第一个进程将临时文件复制到锁文件中,然后第二个进程也会这样做。通过“适当的守护程序”,我指的是直接调用系统调用的进程,因此层次较少。我认为你并没有争论的意思;如果看起来像那样,请原谅。 - William Pursell