Мой qsub находится в SGE. Поэтому при запуске скрипта sh через cronjob я получаю сообщение об ошибке: qsub: command не найден. В настоящее время устанавливается путь: PATH =/USR/бен:/бенКак установить PATH SGE в cronjob
ответ
Вы можете либо установить PATH
в начале сценария, например, с
#!/bin/sh
PATH=$(/usr/bin/getconf PATH):/some/other/dir:/yet/another/dir
...rest of script...
или изменить запись кронтаб, чтобы обеспечить дополненной первоначальный PATH
с
10 20 * * * PATH=/usr/bin:/bin:/some/other/dir:/yet/another/dir /path/to/script.sh
Вы можете установить путь или использовать полный путь qsub
как упоминалось @Jens.
Однако эта ситуация обычно также означает, что ваша оболочка входа в систему является источником файла, который устанавливает для вас множество переменных окружения (включая SGE_ROOT
). Когда запущен ваш cronjob, этот файл не будет получен. Таким образом, помимо исправления вашего пути (или предоставления полного пути для qsub
), вам также необходимо найти этот файл, а затем в верхней части вашего скрипта вам необходимо указать этот файл (или пройти через и вручную установить каждую соответствующую среду переменная).
В моей системе, этот файл находится в /u/local/etc/profile.d/sge.sh
(так что я просто положить . /u/local/etc/profile.d/sge.sh
в верхней части моего сценария, но расположение файла зависит от установки к установке. Вам просто нужно выследить, какой файл настройки SGE_ROOT
когда вы войти (а также ряд других соответствующих переменных окружения, таких как SGE_ARCH
)
(Если у вас есть особенно трудно найти какой файл, вы можете найти этот ответ полезным:. https://unix.stackexchange.com/a/154971/157777).
I задайте PATH согласно вашему предложению, но это дает мне ошибку: установите переменную среды SGE_ROOT. Когда я устанавливаю эту переменную, она дает мне e rror, связанный с этим путем, хотя я дал правильный путь. – Dharmendra
@Dharmendra Возможно, эту переменную нужно экспортировать? Используйте 'SGE_ROOT = ...; экспортируйте PATH SGE_ROOT' в свой скрипт в начале. – Jens