Результаты задания Cron отличаются от выполнения из собственной оболочки

Я использую Ubuntu 12.0.4 У меня есть сценарий в основном со следующими кодами:

lockfile=/var/tmp/mylock if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null; then exit_normally "instance is running" else echo "no instance is running" fi 

Файл / var / tmp / mylock не существует в моей системе, поэтому, когда я запускаю свой скрипт вручную, я получаю «no instance is running», что является правильным.

Но когда скрипт оболочки выполняется cron, он всегда возвращает «экземпляр работает»,

Я не уверен, где проверить или что искать, чтобы найти первопричину проблемы выше, надеюсь, я могу получить несколько указателей здесь.

  • `crontab -e: E212: не удается открыть файл для записи` при использовании gvim (работает с vi)
  • Прочитайте каждый каталог и выполните действия в скрипте Bash
  • Как программно добавить новый файл crontab без замены предыдущего
  • Почему cron перестала обрабатывать команды?
  • Как инициировать процесс для скрипта через cronjob, статус монитора и время выполнения журнала
  • скрипт, выполняющийся в crontab, не выдающий вывод на экран оболочки
  • Solaris cron игнорирует почтовые псевдонимы?
  • Что делает CRON = 1?
  • One Solution collect form web for “Результаты задания Cron отличаются от выполнения из собственной оболочки”

    Как правило, создание файла и ожидание того, что ОС не сбивает его, если оно существует, не является хорошим способом проверить, существует ли он.

    Вам лучше поработать с:

     if [ -f $lockfile ]; then exit_normally "instance is running" else echo "no instance is running" fi 

    Однако, если вы пытаетесь использовать существование файла в качестве файла блокировки, вам, вероятно, будет лучше использовать команду unix lockfile:

     lockfile -r 0 $lockfile if [ $? -ne 0 ]; then exit_normally "instance is running" else echo "no instance is running" fi 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.