How to write a cron that will run a script every day at midnight?

前端 未结 6 1215
予麋鹿
予麋鹿 2020-11-28 02:21

I have heard crontab is a good choice, but how do I write the line and where do I put it on the server?

相关标签:
6条回答
  • 2020-11-28 02:39

    Put this sentence in a crontab file: 0 0 * * * /usr/local/bin/python /opt/ByAccount.py > /var/log/cron.log 2>&1

    0 讨论(0)
  • 2020-11-28 02:44

    Here's a good tutorial on what crontab is and how to use it on Ubuntu. Your crontab line will look something like this:

    00 00 * * * ruby path/to/your/script.rb
    

    (00 00 indicates midnight--0 minutes and 0 hours--and the *s mean every day of every month.)

    Syntax: 
      mm hh dd mt wd  command
    
      mm minute 0-59
      hh hour 0-23
      dd day of month 1-31
      mt month 1-12
      wd day of week 0-7 (Sunday = 0 or 7)
      command: what you want to run
      all numeric values can be replaced by * which means all
    
    0 讨论(0)
  • 2020-11-28 02:46

    Quick guide to setup a cron job

    Create a new text file, example: mycronjobs.txt

    For each daily job (00:00, 03:45), save the schedule lines in mycronjobs.txt

    00 00 * * * ruby path/to/your/script.rb
    45 03 * * * path/to/your/script2.sh
    

    Send the jobs to cron (everytime you run this, cron deletes what has been stored and updates with the new information in mycronjobs.txt)

    crontab mycronjobs.txt
    

    Extra Useful Information

    See current cron jobs

    crontab -l
    

    Remove all cron jobs

    crontab -r
    
    0 讨论(0)
  • 2020-11-28 02:47

    You can execute shell script in two ways,either by using cron job or by writing a shell script

    Lets assume your script name is "yourscript.sh"

    First check the user permission of the script. use below command to check user permission of the script

    ll script.sh

    If the script is in root,then use below command

    sudo crontab -e

    Second if the script holds the user "ubuntu", then use below command

    crontab -e

    Add the following line in your crontab:-

    55 23 * * * /path/to/yourscript.sh

    Another way of doing this is to write a script and run it in the backgroud

    Here is the script where you have to put your script name(eg:- youscript.sh) which is going to run at 23:55pm everyday

    #!/bin/bash while true do /home/modassir/yourscript.sh sleep 1d done

    save it in a file (lets name it "every-day.sh")

    sleep 1d - means it waits for one day and then it runs again.

    now give the permission to your script.use below command:-

    chmod +x every-day.sh

    now, execute this shell script in the background by using "nohup". This will keep executing the script even after you logout from your session.

    use below command to execute the script.

    nohup ./every-day.sh &

    Note:- to run "yourscript.sh" at 23:55pm everyday,you have to execute "every-day.sh" script at exactly 23:55pm.

    0 讨论(0)
  • 2020-11-28 02:58

    from the man page

    linux$ man -S 5 crontab
    
       cron(8) examines cron entries once every minute.
    
       The time and date fields are:
    
              field          allowed values
              -----          --------------
              minute         0-59
              hour           0-23
              day of month   1-31
              month          1-12 (or names, see below)
              day of week    0-7 (0 or 7 is Sun, or use names)
       ...
       # run five minutes after midnight, every day
       5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
       ...
    

    It is good to note the special "nicknames" that can be used (documented in the man page), particularly "@reboot" which has no time and date alternative.

       # Run once after reboot.
       @reboot         /usr/local/sbin/run_only_once_after_reboot.sh
    

    You can also use this trick to run your cron job multiple times per minute.

       # Run every minute at 0, 20, and 40 second intervals
       * * * * *       sleep 00; /usr/local/sbin/run_3times_per_minute.sh
       * * * * *       sleep 20; /usr/local/sbin/run_3times_per_minute.sh
       * * * * *       sleep 40; /usr/local/sbin/run_3times_per_minute.sh
    

    To add a cron job, you can do one of three things:

    1. add a command to a user's crontab, as shown above (and from the crontab, section 5, man page).

      • edit a user's crontab as root with crontab -e -u <username>
      • or edit the current user's crontab with just crontab -e
      • You can set the editor with the EDITOR environment variable
        • env EDITOR=nano crontab -e -u <username>
        • or set the value of EDITOR for your entire shell session
          1. export EDITOR=vim
          2. crontab -e
      • Make scripts executable with chmod a+x <file>


    1. create a script/program as a cron job, and add it to the system's anacron /etc/cron.*ly directories

      • anacron /etc/cron.*ly directories:
        • /etc/cron.daily
        • /etc/cron.hourly
        • /etc/cron.monthly
        • /etc/cron.weekly
      • as in:
        • /etc/cron.daily/script_runs_daily.sh
        • chmod a+x /etc/cron.daily/script_runs_daily.sh -- make it executable
      • See also the anacron man page: man anacron
      • Make scripts executable with chmod a+x <file>
      • When do these cron.*ly script run?
        • For RHEL/CentOS 5.x, they are configured in /etc/crontab or /etc/anacrontab to run at a set time
        • RHEL/CentOS 6.x+ and Fedora 17+ Linux systems only define this in /etc/anacrontab, and define cron.hourly in /etc/cron.d/0hourly


    1. Or, One can create system crontables in /etc/cron.d.

      • The previously described crontab syntax (with additionally providing a user to execute each job as) is put into a file, and the file is dropped into the /etc/cron.d directory.
      • These are easy to manage in system packaging (e.g. RPM packages), so may usually be application specific.
      • The syntax difference is that a user must be specified for the cron job after the time/date fields and before the command to execute.
      • The files added to /etc/cron.d do not need to be executable.
      • Here is an example job that is executed as the user someuser, and the use of /bin/bash as the shell is forced.


       File: /etc/cron.d/myapp-cron
       # use /bin/bash to run commands, no matter what /etc/passwd says
       SHELL=/bin/bash
       # Execute a nightly (11:00pm) cron job to scrub application records
       00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
    
    0 讨论(0)
  • 2020-11-28 03:03

    Sometimes you'll need to specify PATH and GEM_PATH using crontab with rvm.

    Like this:

    # top of crontab file
    PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/ruby-2.2.$
    GEM_PATH=/home/user_name/.rvm/gems/ruby-2.2.0:/home/user_name/.rvm/gems/ruby-2.2.0@global
    
    # jobs
    00 00 * * * ruby path/to/your/script.rb
    00 */4 * * * ruby path/to/your/script2.rb
    00 8,12,22 * * * ruby path/to/your/script3.rb
    
    0 讨论(0)
提交回复
热议问题