Problém
Spuštění skriptu pomocí služby cron, která se normálně spouští ze shellu, ale nevykazuje stejné chování při spouštění z crontab.
Kořenová příčina
Jednou z nejčastějších příčin nesprávného provedení úlohy crontab je, že cronjob neběží v prostředí shellu uživatele. Dalším důvodem může být – neuvedení absolutní cesty příkazů použitých ve skriptu. Když je skript spuštěn ručně, proměnná prostředí, jako je PATH, může být jiná než při spuštění z cronu. Proto se vždy doporučuje zahrnout absolutní cesty příkazů použitých ve skriptu.
Z tohoto důvodu žádné proměnné prostředí pro uživatele, které jsou přítomny v normálním shellu, nebudou během provádění úlohy cron dostupné, pokud nejsou explicitně importovány skriptem.
Pokud má například shell definovanou proměnnou ORACLE_HOME a zahrnuje ji do proměnné prostředí PATH a skript tyto proměnné využívá, skript se spustí při prodeji, ale při spuštění z crontab nebude skript o těchto proměnných vědět. ve výchozím nastavení.
Řešení
Definujte nebo importujte ORACLE_HOME a úplnou proměnnou PATH do souboru skriptu cron, jak vidíte v uživatelském shellu oracle (oracle_user_shell> echo $PATH).
Osvědčeným postupem je vždy importovat uživatelské prostředí na začátku skriptu script.sh příkazem:
#!/bin/bash . /home/oracle/.bashrc [rest of script]
Tím se přečte /home/oracle/.bashrc a naimportuje se do něj prostředí. V závislosti na prostředí uživatele to může být také /home/oracle/.bash_profile nebo jiné soubory.
POZNÁMKA :Mezi tečkou „.“ je mezera. a „/home..“
[* * * * *] /home/oracle/script.sh 2> /tmp/crontab_script_log.txt 2>&1
Poznámka :Nahraďte [* * * * *] správnými časy provedení pro váš případ.
Poté můžete zkontrolovat /tmp/crontab_script_log.txt pro výstup spuštění. Pokud některé proměnné nejsou definovány nebo pokud skript obsahuje jiné chyby, výstup usnadní nalezení příčiny problému.