Как я могу запустить команду at с существующими переменными окружения и библиотеками?

Однако почти повторяющийся вопрос из этого , ответ в этом сообщении не решает проблему окружающей среды с командой at .

Описание проблемы: Я хочу запустить свои сценарии оболочки с командой at в качестве запланированного задания. Все мои сценарии оболочки без проблем работают в обычном терминале как в Ubuntu 10.04, так и в 20.04 (3 разные системы). Я получаю все свои результаты, как и ожидалось. Однако как только я запускаю свой сценарий оболочки с по адресу , он вообще не запускается. Вот 3 случая, чтобы продемонстрировать, что в работает для простых операций и не работает при сложных.

case 1

at работает с простым скриптом. Ниже приводится все, что моя оболочка script1.sh :

echo $ (date)> ~ / Desktop / time.txt

работает сейчас + 1 минута -f ~ / script1.sh , это экономит время в файле time.txt. Отлично, значит, мой по адресу работает нормально.

case 2

at дает сбой в простом сценарии. Ниже приведено все, что моя оболочка script2.sh :

echo $(date) > ~/Desktop/time.txt
pycharm.sh

работает сейчас + 1 минута -f ~ / script2.sh , это экономит время в файле time.txt, но Pycharm никогда не открывался. Однако , если я запускаю sh script2.sh без использования в , все сработает отлично, я получаю время в файле time.txt, и Pycharm открывается нормально . Я думаю, это просто означает, что в не получил все переменные в существующей среде терминала. Как только я добавлю export DISPLAY =: 1 в script2.sh как

echo $(date) > ~/Desktop/time.txt
export DISPLAY=:1
pycharm.sh

, тогда сейчас + 1 минута -f ~ / script2.sh будет работать правильно .

case 3

Мне нужно запустить следующий сценарий оболочки с в в качестве запланированного задания, script3.sh :

gjs -numberofsplits 50 -clusterplatform condor -condorscript condor.script main.mac  > ./output0.txt 2>&1
condor_submit main.submit  > ./output1.txt 2>&1

Обратите внимание, что все эти сценарии работают нормально в терминале с sh script.sh , однако , при запуске сценария с сейчас + 1 минута -f ~ / script3.sh выдает ошибку сохранено в файле output0.txt , там сказано

gjs: error while loading shared libraries: libG4global.so: cannot open shared object file: No such file or directory

Я также пытался использовать абсолютный путь к gjs и condor_submit в script3.sh как

/home/albert/Products9/Gate/Gate-9.0-install/bin/gjs -numberofsplits 50 -clusterplatform condor -condorscript condor.script main.mac  > ./output0.txt 2>&1
/usr/bin/condor_submit  > ./output1.txt 2>&1

, но это вызывает ту же ошибку .


уже опробованные решения

Я думаю, что проблема хорошо описана. Я думаю, что причина этой проблемы в том, что команда at не имеет доступа ко всем переменным среды, как в обычном терминале.

Вот решения, которые я попробовал опубликовать здесь , надеясь получить все переменные среды, доступные для в , добавив

source $HOME/.profile

или

source $HOME/.bashrc

в начало сценария оболочки. Однако это совсем не решает и не облегчает проблему.

с просьбой о помощи

Могу я попросить помощи у вас, специалиста в этой области, в решении этой проблемы. Поскольку эта проблема может также беспокоить многих других пользователей. Большое спасибо.

0
задан 26 March 2021 в 21:40

1 ответ

Одна из причин заключается в том, что планировщик команд at не настроен для работы на экране графического интерфейса пользователя по умолчанию. Он должен работать, если вы добавите export DISPLAY =: 0 в myscrpit.sh над строкой pycharm.py . Вы можете проверить переменную DISPLAY , набрав echo $ DISPLAY в окне терминала.

Другая причина - переменные среды. Переменная $ PATH в заданиях cron может не содержать все пути, по которым находятся исполняемые файлы. Также могут быть файлы библиотеки.

Вы можете проверить путь к исполняемым файлам, набрав which (например, which gjs ). Для каталога библиотеки это переменная $ LD_LIBRARY_PATH , а чтобы увидеть, какие библиотеки она использует, это ldd $ (which gjs) .

Затем добавьте экспорт PATH = $ PATH: и export LD_LIBRARY_PATH = в свои сценарии в .

1
ответ дан 23 April 2021 в 23:30

Другие вопросы по тегам:

Похожие вопросы: