GNU/Linux >> Znalost Linux >  >> Linux

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

Otázka: Jaký je důvod, proč se moje úloha cron nespustí, když ve své úloze cron použiji procento „%“. Jak tento problém vyřešit?

Odpověď: „%“ je nový specifikátor řádku v příkazu cron. Když tedy použijete %, bude to interpretováno jako nový řádek v úloze cron. Pojďme se podívat, jak tento problém vyřešit, a použít % v úloze cron.

Definice problému s příkladem:„%“ v úloze cron (neúspěšná úloha cron)

* * * * * date +"%d" >> /tmp/non-working-ex1.txt

 
Pro účely testování všechna pole ve výše uvedeném příkladu crontab obsahují *. To provede zadaný cronjob každou minutu.
 
Chcete-li porozumět konfiguraci crontab, přečtěte si náš dřívější článek, který obsahuje 15 úžasných příkladů úloh cron.
 
Pokud máte přístup k syslog, budete mít podobný řádek jako následující.

Jun 20 08:31:01 ubuntu-laptop /USR/SBIN/CRON[6752]: (ramesh) CMD (date +")

 
V položce syslog pro tento konkrétní příklad je příkaz zobrazen pouze jako:(datum +”) . V ideálním případě by to mělo být zobrazeno jako:datum +”%d” . To znamená, že procento je analyzováno jako speciální symbol v cronu. tj. ukončí příkaz přesně v % věku.

Řešení s příkladem:Vyřešte použití „%“ v úloze cron.

Tento problém můžete vyřešit pomocí následujících dvou metod. Toto řešení by mělo vyřešit problém na všech variantách Unix / Linux, včetně Ubuntu, Debian, Fedora, RedHat, CentOS, AIX atd.,

Metoda 1:Escapování procenta pomocí \

Procento můžete ukončit pomocí zpětného lomítka a zajistit, aby to fungovalo jako normální úloha.

$ crontab -l
* * * * * date +"\%M" > /tmp/working-ex1.txt

 
Poznámka: Toto „\“ nebude vidět příkazem date ani jiným příkazem, který vyvoláte. \ má uniknout speciálnímu chování procent v cronu.

Metoda 2:Použijte skript Shell

Vytvořte skript shellu pomocí příkazu procent a naplánujte skript shellu jako úlohu cron.

$ cat /bin/date.sh
date +"%d"

$ crontab -l
* * * * * /bin/sh /bin/date.sh > /tmp/working-ex2.txt

V další minutě budete mít výstup provedeného příkazu v /tmp/working-ex2.txt
 
Nyní budete mít v syslogu následující řádek, který úspěšně provedl příkaz.

Jun 20 08:36:01 ubuntu-laptop /USR/SBIN/CRON[6962]: (ramesh) CMD (/bin/sh /bin/date.sh >> /tmp/working-ex2.txt)

 
Poznámka: Nezapomeňte odstranit tyto testovací záznamy cronu, protože se spustí každou minutu.
 
Pokud jste měli s crontabem nějaký jiný problém, dejte nám o něm vědět v sekci komentářů.


Linux
  1. Použití at pro jednorázové úlohy cron v Linuxu

  2. Problémy s nefunkční klávesnicí při spouštění?

  3. Správa duplicitní úlohy Cron při spouštění skriptů

  1. Odstraňte soubory protokolu pomocí úlohy cron

  2. Jak zobrazit aktuálně spuštěnou úlohu cronu?

  3. příkaz nebyl nalezen při použití sudo

  1. Ubuntu – Crontab nefunguje?

  2. SSH Agent Forwarding nefunguje ani při použití `ssh -A`

  3. Proč můj crontab nefunguje a jak jej mohu odstranit?