如何在 Upstart 脚本中设置自动核心转储?

Wag*_*ota 3 upstart kernel gdb ulimit 14.04

myapp是最终崩溃的应用程序。我想获得那些崩溃的核心转储......

这是我为实现这一目标而编写的新贵脚本。它还没有工作。

description "myupstart"

start on runlevel [2534]
stop on runlevel [!2534]

script

    ulimit -c 10000
    echo "/var/crash/core.%e.%s.%u.%g.%p.%t" > /proc/sys/kernel/core_pattern

    cd /path/to/app
    ./myapp

end script

respawn
Run Code Online (Sandbox Code Playgroud)

详细信息:
myapp适用于权限下降。它以 root [当然] 开始,然后切换到另一个用户名/组。这是一个问题吗?

如果我手动启动应用程序,以下命令在命令行上工作,但它们在 upstart 脚本中不起作用:

ulimit -c 10000
echo "/var/crash/core.%e.%s.%u.%g.%p.%t" > /proc/sys/kernel/core_pattern
Run Code Online (Sandbox Code Playgroud)

为什么会有这种差异?

sмu*_*urf 5

试着做一个独立的包装bash脚本与之间的命令scriptend script并传递到exec在同一个暴发户文件选项。

有可能ulimit -c 10000在暴发户调用./myapp.

另请注意,将文件命名为“新贵脚本”并不完全正确。它是一个配置文件。它可能碰巧包含可执行行,但其主要目的是存储配置而不是可执行命令。

附录:我遵循了上面相同的逻辑,但我没有创建另一个脚本,而是有了 do 的想法ulimit -c 10000 && ./myapp并且它奏效了!新贵接受了&&