Hi - I have problems with a strange mail log behaviour: the /var/log/mail.ispconfigsave contains the daily logs from 16:45 to 23:59 only. example: log entrys between Sep 9 23:59 and Sep 10 16:45 are missing the daily logfiles /var/log/mail.info-YYYYMMDD.gz are containing the entries from 16:45 to 16:45 example: mail.info-20060909.gz first entry: Sep 8 16:45:15 last entry: Sep 9 16:45:02 Logrotation is as default: /etc/cron.daily/logrotate runs /etc/logrotate.conf /etc/logrotate.conf is default, contains nothing related to 16:45 (only the default values: weekly, rotate 4, create) /etc/logrotate.d contains no postfix file the ispconfig jobs in crontab are croned as default (23:59, 0:30, 0:40 etc.), there is no cronjob around 16:45 (nevertheless the ispconfig log-jobs are reading the logfiles only, not cutting them, right?) I would like to have the logfiles cutted at 0:00 After looking for related threads here and asking google I´m quite confused now ..... Can anybody help or give me a hint, a url ..... thanks in advance!
Hi till&falko, sorry form my late reaction, was ill, no possibilty to check my mails Yes, the ispconfig cron jobs are all right and they´re default from the installation Code: 59 23 * * * /root/ispconfig/php/php /root/ispconfig/scripts/shell/ftp_logs.php &> /dev/null 59 23 * * * /root/ispconfig/php/php /root/ispconfig/scripts/shell/mail_logs.php &> /dev/null 59 23 * * * /root/ispconfig/php/php /root/ispconfig/scripts/shell/cleanup.php &> /dev/null 0,30 * * * * /root/ispconfig/php/php /root/ispconfig/scripts/shell/check_services.php &> /dev/null 15 3,15 * * * /root/ispconfig/php/php /root/ispconfig/scripts/shell/quota_msg.php &> /dev/null 30 00 * * * /root/ispconfig/php/php /root/ispconfig/scripts/shell/logs.php &> /dev/null 40 00 * * * /root/ispconfig/php/php /root/ispconfig/scripts/shell/traffic.php &> /dev/null 30 03 * * * /root/ispconfig/php/php /root/ispconfig/scripts/shell/backup.php &> /dev/null 00 04 * * * /root/ispconfig/php/php /root/ispconfig/scripts/shell/webalizer.php &> /dev/null contains: Code: SHELL=/bin/sh PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin MAILTO=root # # check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly # -*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1 what I have to check?
This cron job runs every 15 minutes, so it also runs at 16.45h. What's the output of Code: ls -la /usr/lib/cron/run-crons ? If it's a file, what's in it?
Yes, but why not 15:30 oder 7:15 or something else? Code: [B]ls -la /usr/lib/cron/run-crons[/B] -rwxr--r-- 1 root root 6054 Sep 9 2005 /usr/lib/cron/run-crons and Code: [B]more /usr/lib/cron/run-crons[/B] #!/bin/bash # # /usr/lib/cron/run-crons # # Copyright (c) 1998-2001 SuSE GmbH Nuernberg, Germany. All rights reserved. # # this script looks into /etc/cron.{hourly,daily,weekly,monthly} for # scripts to be executed. The info about last run is stored in # /var/spool/cron/lastrun # # concept similar to debian and redhat # # Changes: # 1998 - Burchard Steinbild <[email protected]>, 1998 # initial version # before 2001 - [email protected] # send an email with name of date-script instead of cron entry # "Subject: cronjob@www - daily - FAILURE" # (better one script for each date-sub-script) # requires changes to /etc/crontab # append > /dev/null 2>&1 to the line calling run-cons # 2001-09-11 # updated to Suse 7.2 merged # 2001-09-12 # changed FAILURE detection, until now all scripts with output # had "failed", now only scripts with error status != 0 # have failed. # 2001-09-13 - [email protected] # merged with 7.3: call logger with exit value for scripts # respect MAILTO as cron does # use mktemp -d for all tmpfiles # add variable to disable mail if all jobs returned 0 # # set to "true" to send a mail even if all scripts returned OK SEND_MAIL_ON_NO_ERROR=false BASENAME=`/usr/bin/basename $0` LOGGER="/bin/logger -t $BASENAME[$$]" export LC_TIME=POSIX TMPDIR=`mktemp -d /tmp/run-crons.XXXXXX` trap "rm -rf $TMPDIR" 0 1 2 3 13 15 # Priority change for sub scripts. # range: highest -20 ... 19 lowest prioriy # default processes start in level 10 CRON_SCRIPT_NICE_VALUE=15 SPOOL=/var/spool/cron/lastrun # CRON Result EMail is sent to if test -z "$MAILTO" ; then SEND_TO="root" else SEND_TO="$MAILTO" fi # # Don't run jobs on laptops, that are AC-offline # if test -x /usr/bin/on_ac_power ; then on_ac_power -q if [ "$?" = "1" ]; then exit 0 fi fi mkdir -p $SPOOL #set verbose ## stage 1, search directories/scripts to run RUN="" for CRONDIR in /etc/cron.{hourly,daily,weekly,monthly} ; do test -d $CRONDIR || continue BASE=${CRONDIR##*/} TIME_EXT=${BASE##cron.} test -e $SPOOL/$BASE && { case $BASE in cron.hourly) TIME="-cmin +60 -or -cmin 60" ;; cron.daily) TIME="-cmin +1440 -or -cmin 1440" ;; cron.weekly) TIME="-cmin +10080 -or -cmin 10080" ;; cron.monthly) NOW=`date +%s` LASTMONTH=`date -d "last month" +%s` DIFF=`expr '(' $NOW - $LASTMONTH ')' / 86400` TIME="-ctime +$DIFF" ;; esac # remove all lock files for scripts that are due to run eval find $SPOOL/$BASE $TIME | \ xargs --no-run-if-empty rm } if test ! -e $SPOOL/$BASE ; then # accept this dir, if it isn't empty LIST=`find $CRONDIR ! -type d` if [ ! -z "$LIST" ] ; then RUN="${RUN} ${TIME_EXT}" fi fi done ## STATUS communication variable between # function run_scripts () # and loop-over-all-scripts # set in run_scripts to FAILURE if this script failed! # else it is empty # because it is never reset to empty after the initialization # it implements an OR like logic over all scripts ## STATUS="" # helper, run all scripts in one cron directory function run_scripts (){ local CRONDIR=$1 local TIME_EXT=$2 local TEMP_MSG=$TMPDIR/run-crons.${TIME_EXT}.$$ rm -r $TMPDIR/run-crons.${TIME_EXT}.* >/dev/null 2>&1 # keep going when something fails set +e for SCRIPT in $CRONDIR/* ; do test -d $SCRIPT && continue case "$SCRIPT" in .svn) continue ;; *.rpm*) continue ;; *.swap) continue ;; *.bak) continue ;; *.orig) continue ;; \#*) continue ;; *~) continue ;; esac /sbin/checkproc $SCRIPT && continue if test -x $SCRIPT ; then BASESCRIPT=`/usr/bin/basename $SCRIPT` nice -n ${CRON_SCRIPT_NICE_VALUE} $SCRIPT >$TEMP_MSG 2>&1 local ERRNO=$? if [ 0 -eq $ERRNO ] ; then # dummy action echo "SCRIPT: $BASESCRIPT, OK." else echo "$BASESCRIPT returned $ERRNO" | $LOGGER -p warn echo "SCRIPT: $BASESCRIPT exited with RETURNCODE = $ERRNO." STATUS="FAILURE" fi # write some wrapper text around the original output if [ -s "$TEMP_MSG" ] ; then echo "SCRIPT: output (stdout && stderr) follows" echo "" cat $TEMP_MSG echo -e "SCRIPT: $BASESCRIPT\n------- END OF OUTPUT" echo "" echo "" fi rm -f $TEMP_MSG > /dev/null 2>&1 else echo "WARNING: $SCRIPT is not executable, script is ignored !" fi done } # stage 2: # run all scripts and collect output into one mail # for each TIME_EXT with a meaningfull subject. # if [ ! -z "${RUN}" ] ; then for EXT in ${RUN} ; do CRONDIR="/etc/cron."${EXT} test -d $CRONDIR || continue BASE=`/usr/bin/basename $CRONDIR` TIME_EXT=${BASE##cron.} STATUS="" if test ! -e $SPOOL/$BASE ; then CONTROL_MAIL=$TMPDIR/run-crons.$$ echo "running ${TIME_EXT} cronjob scripts" >> ${CONTROL_MAIL} echo "" >> ${CONTROL_MAIL} touch $SPOOL/$BASE run_scripts ${CRONDIR} ${TIME_EXT} >> ${CONTROL_MAIL} 2>&1 TITLE="cronjob@$HOSTNAME - ${TIME_EXT}" if [ -n "${STATUS}" ] ; then TITLE="${TITLE} - ${STATUS}" else TITLE="${TITLE} - OK" fi if [ -n "${STATUS}" -o "$SEND_MAIL_ON_NO_ERROR" = true ] ; then mail ${SEND_TO} -s "${TITLE}" < ${CONTROL_MAIL} fi rm -f ${CONTROL_MAIL} fi done fi # # now make sure, we have no lastrun files dated to future # touch $SPOOL NOW=`date -u +%s` for i in `find $SPOOL -type f` do FILEDATE=`date -u -r $i +%s` # allow for up to one hour in the future because of summer/wintertime if [ `expr $FILEDATE - $NOW` -gt 3600 ] then rm $i fi done /usr/lib/cron/run-crons is default from system- and ispconfig-installation, no changes on that file were made. and so on: Code: [B]ls -la /var/spool/cron/lastrun[/B] -rw-r--r-- 1 root root 0 Sep 20 16:45 cron.daily