GNU/Linux >> Znalost Linux >  >> Linux

Jak provést „datum“ uvnitř úlohy Cron Tab?

Chci vytvořit soubor protokolu pro skript cron, který má v názvu souboru protokolu aktuální hodinu. Toto je příkaz, který jsem se pokusil použít:

0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log

Bohužel se mi při spuštění zobrazí tato zpráva:

/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file

Pokusil jsem se uniknout date rozdělit různými způsoby, ale bez velkého štěstí. Je možné to provést in-line v souboru crontab nebo k tomu musím vytvořit skript shellu?

Přijatá odpověď:

Krátká odpověď:

Escape % jako % :

0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log

Dlouhá odpověď:

Chybová zpráva naznačuje, že shell, který provádí váš příkaz, nevidí druhý znak zpětného zaškrtnutí:

/bin/sh: -c: line 0: unexpected EOF while looking for matching '`'

To je také potvrzeno druhou chybovou zprávou, kterou jste obdrželi, když jste zkusili jednu z dalších odpovědí:

/bin/sh: -c: line 0: unexpected EOF while looking for matching ')'

Manuální stránka crontab potvrzuje, že příkaz je přečten pouze do prvního neescapovaného % znak:

Pole „šesté“ (zbytek řádku) specifikuje příkaz, který se má
spustit. Celá příkazová část řádku až po nový řádek nebo % znak, bude proveden /bin/sh nebo pomocí shellu specifikovaného v
SHELL proměnná cronfile. Znaménka procenta (% ) ve příkaz, pokud není ukončen zpětným lomítkem ( ), bude změněn na znaky nového řádku a všechna data po prvním % bude odesláno
příkazu jako standardní vstup.


Linux
  1. Jak nastavit úlohu Cron

  2. Jak dát cronovi pokyn, aby provedl úlohu každý druhý týden?

  3. Jak mohu programově vytvořit novou úlohu cron?

  1. Jak nastavit úlohu cron, aby každou hodinu spouštěla ​​spustitelný soubor?

  2. Jak cron interně plánuje úlohy?

  3. Předávání parametrů $_GET do úlohy cron

  1. Jak nastavit úlohu Cron v TrueNAS

  2. Jak spustit příkaz uvnitř spuštěného kontejneru Systemd?

  3. Jak spustit úlohu cron uvnitř kontejneru dockeru