我有一个从脚本运行的进程myprocess
。是否可以检查此过程是成功执行还是崩溃?
这就是我的剧本的样子
myprocess 12 &
sleep 12
# I want to check here if the process crashed
我在后台运行该过程的原因很简单。我想在sleep
之前做其他任务。在我醒来之后,我想看看这个过程是否优雅地退出或者是否已经崩溃(倾倒核心)。
PS:如果需要任何其他细节或更多代码,请在下面发表评论。
答案 0 :(得分:3)
假设你core
已经一个名为$PWD
的文件(否则会被删除),这就是 lazy < / strong>这样做的方法:
(请注意此 [ lazy 核心文件方法仅]假设正确的参数化为sysctl fs.suid_dumpable
if {{ 1}}将有privilege levels changed or is execute only。另请注意,myprocess
设置可能导致核心文件被转储到其他地方,而不是kernel.core_pattern
。请参阅this article以便正确感谢@alvits指出这两个潜在的问题。无论如何,我不建议使用以下核心文件方法。)
$PWD
另请注意,只有在没有其他任何内容将核心转储到#!/bin/bash
rm -f core
ulimit -c unlimited
myprocess 12 &
# ... Do your stuff ...
sleep 12
if [ -f core ]; then
echo "This is a minimal example to show that the program dumped core."
fi
更清洁方法:
$PWD
正确方式:
#!/bin/bash
(rm -f /tmp/myprocess.success && myprocess 12 && touch /tmp/myprocess.success) &
# ... Do your stuff ...
sleep 12
if [ -f /tmp/myprocess.success ]; then
echo "myprocess returned EXIT_SUCCESS. But if it didn't returned before sleep 12 elapsed, this will fail."
fi