ChatGPT解决这个技术问题 Extra ChatGPT

如何设置 cron 作业以每小时运行一次可执行文件?

我需要设置一个 cron 作业,每小时运行一次使用 gcc 编译的可执行文件。

我以 root 身份登录并输入 crontab -e

然后我输入以下内容并保存文件。

0 * * * *  /path_to_executable

但是,cron 作业不起作用。

我看到当我输入 /...path_to_executable 时出现分段错误。我只能从它所在的文件夹执行可执行文件。有没有办法解决这个问题?

这是一个糟糕的标题。您知道如何设置 cron 作业;您想知道的是如何使命令起作用。
属于 superuser.com(与编程没有直接关系)
错误的标题,但这就是我找到解决方案的方式。
您的可执行文件可能已启动。我建议在其中使用 syslog(3) (至少在启动时制作一条日志消息,以确保它已启动)。

j
joast
0 * * * * cd folder_containing_exe && ./exe_name

除非需要设置其他东西才能运行程序,否则应该可以工作。


使用 && 代替 ;,否则可能会发生有趣的事情(尤其是与 rm 一起使用时)
你是对的。 && 如果 cd 目标有可能不存在(例如,如果目录位于 NFS 服务器上碰巧已关闭)会好得多。
拯救我的一天!谢谢!
请注意,您还需要一个绝对路径(即从根目录)afaik
G
Gerhard

解决此问题的解决方案是找出您遇到分段错误的原因并修复它。


M
Marek Skiba

您还可以使用 0 * * * *@hourly 瞬间


对这个解决方案感到好奇,@hourly 表示它运行的时间是 0 分钟?
@ojblass @hourly0 * * * * 的同义词,没有区别。
J
James Gentes

如果您使用的是 Ubuntu,则可以将 shell 脚本放在以下目录之一中:/etc/cron.daily/etc/cron.hourly/etc/cron.monthly/etc/cron.weekly

有关更多详细信息,请查看此帖子:https://askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job


u
ulidtko

如果从任何其他目录调用,您的意思是可执行文件无法运行吗?这是可执行文件上的一个错误。一个潜在的原因可能是可执行文件需要已安装文件夹中的一些共享库。您可以检查环境变量 LD_LIBRARY_PATH


S
Suvarna Pattayil

由于我无法以这种方式运行 C 可执行文件,因此我编写了一个简单的 shell script,它执行以下操作

cd /..path_to_shell_script
./c_executable_name

在 cron 作业列表中,我调用了 shell 脚本。


G
Gerhard

利用

path_to_exe >> log_file

查看命令的输出也可以重定向错误

path_to_exe &> log_file

你也可以使用

crontab -l

检查您的编辑是否已保存。


crontab -l 在我以 root 身份登录时显示 cron 作业。我尝试了 log_file,但它是空的。