Когда вы делаете:
ldd path/to/your/libname.so
в системе Debian, тогда ldd
покажет вам, на что, по его мнению, ссылается библиотека, и сможет ли ld.so разрешить/найти перечисленные библиотеки.
Это должно показать вам, в чем заключается реальная проблема и какую зависимость/библиотеку вам не хватает в системе Debian.
Еще лучше было бы сделать:
ldd path/to/the/executable_that_links_to_libname
, потому что это показало бы вам (и нам здесь )информацию, которую вы пропустили выше.
Трудно понять, в чем здесь настоящая проблема, но вот пара вещей, которые вы можете попробовать:
chmod -x
его и используйте в crontab Это позволит вам лучше контролировать происходящее (, например,:set -x
и т. д. ).
#!/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
.
Спасибо за хорошие ответы. Я пробовал все, пока:
«Я предполагаю, что это может быть проблема с разрешениями или глобусом оболочки, но если она не решается с помощью скрипта, вы должны сделать это :script.sh &> script.log"
Проблема была с разрешениями. Я запустил crontab с Sudo, это создало некоторые проблемы. Когда я добавил команду в crontab, запущенную как пользователь, она сработала.