Хотя они похожи, пользовательский crontab (отредактированный с помощью crontab -e) отличается от системного crontab (и отредактировал его путем редактирования / etc / crontab) и сохраняет отдельный путь.
Системный crontab имеет 7 полей, вставляя имя пользователя перед командой. Пользовательский crontab, с другой стороны, имеет только 6 полей, которые вводятся непосредственно в команду сразу после полей времени.
Аналогично, PATH в системном crontab обычно включает каталоги / sbin, тогда как PATH в пользовательском crontab этого не делает. Если вы хотите установить PATH для пользовательского crontab, вам нужно определить переменную PATH в пользовательском crontab.
Простой обходной путь для добавления вашего обычного PATH в команды оболочки в cron состоит в том, чтобы сделать cronjob источником вашего профиля, запустив bash в оболочке входа в систему. например вместо
* * * * * some command
Вы можете вместо этого запустить
* * * * * bash -lc some command
Таким образом, если ваш профиль устанавливает переменную PATH или другие переменные окружения в нечто особенное, он также включается в вашу команду.
bash -lc
не помогает. Сейчас у меня все хорошо с настройкой PATH вручную, но если я установлю некоторые скрипты, я хочу, чтобы они распознавались в cronjobs без указания полного пути. Я уверен, что это возможно как-то, иbash -lc
находится на пути к решению :)Если вам нужны стандартные системные PATH и другие переменные ENV (которые определены в /etc/profile.d), просто добавьте следующее:
источник
Можно установить PATH (или другие параметры) в строке cronjob или в одной строке. Но вы не можете использовать расширение оболочки, как
PATH=$PATH:/usr/local/bin
. Но тильда разрешена для ярлыков домашнего каталога.Из книг:
Смотрите
man 5 crontab
для получения дополнительной информации.Так что это должно работать:
источник
У меня была такая же проблема, и я нашел другой способ запустить мой скрипт в crontab. Я думаю , что самый простой способ запустить программу, чтобы сделать скрипт , который мог кд в каталог программы. Затем вызовите вашу программу в этом сценарии.
это пример скрипта (script name = launcher.sh):
затем сделайте ваш скрипт исполняемым:
И наконец, добавьте ваш скрипт в crontab
и добавьте эту строку в конце:
(Я установил программу для запуска при каждой перезагрузке)
источник