Cron杀死派生进程

Cron杀死派生进程,cron,solaris,Cron,Solaris,我设置了一个cron作业来启动脚本 此脚本的目的是终止当前正在运行的进程,并启动该进程的新版本CHECKDB。CHECKDB需要一直运行,所以我们有一个start_CHECKDB脚本,它基本上是一个运行CHECKDB的无限循环;如果它崩溃了,它会停留在循环中,再次启动。[是的,我意识到这不是最好的做法,但这不是问题所在] 我的脚本将被cron无问题地调用,然后它将无问题地杀死CHECKDB。据我所知,会调用启动CHECKDB备份的子脚本,但每次在cron运行后检查ps时,进程都不会运行。如果我在

我设置了一个cron作业来启动脚本

此脚本的目的是终止当前正在运行的进程,并启动该进程的新版本CHECKDB。CHECKDB需要一直运行,所以我们有一个start_CHECKDB脚本,它基本上是一个运行CHECKDB的无限循环;如果它崩溃了,它会停留在循环中,再次启动。[是的,我意识到这不是最好的做法,但这不是问题所在]

我的脚本将被cron无问题地调用,然后它将无问题地杀死CHECKDB。据我所知,会调用启动CHECKDB备份的子脚本,但每次在cron运行后检查ps时,进程都不会运行。如果我在命令行上手动运行脚本,在任何shell下,它都可以正常工作:kills CHECKDB和start_CHECKDB,startup start_CHECKDB启动CHECKDB

然而,由于某些原因,当cron执行此操作时,该进程永远不会在之后运行。它杀死了活着的人,要么不启动它,要么启动它并杀死它

当cron结束父进程时,是否可能会终止调用的子进程


我不知道这是否有区别,但这是在Solaris 8上。

在启动checkdb时,您可能会看到在cron脚本中使用nohup。像“nohup命令&”这样的东西是在启动过程之外启动您想要的东西的正常方式。

您能澄清一下您对该安排的描述吗?听起来,在正常情况下,start_checkdb和checkdb都在运行。cron作业应该杀死CHECKDB,而已经运行的start_CHECKDB副本应该重新启动它?或者cron作业是否会杀死这两个进程,然后重新启动start_checkdb?cron作业运行后,哪个进程缺少CHECKDB、start_CHECKDB或两者都缺少

话虽如此,进程从命令行工作但从cron失败的最常见原因是:

依赖于正确的命令路径或某些其他环境变量 依赖于从正确的目录运行 依赖于从tty运行。
我试过这么做,但没用。它在cron运行进程时终止进程,在手动运行时不终止进程。这非常令人沮丧:Nohup只是掩盖了挂断信号。它用于防止从tty终端启动的程序在您注销时退出。