CRON

Ошибки, проблемы, способы их решения.
tasselchof
Сообщения: 168
Зарегистрирован: 2012-09-29 16:12:07

CRON

Сообщение tasselchof » 2015-01-13 21:25:19

У меня крон просто не запускается:

Код: Выделить всё

[***@srv0 public_html]$ sh /home/iqhoster/domains/***/public_html/scripts/billing/check.cron.run.sh


И пусто, в логах нечего нет, путь к интерпретатору - ок.
Последний раз редактировалось Alex Keda 2015-01-13 21:30:43, всего редактировалось 1 раз.
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code]...

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Re: CRON

Сообщение Alex Keda » 2015-01-13 21:31:03

давайте

Код: Выделить всё

sh -xv /home/iqhoster/domains/***/public_html/scripts/billing/check.cron.run.sh
Убей их всех! Бог потом рассортирует...

tasselchof
Сообщения: 168
Зарегистрирован: 2012-09-29 16:12:07

Re: CRON

Сообщение tasselchof » 2015-01-13 21:46:54

Код: Выделить всё

#!/bin/sh

# $1 - /path/to/php.ini
# $2 - /path/to/php
# $3 - billing.hostname.su

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
+ PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
TMPDIR="${TMPDIR:="/tmp"}"
+ TMPDIR=/tmp
TmpFile="$TMPDIR/jbs.$$.txt"
+ TmpFile=/tmp/jbs.976558.txt

# проверяем что запись во временный файл возможна
if ! echo -n > $TmpFile >/dev/null 2>&1
then
   echo "cannot create tmp file = $TmpFile"
   exit 1;
fi
+ echo -n

#find php
if test -x "$2" -a -f "$2"
then
   echo $2 > $TmpFile
else
   for cli in /usr/bin/php
   do
      test -x $cli && echo $cli > $TmpFile
   done
fi
+ test -x '' -a -f ''
+ for cli in /usr/bin/php
+ test -x /usr/bin/php
+ echo /usr/bin/php
#------------------------------------------------
if ! test -s $TmpFile
then
   echo "cannot find php interpretator"
   echo 1;
fi
+ test -s /tmp/jbs.976558.txt
#------------------------------------------------
if test -f "$1"
then
   export PHP_BIN="`cat $TmpFile` -c $1"
else
   export PHP_BIN="`cat $TmpFile`"
fi
+ test -f ''
cat $TmpFile
++ cat /tmp/jbs.976558.txt
+ export PHP_BIN=/usr/bin/php
+ PHP_BIN=/usr/bin/php

rm -f $TmpFile
+ rm -f /tmp/jbs.976558.txt
#------------------------------------------------
# топаем в директорию со скриптами
ScriptsDir="`dirname $0`"
dirname $0
++ dirname /home/***/domains/hosting.lemon/public_html/scripts/billing/check.cron.run.sh
+ ScriptsDir=/home/***/domains/hosting.lemon/public_html/scripts/billing
if ! cd $ScriptsDir
then
   echo "cannot change dir to $ScriptsDir"
   exit 1;
fi
+ cd /home/***/domains/hosting.lemon/public_html/scripts/billing
ScriptsDir="`pwd`"
pwd
++ pwd
+ ScriptsDir=/home/***/domains/hosting.lemon/public_html/scripts/billing
#------------------------------------------------
if test -n "$3"
then
   echo "$3" > $TmpFile
else
   # ищщем host.ini
   for dir in ../../hosts/*
   do
      if test -f $dir/host.ini
      then
         eval `cat $dir/host.ini | grep 'HostsIDs=' | awk -F ',' '{print $1}' | tr -d '"' `
         echo $HostsIDs > $TmpFile
      fi
   done
fi
+ test -n ''
+ for dir in '../../hosts/*'
+ test -f ../../hosts/billing/host.ini
+ for dir in '../../hosts/*'
+ test -f ../../hosts/hosting/host.ini
+ for dir in '../../hosts/*'
+ test -f ../../hosts/hosting.lemon/host.ini
cat $dir/host.ini | grep 'HostsIDs=' | awk -F ',' '{print $1}' | tr -d '"'
++ tr -d '"'
++ awk -F , '{print $1}'
++ grep HostsIDs=
++ cat ../../hosts/hosting.lemon/host.ini
+ eval HostsIDs=hosting.lemon
HostsIDs=hosting.lemon
++ HostsIDs=hosting.lemon
+ echo hosting.lemon
+ for dir in '../../hosts/*'
+ test -f ../../hosts/root/ho

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Re: CRON

Сообщение Alex Keda » 2015-01-14 0:06:37

ну, а остальная часть лога? =)
Убей их всех! Бог потом рассортирует...

tasselchof
Сообщения: 168
Зарегистрирован: 2012-09-29 16:12:07

Re: CRON

Сообщение tasselchof » 2015-01-14 4:02:13

Решил потомить... =)))

Код: Выделить всё

st.ini
#------------------------------------------------
if ! test -s $TmpFile
then
   echo "cannot find billing hostname"
   exit 1;
else
   HostsID=`cat $TmpFile`
   rm -f $TmpFile
fi
+ test -s /tmp/jbs.976558.txt
cat $TmpFile
++ cat /tmp/jbs.976558.txt
+ HostsID=hosting.lemon
+ rm -f /tmp/jbs.976558.txt
#------------------------------------------------
# достаём корневую директорию биллинга
RootDir=`dirname $ScriptsDir`
dirname $ScriptsDir
++ dirname /home/***/domains/hosting.lemon/public_html/scripts/billing
+ RootDir=/home/***/domains/hosting.lemon/public_html/scripts
RootDir=`dirname $RootDir`
dirname $RootDir
++ dirname /home/***/domains/hosting.lemon/public_html/scripts
+ RootDir=/home/***/domains/hosting.lemon/public_html

