ChatGPT解决这个技术问题 Extra ChatGPT

How to set up a cron job to run an executable every hour?

I need to set up a cron job that runs an executable compiled using gcc once every hour.

I logged in as root and typed crontab -e

Then I entered the following and saved the file.

0 * * * *  /path_to_executable

However, the cron job does not work.

I see that when I type /...path_to_executable I get a segmentation fault. I can only execute the executable from the folder it is located in. Is there a way I can solve this problem?

That's a bad title. You know how to set up the cron job; what you want to know is how to make the command work.
belongs on superuser.com (not directly related to programming)
Wrong title, but this is how i found the solution.
Your executable is probably started. I recommend using syslog(3) inside it (and at least make a log message at start, to be sure it is started).

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

should work unless there is something else that needs to be setup for the program to run.


use && instead of ;, otherwise interessting stuff may happen (especially when used with rm)
You're right. && is much better if there is a chance the cd target doesn't exist (for example if the diretory is on an NFS server that happens to be down).
Save my day! Thanks!
Note that you also need an absolute path (ie from the root directory) afaik
G
Gerhard

The solution to solve this is to find out why you're getting the segmentation fault, and fix that.


M
Marek Skiba

You can also use @hourly instant of 0 * * * *


curious with this solution what minute does it run at does @hourly imply at 0?
@ojblass @hourly is an exact synonym of 0 * * * *, there is no difference.
J
James Gentes

If you're using Ubuntu, you can put a shell script in one of these directories: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly or /etc/cron.weekly.

For more detail, check out this post: https://askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job


u
ulidtko

Did you mean the executable fails to run , if invoked from any other directory? This is rather a bug on the executable. One potential reason could be the executable requires some shared libraires from the installed folder. You may check environment variable LD_LIBRARY_PATH


S
Suvarna Pattayil

Since I could not run the C executable that way, I wrote a simple shell script that does the following

cd /..path_to_shell_script
./c_executable_name

In the cron jobs list, I call the shell script.


G
Gerhard

use

path_to_exe >> log_file

to see the output of your command also errors can be redirected with

path_to_exe &> log_file

also you can use

crontab -l

to check if your edits were saved.


crontab -l shows the cron job when I login as root. I tried the log_file but it is empty.