Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: cvp 16 Dubna 2020, 22:20:02
-
Ahojte,
potřeboval bych pomoci s triviálním souborem v bash, který chci spouštět přes crontab -e. Nyní nefunguje. Žádné pročištění či vytvoření kopie souboru ve složce to nevytvoří a nevím proč. Použil jsem i na soubor chmod +x a stejně nic.
crontab -e
# m h dom mon dow command
14 22 * * * sh /home/pi/clean.sh
Soubor clean.sh obsahuje:
#!/bin/bash
rm -f /home/pi/tmp/*
sleep 1
cp /home/pi/meteotux/meteotux_pi /home/pi/tmp/meteotux_pi
sleep 1
chmod +x /home/pi/tmp/meteotux_pi
Pomůžete, čím to může být? Hrozně moc všem děkuji.
-
Na první pohled tam chybu nevidím a při otestování ve virtuálním počítači (s jiným jménem uživatele a jiným časem spuštění) mi to funguje, jak má. Zkontroluj následující věci:
- Opravdu ten skript chceš spouštět každý den ve 22:14? (Nechtěl jsi to třeba ve 14:22?)
- Skript spouštíš příkazem „sh“, ale v něm deklaruješ, že se má spouštět pomocí bashe. V tvém případě to náhodou nevadí, ale nauč se pečlivě rozlišovat mezi „sh“ a „bash“ — jsou to dva různé interprety a v detailech se liší. Správně tam má být „bash /home/pi/clean.sh“, ale pokud jsi nastavil právo „u+x“, mělo by stačit i jen „/home/pi/clean.sh“.
- Spouštíš „crontab -e“ jako uživatel „pi“? Pokud to spustíš jako jiný uživatel (např. přes sudo), nebude to fungovat.
- Zkus do terminálu z toho skriptu zkopírovat jeden příkaz za druhým a vykonat je přesně tak, jak se mají vykonat, zda nenarazíš na nějaký nečekaný problém (třeba chybná přístupová práva).
- Zkontroluj, zda ti běží démon crond, který ty úlohy spouští: „systemctl status cron.service“
Pokud nic z toho nezabere, můžeš ještě zkusit, zda nenajdeš nějaké chybové hlášení v systémovém logu (po spuštění úlohy):
fgrep cron /var/log/syslog
-
Podívej se do syslogu proč úloha neproběhla. Orientuj se dle zadaného času (úlohy).