#------------------------------------------------
#------------------------------------------------
marker="$RootDir/hosts/$HostsID/tmp/TaskLastExecute.txt"
+ marker=/home/***/domains/hosting.lemon/public_html/hosts/hosting.lemon/tmp/TaskLastExecute.txt
# проверяем, запущен скрипт или нет
if [ ! `ps auxww | grep "sh demon.sh $HostsID" | grep -v grep | wc -l` -gt 0 ]
then
   rm -f $marker
   # let Mortal Combat begin! =)
   sh demon.sh $HostsID $RootDir >> $RootDir/demon.log &
fi
ps auxww | grep "sh demon.sh $HostsID" | grep -v grep | wc -l
++ wc -l
++ grep -v grep
++ grep 'sh demon.sh hosting.lemon'
++ ps auxww
+ '[' '!' 0 -gt 0 ']'
+ rm -f /home/***/domains/hosting.lemon/public_html/hosts/hosting.lemon/tmp/TaskLastExecute.txt

#------------------------------------------------
#------------------------------------------------
# проверяем, как давно выполнялось последнее задание
if test -f $marker
then
   # определяем время на час назад, в разных системах по разному
   if [ `uname` = "Linux" ]
   then
      params="--date='1 hour ago'"
   else
      params="-v-1H"
   fi

   executed=`cat $marker`
   if [ `date $params +%Y%m%d%H%M%S` -ge $executed ]
   then
      echo "" >> $RootDir/demon.log
      echo "`date +%Y-%m-%d` in `date +%H:%M:%S`: php-cgi auto killed, no executed tasks more than one hour" >> $RootDir/demon.log
      echo "" >> $RootDir/demon.log
      killall `basename $PHP_BIN`
   fi
fi
+ test -f /home/***/domains/hosting.lemon/public_html/hosts/hosting.lemon/tmp/TaskLastExecute.txt

# delete tmp file
rm -f $TmpFile
+ rm -f /tmp/jbs.976558.txt

tasselchof
Сообщения: 168
Зарегистрирован: 2012-09-29 16:12:07

Re: CRON

Сообщение tasselchof » 2015-01-14 15:13:01

В общем не запускается, кстати через урл можно все равно обратится.

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Re: CRON

Сообщение Alex Keda » 2015-01-14 19:22:06

А если ручками demon.sh - с параметрами, разумеется?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Re: CRON

Сообщение Alex Keda » 2015-01-15 9:12:55

вот это место не прокатывает, как я понимаю

Код: Выделить всё

if [ ! `ps auxww | grep "sh demon.sh $HostsID" | grep -v grep | wc -l` -gt 0 ]
then
   rm -f $marker
   # let Mortal Combat begin! =)
   sh demon.sh $HostsID $RootDir >> $RootDir/demon.log &
fi

сделайте такой скрпитик, гденить в tmp
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

CRON

Сообщение alezhen » 2015-03-08 22:40:42

У меня при выполнении крон он вываливает:

Код: Выделить всё

date: extra operand `ago'
Try `date --help' for more information.
.../scripts/billing/check.cron.run.sh: line 106: [: -ge: unary operator expected

это нормально?

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

CRON

Сообщение Alex Keda » 2015-03-08 23:53:22

нет. но честно говоря, я уже заманался с вашими линуксами кривыми =((

такой скриптик сделайте

Код: Выделить всё

cat /tmp/a.sh
#!/bin/sh -xv



if [ `uname` = "Linux" ]
then
        params=--date="1 hour ago"
else
        params="-v-1H"
fi


if [ `date $params +%Y%m%d%H%M%S` -ge 12345 ]
then
        echo OK
fi

chmod 750 на него и запускайте.
чё покажет

Отправлено спустя 9 минут 46 секунд:
а вообще, из репозитория возьмите scripts/billing/check.cron.run.sh
я его тока что поправил...
--
бля, в файле штук 10 правок, и все по линуксам....
почему под фрёй всё ровно работает - с 8 до 11 версии, а линуксы от версии мотыляются? ...
Убей их всех! Бог потом рассортирует...


Вернуться в «Решение проблем»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей