GNU/Linux >> Znalost Linux >  >> Linux

Cron Script se nespouští podle očekávání z crontab – Odstraňování problémů

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..“

TIP :Chcete-li lépe odstraňovat problémy se spuštěním záznamu crontab, můžete jej změnit tak, aby protokoloval výstup do souboru, například:

[* * * * *] /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.


Linux
  1. Příkaz Rm ve skriptu Bash nefunguje s proměnnou?

  2. Jak spustit skript Sh ze zástupce na ploše?

  3. Problém Crontab:Cron Job nefunguje při použití procent

  1. Spusťte bash skript z adresy URL

  2. atomic create soubor, pokud neexistuje z bash skriptu

  3. Proměnná prostředí TERM není nastavena

  1. matlab spustí skript z příkazové řádky linuxu

  2. cron občas neběží

  3. Který den/čas začíná týdenní cron?