Результаты задания 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», что является правильным.

  • Несколько сеансов ssh в одной команде
  • Оператор match-zero-or-more в оболочке
  • почему для цикла не возникает слишком длинная аргументация?
  • Как я могу связываться с сокером Unix сокета через оболочку на Debian Squeeze?
  • Перенаправить вывод всех команд в файл, а не только последний
  • Отправка почты из скрипта, который запускается Crontab
  • Но когда скрипт оболочки выполняется cron, он всегда возвращает «экземпляр работает»,

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

  • start-stop-daemon делает cron pidfile с неправильным pid
  • Выполнение PHP с помощью CronJobs в CentOS 6.4 не работает?
  • Почему новые cronjob игнорируются, если в SLES не перезагружается?
  • Скрипт, чтобы проверить папку, распечатать файлы, затем удалить эти файлы
  • Как я могу увидеть размер нераспределенного размера раздела в командной строке после сокращения раздела с помощью resize2fs?
  • Korn Shell: конец, pgup, pgdown и ключ удаления не работают
  • 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 
    Linux и Unix - лучшая ОС в мире.