Skip to content

Instantly share code, notes, and snippets.

@martinrusev
Last active July 12, 2023 19:17
Show Gist options
  • Star 42 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save martinrusev/7015e393d46647dbad15 to your computer and use it in GitHub Desktop.
Save martinrusev/7015e393d46647dbad15 to your computer and use it in GitHub Desktop.
Cron supervisord
[supervisord]
nodaemon=true
loglevel=debug
[program:amon]
command=gunicorn -c gunicorn.conf.py wsgi
directory=/amon
autostart=true
autorestart=true
redirect_stderr=true
stopsignal = QUIT
[program:cron]
command = cron -f -L 15
autostart=true
autorestart=true
FROM martinrusev/amon:latest
COPY requirements.txt /var/requirements.txt
RUN pip install -r /var/requirements.txt
COPY crontab.txt /var/crontab.txt
RUN crontab /var/crontab.txt
RUN chmod 600 /etc/crontab
COPY supervisord.conf /etc/supervisord.conf
EXPOSE 8000
CMD ["/usr/local/bin/supervisord"]
@lahirug
Copy link

lahirug commented Jun 16, 2015

can I use this to start my apache2 after the cron start ? I tested and my apache works but cron runs as a daemon but my actual cron jobs are not invoking.

@kavyakul
Copy link

kavyakul commented Aug 9, 2016

Hi,
Can you please explain what are -f & -L options, as I cannot find this in cron's help

[program:cron]
command = cron -f -L 15

Regards,
Kavya K

@NoUseFreak
Copy link

NoUseFreak commented Aug 16, 2016

$ man cron | cat
CRON(8)                                        System Manager's Manual                                        CRON(8)

NAME
       cron - daemon to execute scheduled commands (Vixie Cron)

SYNOPSIS
       cron [-f] [-l] [-L loglevel]

DESCRIPTION
       cron is started automatically from /etc/init.d on entering multi-user runlevels.

OPTIONS
       -f      Stay in foreground mode, don't daemonize.

       -l      Enable  LSB  compliant names for /etc/cron.d files. This setting, however, does not affect the parsing
               of files under /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly or /etc/cron.monthly.

       -n      Include the FQDN in the subject when sending mails. By default, cron will abbreviate the hostname.

       -L loglevel
               Tell cron what to log about jobs (errors are logged regardless of this value) as the sum of  the  fol‐
               lowing values:

                   1      will log the start of all cron jobs

                   2      will log the end of all cron jobs

                   4      will log all failed jobs (exit status != 0)

                   8      will log the process number of all cron jobs

               The  default  is  to  log the start of all jobs (1). Logging will be disabled if levels is set to zero
               (0). A value of fifteen (15) will select all options.

@agorostidi
Copy link

Great, thks, it hep me a lot. Already have my cron working.... but would like to understand.....Why can not crond be daemonized ?

@davehenke
Copy link

If you daemonize cron, supervisord will take that as an exit and repeatedly try to "restart" the process.

@medmin
Copy link

medmin commented Aug 9, 2017

@agorostidi as far as I know, supervisord only manages non-daemon processes. For example, if you want to use supervisord to manage Nginx, you have to modify the nginx configuration, and turn off the daemon option.

@gerroon
Copy link

gerroon commented Jun 24, 2018

But in this example supervisord will be running and not giving me a shell when I satrt the docker image, I also want the shell and want supervisord to run in the bg?

@grerrg
Copy link

grerrg commented Sep 3, 2018

@gerroon if you need a shell in your container, i presume to make changes, you can run docker exec -ti <repo> sh. Or do you want supervisor to spawn a shell for you?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment