Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
crontab执行的程序出现问题_C_Linux_Memory_Arm_Embedded Linux - Fatal编程技术网

crontab执行的程序出现问题

crontab执行的程序出现问题,c,linux,memory,arm,embedded-linux,C,Linux,Memory,Arm,Embedded Linux,我已经为一个嵌入式系统Devkit8000用c编写了一个程序,它是运行Angstrom Linux的著名BeagleBoard的克隆 程序创建了两个线程,其中一个线程负责使用连接到电路板的摄像头拍照,而现在第二个线程只将图像移动到另一个路径。程序应该在一整天中运行,唯一停止它的方法是发送一个信号 我编辑了crontab,以便在一个特定的小时内启动程序,并在程序必须停止时发送一个信号,问题是以这种方式启动程序会导致进程在运行一段时间后被终止,但是,如果我通过命令行手动启动程序,它工作正常,不会停止

我已经为一个嵌入式系统Devkit8000用c编写了一个程序,它是运行Angstrom Linux的著名BeagleBoard的克隆

程序创建了两个线程,其中一个线程负责使用连接到电路板的摄像头拍照,而现在第二个线程只将图像移动到另一个路径。程序应该在一整天中运行,唯一停止它的方法是发送一个信号

我编辑了crontab,以便在一个特定的小时内启动程序,并在程序必须停止时发送一个信号,问题是以这种方式启动程序会导致进程在运行一段时间后被终止,但是,如果我通过命令行手动启动程序,它工作正常,不会停止

我不知道crontab和命令行之间这种不同行为的原因。我检查了系统日志,但没有发现任何有用的东西。我也读了一些书,发现如果一个进程占用了太多的资源,操作系统就可以杀死它,但是在只有一个场景crontab和手动情况下发生这种情况是没有意义的

有什么线索吗


提前谢谢你

主要区别在于,通过cron运行作业会调用非交互式非登录shell。其效果取决于用户的默认shell。例如,如果您使用的是Korn shell或Bash,那么您的.profile将不会像在交互式登录shell上那样执行。Korn shell 88将执行$ENV文件的.kshrc,但ksh93不会执行。 因此,一个好的开始可能是在第一次获取.profile文件之后,从脚本调用您的程序:

. $HOME/.profile

如果不行。。。当您说进程被终止时,您是否收到这样的消息?如果是这样,那听起来像是有人发送了SIGKILL,即kill-9。如果没有,那么您可以运行strace或ltrace来找出它在什么时候死亡。

与命令行相比,从crontab运行某些东西时,环境变量通常是不同的。在启动应用程序之前,请确保设置了所有相关的路径变量。还要确保应用程序中的库可能使用的任何环境变量都具有预期值。正如我对cdarke所说的,我将查看我的代码,以检查它是否使用了任何$ENV变量:据我所知,程序没有使用任何$ENV变量,这就是为什么这是一个非常奇怪的行为的原因。无论如何,我会再次检查代码以确定。关于杀人问题。。。我在任何地方都没有收到这条消息,甚至在系统日志中也没有,我也不认为其他用户正在发送SIGKILL,因为没有其他人可以访问这个板。我只觉得,由于内存使用的原因,操作系统正在扼杀我的进程,所以我将尝试再次检查strace和ltrace,正如u建议的那样。ENV由shell使用,而不是由程序使用。它给出了通常为.kshrc文件的名称。