#bash #npm #cron #sudo
Вопрос:
Я запускаю скрипт из crontab, в котором я хочу установить символическую ссылку для npx
. Он выполняет некоторые другие действия, которые зависят от самой npx
команды. Он запускает сценарий, как и ожидалось, на заданном временном интервале, но не дает мне никакого результата для команды which npx
или whereis npx
. Когда я пытаюсь запустить скрипт непосредственно из терминала, эти команды генерируют правильный путь. Обратите внимание, crontab
что я использую привилегию пользователя root, т. Е. устанавливаю sudo crontab -e
и проверяю с echo
помощью ing whoami
внутри скрипта, который генерирует «root»)
Комментарии:
1. Где это
npx
? По умолчанию задания cron выполняются с очень минимальнымPATH
(обычно просто/usr/bin:/bin
), и если его нет в одном из каталогов в этом,which
вы его не найдете (whereis
немного отличается, но может возникнуть аналогичная проблема).2. Привет Гордон, NPX-это исполнитель, который поставляется с npm, что вы подразумеваете под минимальным ПУТЕМ… разве этот скрипт не работает в той же среде…так как я могу указать правильный путь npx (с
which npx
) при запуске сценария вручную, спасибо !3. У вас есть
$HOME/.profile
или$HOME/.bash_rc
где ваш путь изменился? Сначала попробуйте найти этот файл.4. задания cron выполняются не в обычной среде; см. Этот вопрос и ответ . Кроме того, имейте в виду, что среда, в которой он находится, принадлежит root, а не вам.
Ответ №1:
По умолчанию crontab будет запускать ваши задания cron, используя sh
которые, возможно, вы не получаете результатов.
Попробуйте явно изменить оболочку на оболочку по умолчанию, изменив запись crontab:
*/30 * * * * /bin/bash -c "/my_script.sh"
В этом случае я изменил его на bash, вы можете изменить его на нужную вам оболочку.
Комментарии:
1. Привет, Шачар, да, я пробовал это, но не смог получить ожидаемого результата, crontab не выдает результатов
which npx
, пока скрипт запускается вручную (под корневым доступом), спасибо!2. Быстрым решением было бы указать полный путь, однако вы можете просто настроить переменную среды PATH для своего сценария.