直接从命令行运行可执行文件和在Linux中运行cron作业有什么区别?

kol*_*rie 2 language-agnostic linux cron

我有这个可执行文件,它在远程服务器上查询命令,在本地机器上执行它,并将stdout(也可能是stderr)从它返回给服务器.

如果从命令行(作为root)调用,这个可执行文件运行得很好,但是我发现当cron作业自动执行时,某些命令失败了.

在安排使用crontab定期运行此可执行文件时,我应该期待在环境(用户,标准输入,标准输出等)方面有什么区别?

谢谢!

Eri*_*ler 5

最重要的区别是.bashrc之类的文件在cron作业之前没有执行,所以你在命令行中通常拥有的很多环境变量都会丢失.因此,如果您的程序在cron作业中不起作用,请将其嵌入到设置所有必要环境变量的脚本中.

关于输入和输出,显然没有用户交互的cron作业,所以程序不应该期望输入(如果它们这样做,从输入文件或直接在脚本中提供),并且任何输出都应该重定向到日志文件中.