Running a simple shell script as a cronjob

后端 未结 5 1684
伪装坚强ぢ
伪装坚强ぢ 2020-12-16 11:57

I have a very simple shell script I need to run as a cronjob but I can\'t get even the test scripts to run. Here\'s and example script:

/home/myUser/scripts/test.sh<

相关标签:
5条回答
  • 2020-12-16 12:10

    The easiest way would be to use a GUI:

    For Gnome use gnome-schedule (universe)

    sudo apt-get install gnome-schedule 
    

    For KDE use kde-config-cron

    It should be pre installed on Kubuntu
    

    But if you use a headless linux or don´t want GUI´s you may use:

    crontab -e
    

    If you type it into Terminal you´ll get a table.
    You have to insert your cronjobs now.
    Format a job like this:

    *     *     *     *     *  YOURCOMMAND
    -     -     -     -     -
    |     |     |     |     |
    |     |     |     |     +----- Day in Week (0 to 7) (Sunday is 0 and 7)
    |     |     |     +------- Month (1 to 12)
    |     |     +--------- Day in Month (1 to 31)
    |     +----------- Hour (0 to 23)
    +------------- Minute (0 to 59)
    

    There are some shorts, too (if you don´t want the *):

    @reboot --> only once at startup
    @daily ---> once a day
    @midnight --> once a day at midnight
    @hourly --> once a hour
    @weekly --> once a week
    @monthly --> once a month
    @annually --> once a year
    @yearly --> once a year
    

    If you want to use the shorts as cron (because they don´t work or so):

    @daily --> 0 0 * * *
    @midnight --> 0 0 * * *
    @hourly --> 0 * * * *
    @weekly --> 0 0 * * 0
    @monthly --> 0 0 1 * *
    @annually --> 0 0 1 1 *
    @yearly --> 0 0 1 1 *
    
    0 讨论(0)
  • 2020-12-16 12:16

    It should run properly at cron also. Please check below things.

    1- You are editing proper file to set cron.

    2- You have given proper permission(execute permission) to script mean your script is executable.

    0 讨论(0)
  • 2020-12-16 12:16

    Specify complete path and grant proper permission to scriptfile. I tried following script file to run through cron:

    #!/bin/bash
    /bin/mkdir /scratch/ofsaaweb/CHEF_FICHOME/ficdb/bin/crondir
    

    And crontab command is

    * * * * * /bin/bash /scratch/ofsaaweb/CHEF_FICHOME/ficdb/bin/test.sh
    

    It worked for me.

    0 讨论(0)
  • 2020-12-16 12:19

    What directory is file.txt in? cron runs jobs in your home directory, so unless your script cds somewhere else, that's where it's going to look for/create file.txt.

    EDIT: When you refer to a file without specifying its full path (e.g. file.txt, as opposed to the full path /home/myUser/scripts/file.txt) in shell, it's taken that you're referring to a file in your current working directory. When you run a script (whether interactively or via crontab), the script's working directory has nothing at all to do with the location of the script itself; instead, it's inherited from whatever ran the script.

    Thus, if you cd (change working directory) to the directory the script's in and then run it, file.txt will refer to a file in the same directory as the script. But if you don't cd there first, file.txt will refer to a file in whatever directory you happen to be in when you ran the script. For instance, if your home directory is /home/myUser, and you open a new shell and immediately run the script (as scripts/test.sh or /home/myUser/scripts/test.sh; ./test.sh won't work), it'll touch the file /home/myUser/file.txt because /home/myUser is your current working directory (and therefore the script's).

    When you run a script from cron, it does essentially the same thing: it runs it with the working directory set to your home directory. Thus all file references in the script are taken relative to your home directory, unless the script cds somewhere else or specifies an absolute path to the file.

    0 讨论(0)
  • 2020-12-16 12:30

    Try,

     # cat test.sh
     #!/bin/bash
     /bin/touch file.txt
    

    cron as:

     * * * * * /bin/sh /home/myUser/scripts/test.sh
    

    And you can confirm this by:

     # tailf /var/log/cron
    
    0 讨论(0)
提交回复
热议问题