Установка пути для всех случаев в cron, чтобы он мог найти ruby ​​

Мой рубин находится в / usr / local / bin. всякий раз, когда не может его найти, и установка PATH в верхней части моего cron-файла тоже не работает, я думаю, потому что всякий раз, когда выполняется команда внутри нового экземпляра bash.

# this does not work
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin

# Begin Whenever generated tasks for: foo
0 * * * * /bin/bash -l -c 'cd /srv/foo/releases/20110429110637 && script/rails runner -e production '\''ActiveRecord::SessionStore::Session.destroy_recent(15)'\'''

# End Whenever generated tasks for: foo

Как я могу сказать, где находится мой двоичный файл Ruby? Создание символической ссылки из / usr / bin кажется мне беспорядочным, но я думаю, что это может быть единственный вариант.

Этот вопрос предлагает env: PATH, "..." в расписании .rb в качестве решения, но (а) я не могу найти никакой документации по этой функции где-либо в документации (б) похоже, что проблема не решена (к сожалению, мне требуется нетривиальное время, чтобы просто попробуйте).

Мой рубин находится в / usr / local / bin. всякий раз, когда не может его найти, и установка PATH в верхней части моего cron-файла тоже не работает, я думаю, потому что всякий раз, когда выполняется команда внутри нового экземпляра bash.

# this does not work
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin

# Begin Whenever generated tasks for: foo
0 * * * * /bin/bash -l -c 'cd /srv/foo/releases/20110429110637 && script/rails runner -e production '\''ActiveRecord::SessionStore::Session.destroy_recent(15)'\'''

# End Whenever generated tasks for: foo

Как я могу сказать, где находится мой двоичный файл Ruby? Создание символической ссылки из / usr / bin кажется мне беспорядочным, но я думаю, что это может быть единственный вариант.

Этот вопрос предлагает env: PATH, "..." в расписании .rb в качестве решения, но (а) я не могу найти никакой документации по этой функции где-либо в документации (б) похоже, что проблема не решена (к сожалению, мне требуется нетривиальное время, чтобы просто попробуйте).

Мой рубин находится в / usr / local / bin. всякий раз, когда не может его найти, и установка PATH в верхней части моего cron-файла тоже не работает, я думаю, потому что всякий раз, когда выполняется команда внутри нового экземпляра bash.

# this does not work
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin

# Begin Whenever generated tasks for: foo
0 * * * * /bin/bash -l -c 'cd /srv/foo/releases/20110429110637 && script/rails runner -e production '\''ActiveRecord::SessionStore::Session.destroy_recent(15)'\'''

# End Whenever generated tasks for: foo

Как я могу сказать, где находится мой двоичный файл Ruby? Создание символической ссылки из / usr / bin кажется мне беспорядочным, но я думаю, что это может быть единственный вариант.

Этот вопрос предлагает env: PATH, "..." в расписании .rb в качестве решения, но (а) я не могу найти никакой документации по этой функции где-либо в документации (б) похоже, что проблема не решена (к сожалению, мне требуется нетривиальное время, чтобы просто попробуйте). Я думаю, потому что всякий раз, когда команда запускается внутри нового экземпляра bash.

# this does not work
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin

# Begin Whenever generated tasks for: foo
0 * * * * /bin/bash -l -c 'cd /srv/foo/releases/20110429110637 && script/rails runner -e production '\''ActiveRecord::SessionStore::Session.destroy_recent(15)'\'''

# End Whenever generated tasks for: foo

Как я могу узнать, где находится мой двоичный файл Ruby? Создание символической ссылки из / usr / bin кажется мне беспорядочным, но я думаю, что это может быть единственный вариант.

Этот вопрос предлагает env: PATH, "..." в расписании .rb в качестве решения, но (а) я не могу найти никакой документации по этой функции где-либо в документации (б) похоже, что проблема не решена (к сожалению, мне требуется нетривиальное время, чтобы просто попробуйте). Я думаю, потому что всякий раз, когда команда запускается внутри нового экземпляра bash.

# this does not work
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin

# Begin Whenever generated tasks for: foo
0 * * * * /bin/bash -l -c 'cd /srv/foo/releases/20110429110637 && script/rails runner -e production '\''ActiveRecord::SessionStore::Session.destroy_recent(15)'\'''

# End Whenever generated tasks for: foo

Как я могу узнать, где находится мой двоичный файл Ruby? Создание символической ссылки из / usr / bin кажется мне беспорядочным, но я думаю, что это может быть единственный вариант.

Этот вопрос предлагает env: PATH, "..." в расписании .rb в качестве решения, но (а) я не могу найти никакой документации по этой функции где-либо в документации (б) похоже, что проблема не решена (к сожалению, мне требуется нетривиальное время, чтобы просто попробуйте). update на самом деле он находится внизу этой страницы , я попробую сейчас.

подробнее

  1. Я не могу изменить команду cron, потому что она сгенерирована всякий раз, когда
  2. я проверял, что если я создам новую оболочку bash с помощью bash -l , / usr / bin / env найдет ruby ​​нормально
  3. , я просто попробовал точную команду в cron, начиная с / bin / bash из командной строки этого пользователя, и это сработало.

так что это очень загадочно ...

17
задан Community 23 May 2017 в 12:10
поделиться