Команда работает в терминале, но не в crontab

Когда вы делаете:

ldd path/to/your/libname.so

в системе Debian, тогда lddпокажет вам, на что, по его мнению, ссылается библиотека, и сможет ли ld.so разрешить/найти перечисленные библиотеки.

Это должно показать вам, в чем заключается реальная проблема и какую зависимость/библиотеку вам не хватает в системе Debian.

Еще лучше было бы сделать:

ldd path/to/the/executable_that_links_to_libname

, потому что это показало бы вам (и нам здесь )информацию, которую вы пропустили выше.

1
17.05.2021, 04:34
2 ответа

Трудно понять, в чем здесь настоящая проблема, но вот пара вещей, которые вы можете попробовать:

  • Поместите этот -вкладыш в скрипт, chmod -xего и используйте в crontab

Это позволит вам лучше контролировать происходящее (, например,:set -xи т. д. ).

  • Включите отладочный вывод, чтобы узнать, почему ваша запись в crontab не работает должным образом:
#!/bin/bash -x

или если вы используетеsh

#!/bin/sh -x

или просто используйте set -x.

Я предполагаю, что это может быть проблема с разрешениями или подстановкой оболочки, но если она не решается с помощью скрипта, вы должны сделать это:

script.sh &> script.log

Таким образом, вы можете четко видеть, что и как что-то дает сбой при запуске как cronjob...

  • Проверить наличие записи вcrontab

Это очевидно, но поскольку некоторые могут использовать файл crontabвместо того, чтобы добавлять его напрямую черезcrontab:

echo "job entry" | crontab -

или "обычный" способ, но требует, чтобы текстовый редактор был открыт, а пользователь копировал и вставлял/ввод своего задания/записи в crontab вручную...:

crontab

или если вы предпочитаете метод предотвращения дублирования ввода:

cronadd() {
if crontab -l | grep -wq -- "$@"; then
    :
else
    (crontab -l 2>/dev/null; echo "$@") | crontab -
fi
}

И вы могли бы использовать его вот так:

cronadd "job entry here"

Это должно предотвратить добавление повторяющихся заданий, и вы можете убедиться, что они действительно добавлены... Всегда сверяйтесь с crontab -l.

0
28.07.2021, 11:31

Спасибо за хорошие ответы. Я пробовал все, пока:

«Я предполагаю, что это может быть проблема с разрешениями или глобусом оболочки, но если она не решается с помощью скрипта, вы должны сделать это :script.sh &> script.log"

Проблема была с разрешениями. Я запустил crontab с Sudo, это создало некоторые проблемы. Когда я добавил команду в crontab, запущенную как пользователь, она сработала.

0
28.07.2021, 11:31

Теги

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