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
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.
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