The Community Forums

Interact with an entire community of cPanel & WHM users!
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Bash script runs manually but not in cron

Discussion in 'General Discussion' started by bigdessert, Oct 2, 2011.

  1. bigdessert

    bigdessert Active Member

    Joined:
    Jul 21, 2006
    Messages:
    35
    Likes Received:
    0
    Trophy Points:
    6
    I have a bash script that is like this:

    Code:
    #!/bin/bash
    
    rm -rf /home/domain/mail/domain.com/user/cur/*
    rm -rf /home/domain/mail/domain.com/user/maildirsize
    If I run the script locally it works correctly. If I schedule it via root crontab job per the cron log it runs but doesn't actually delete the files like it should.

    Any Ideas why it runs manually but via cron it doesn't delete any files?

    Also on another side note, obviously this is being used to delete all email in a users inbox. Is this a proper way to do this or should I be performing this task a different way?
     
  2. Eric

    Eric Administrator
    Staff Member

    Joined:
    Nov 25, 2007
    Messages:
    746
    Likes Received:
    11
    Trophy Points:
    18
    Location:
    Texas
    cPanel Access Level:
    Root Administrator
    Howdy,

    Could you cat the /var/spool/cron/<username> file for this user?

    Thanks!
     
  3. bigdessert

    bigdessert Active Member

    Joined:
    Jul 21, 2006
    Messages:
    35
    Likes Received:
    0
    Trophy Points:
    6
    Code:
    4,19,34,49 * * * * /usr/local/cpanel/whostmgr/bin/dnsqueue > /dev/null 2>&1
    0 0 * * * /usr/local/cpanel/whostmgr/docroot/cgi/cpaddons_report.pl --notify
    */5 * * * * /usr/local/cpanel/bin/dcpumon >/dev/null 2>&1
    MAILTO=""
    */45 * * * * /home/smilecen/backup
    10 4 * * * cd /usr/local/assp;perl /usr/local/assp/rebuildspamdb.pl
    */59 * * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/assp/deluxe/ex_localdomains.php clean_logs=yes
    */3 * * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/assp/deluxe/update_email.php debug=yes
    */4 * * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/assp/deluxe/spam_cronjob.php
    26 3 * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/assp/deluxe/clear_spambox.php sday=5 noemail=yes
    */20 * * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/assp/deluxe/find_abusers.php sw=10 rl=15 sc=15 er=8 lm=8 dc=10 on=1 bl=1 lu=8 sz=250
    */1 * * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/assp/deluxe/status.php
    */2 * * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/assp/deluxe/status.php check_ssl=yes
    0 4 * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/assp/deluxe/signatures.php
    */5 * * * *  /usr/local/bin/php /scripts/custom/dynamic_update.php
    0 3 * * * /scripts/custom/backup.sh
    0 0 * * * /scripts/custom/exchange.sh > /exchange.log 2>&1
    MAILTO=root
    */15 * * * * /scripts/custom/PWSmonitorchanges.cgi >/dev/null 2>&1
    */15 * * * * /scripts/custom/alert/PWSmonitorchanges.cgi >/dev/null 2>&1
    30 */4 * * * /usr/bin/test -x /usr/local/cpanel/scripts/update_db_cache && /usr/local/cpanel/scripts/update_db_cache
    45 */8 * * * /usr/bin/test -x /usr/local/cpanel/bin/optimizefs && /usr/local/cpanel/bin/optimizefs
    20 4 * * * /usr/local/cpanel/scripts/upcp --cron > /dev/null 2>&1
    0 7 * * * /usr/local/cpanel/scripts/cpbackup > /dev/null 2>&1
    35 * * * * /usr/bin/test -x /usr/local/cpanel/bin/tail-check && /usr/local/cpanel/bin/tail-check
    30 */2 * * * /usr/local/cpanel/bin/mysqluserstore >/dev/null 2>&1
    15 */2 * * * /usr/local/cpanel/bin/dbindex >/dev/null 2>&1
    25 4 * * * /usr/bin/freshclam --quiet --no-warnings
    0 6 * * * /usr/local/cpanel/scripts/exim_tidydb > /dev/null 2>&1
    0 6 * * * /usr/local/cpanel/scripts/exim_tidydb > /dev/null 2>&1
    45 */4 * * * /usr/bin/test -x /usr/local/cpanel/scripts/update_mailman_cache && /usr/local/cpanel/scripts/update_mailman_cache
    15 */6 * * * /usr/local/cpanel/scripts/recoverymgmt >/dev/null 2>&1
    2,58 * * * * /usr/local/bandmin/bandmin
    0 0 * * * /usr/local/bandmin/ipaddrmap
    
     
  4. sirdopes

    sirdopes Well-Known Member
    PartnerNOC

    Joined:
    Sep 25, 2007
    Messages:
    141
    Likes Received:
    0
    Trophy Points:
    16
    Do you see the cron running in /var/log/cron ? Also, is there a reason that you are deleting the email? I guess i am confused on why you would want an email address setup in the first place if you are erasing the email.
     
  5. bigdessert

    bigdessert Active Member

    Joined:
    Jul 21, 2006
    Messages:
    35
    Likes Received:
    0
    Trophy Points:
    6
    Yes, it is showing as run in var/log/cron.

    The reason for having the email is the email comes to our server first, then gets static routed in exim to another host. We do spam checking and it does collection to a spam folder in the users mailbox. In order for spam collection to happen there has to be a mailbox. Because all emails are being forwarded I don't need to keep copies in the user inbox as it will just keep growing. This was my simple solution to clean their inbox daily.
     
  6. bigdessert

    bigdessert Active Member

    Joined:
    Jul 21, 2006
    Messages:
    35
    Likes Received:
    0
    Trophy Points:
    6
    any ideas on this, still not running.
     
  7. d-woo

    d-woo Well-Known Member

    Joined:
    Aug 9, 2003
    Messages:
    88
    Likes Received:
    0
    Trophy Points:
    6
    in /var/log/cron where you see that the cron is running, just before CMD you will see in parentheses either (root) or ({username})

    If it is root, I'm not sure what the issue is.

    I entered my cron via cPanel, so it is run as {username} and not root.

    So...if as {username} you will need to ensure that your script:
    a. is chown as {username}:{username}
    b. is chmod as 744 (executable)
    c. is located in /home/{username}

    so when you enter your cron command in cPanel it will look like:
    /bin/bash /home/{username}/backup.sh

    Now...if your script is writing to or accessing an area other than /home/{username} then it will not work.

    You will need to run the cron as root.

    My script was backing up to /var/lib/mysql/backups...it ran perfectly when I tested it as root, but during the Cron job it ran, but nothing was executed because it was run as {username} because {username} was not allowed into /var/lib/mysql

    Hope this helps you.
     
    #7 d-woo, Dec 16, 2011
    Last edited: Dec 16, 2011
  8. cPanelTristan

    cPanelTristan Quality Assurance Analyst
    Staff Member

    Joined:
    Oct 2, 2010
    Messages:
    7,623
    Likes Received:
    21
    Trophy Points:
    38
    Location:
    somewhere over the rainbow
    cPanel Access Level:
    Root Administrator
    What is the actual cronjob in /var/spool/cron/root location? You mention is being run by the root user and you provided the full crontab entry for root, but I am uncertain what cronjob it would be under that file. Please only provide the entry for that specific cronjob in /var/spool/cron/root location.

    Also, it might be better to have the full path to rm rather than the partial path in the script you are using:

    Code:
    #!/bin/bash
    
    /bin/rm -rf /home/domain/mail/domain.com/user/cur/*
    /bin/rm -rf /home/domain/mail/domain.com/user/maildirsize
     
Loading...

Share This Page