cancel
Showing results for 
Search instead for 
Did you mean: 

cron job q script with timer

Angela
New Contributor
Hi,

I can't seem to get a q script with a timer to continue running in cron.

For example:

$ cat bin/test.q
.z.ts:{0N!.z.Z;}
\t 2000

If I run this normally it works fine. But when I try to put in in cron, it exits after one timer run. I tried using -t arg too but I can't get the timer to repeat and continue running, it just exits after one run.

I'm missing something or misunderstanding something...

thanks
2 REPLIES 2

kadir_kilicoglu
New Contributor II

I copied this answer from your other question:

Hello Angela, 

In your cronjob, you can start a script like;

 

 

0 12 * * *      sh /<path-to-your-script>/<your-script>.sh >> <path-to-your-output-log>/cronout.log 2>&1 &

 

 

Then in this script file you can go with something like this;

 

 

#!/usr/bin/env bash
. <any-source-or-config-file-you-need-in-your-q-process>

cd <to-your-q-script-folder>
/home/<your-user>/q/l64/q <your-q-script>.q > <your-log-file-location>_$(date +'%Y.%m.%dT%H:%M:%S').log 2>&1 &

 

 

Notice the ampersand at the end; that ampersand will keep your process alive until you explicitly call exit in your q script.

Hope this helps.

vijaykvishwa
New Contributor

I have same issue, it is more sort of any q with timer running in background. My guess is timer task runs in different thread while q REPL or main execution is in thread which remains alive only while a terminal remains associated. When I run in background, main execution sequence ends and timer task becomes meaning less. It executes just one task and stops. Someone from q/kdb+ expert can give correct solution. I tried daemonization at https://code.kx.com/q/kb/daemon/ and that has no change in behavior with timer in q