GNU/Linux >> Znalost Linux >  >> Linux

Proč moje úloha cron.d za minutu neběží?

Při přidávání konfigurace cronu v /etc/cron.d/ nebo v /etc/crontab musíte přidat uživatelské jméno, ve kterém se má příkaz spustit, ve vašem příkladu

* * * * * root /bin/touch /home/me/ding_dong

A jen nápověda ode mě:nemusíte začít spouštět ls -ltr znovu a znovu, stačí použít watch -n 5 "ls -ltr" a spustí příkaz každých 5 sekund (nebo jakoukoli jinou hodnotu nahrazením 5 tím, co chcete).


Chcete-li vytvořit nový cron úlohu, měli byste spustit crontab -e jako uživatel, kterému chcete úlohu spustit. Poté přidejte příslušný řádek do zobrazeného okna editoru:

* * * * * /bin/touch /home/me/ding_dong

Způsob, jakým to děláte, vyžaduje jiný formát a stejně to opravdu není dobrý nápad. Crontabs v /etc/cron.d mají mírně odlišný formát, vyžadují pro spuštění uživatelské jméno. Například:

* * * * * USERNAME /bin/touch /home/me/ding_dong

Dobrým trikem (jak navrhuje @VogonPoetLaureate) je zachytit standardní chybu vašich úloh cron, což jim může pomoci odladit. Například:

* * * * * /bin/touch /home/me/ding_dong 2>/tmp/error

Možná chyba je zde jak jednořádkový soubor je vytvořen. Z dokumentace Ubuntu:

...řádek má pět polí s časem a datem, za nimiž následuje příkaz a za ním znak nového řádku .

Například tento způsob vytvoření nefunguje:

printf "* * * * * /bin/touch /home/me/ding_dong" > /etc/cron.d/ding_dong

Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Proč /bin/sh ukazuje na /bin/dash a ne /bin/bash?

  3. Jak spustit úlohu cron uvnitř kontejneru dockeru

  1. Kdy mám použít /dev/shm/ a kdy /tmp/?

  2. Kdy musím použít #!/bin/bash a kdy #!/bin/sh?

  3. Rozdíl mezi /bin a /usr/bin

  1. /usr/bin Vs /usr/local/bin Na Linuxu?

  2. Proč jsou < nebo > vyžadovány pro použití /dev/tcp

  3. Mohu spouštět úlohu cronu častěji než každou minutu?