Fórum Root.cz
Hlavní témata => Server => Téma založeno: googler2 28. 04. 2023, 13:12:44
-
Zdravim, na debian bullseye mam problem naplanovat spustenie sh scriptu, ktory ma nasledne spustit py script.
Cez sudo crontab -e som skusal:
25 3 * * * bash $HOME/path/to/script/script.sh
@reboot bash $HOME/path/to/script/script.sh
Ani jeden zo scriptov sa nespustil. Skusal som aj absolutnu cestu /bin/bash aj /usr/bin/bash, ale nejde nic. Ked scripty pustim manualne cez konzolu, tak to funguje. Reboot script som skusal spustit aj cez rc.local alebo cez init.d a dokonca aj ako systemd service. Service sa sice automaticky po boote nezapne - neviem preco (samozrejme je enabled), ale ked ju spustim po boote manualne cez argument start, tak sa spusti bez problemov.
Samozrejme som na sh scripty uplatnil:
sudo chmod +x a v stave nudze som skusil aj sudo chmod 777 , ale nepomohlo.
Obsah reboot scriptu:
#!/bin/bash
cd /path/to/script/directory
/usr/bin/python3 script.py &>/dev/null &
Vie mi niekto kde moze byt problem a ako vyriesit autonaticke spustanie scriptov? V samotnych scriptoch pricina asi nebude pretoze pri manualnom spusteni funguju.
-
V prvom rade mas enabled a spustenu sluzbu ktora robi cron? crond/anacron atd.Ak nie, tak jasne ze sa ti skripty nespustia.
V druhom rade si si isty, ze tvoj cron vie co znamena premenna $HOME? Asi ani nie.
Za dalsie naco tam mas bash? Ved pustaj rovno ten skript.
/home/userko/blabla.sh
-
nerozpisoval som to vsetko v prvom poste, aby nebol dlhy, ale:
- ano podla statusu systemctl je cron active
- skusal som aj absolutnu cestu k scriptu tzn. /home/user/blabla.... V kazdom pripade podla manualu by moj cron mal poznat $HOME aj @reboot
- skusal som viacero alternativ a jedna z nich bola aj bez bash, len cesta na script.
Skor mam pocit, ze problem bude niekde "hlbsie" lebo ako pisem nejde to ani cez service, rc.local init.d ani cez cron
-
A v syslogu něco je? Takhle to normálně vypadá:
2023-04-28 10:00:01 CRON[169675]: (root) CMD (můj_skript)
Když uděláš jednoduchý shellový wrapper nebo tam napíšeš
* * * * * touch /tmp/alive
tak se to vykoná?
Vidí cron crontab? Když uděláš crontab -e nebo crontab -l, tak se objeví v syslogu tohle:
2023-04-28 12:13:23 crontab[249677]: (root) LIST (root)
2023-04-28 12:13:47 crontab[249898]: (root) BEGIN EDIT (root)
2023-04-28 12:13:48 crontab[249898]: (root) REPLACE (root)
2023-04-28 12:13:48 crontab[249898]: (root) END EDIT (root)
Service co nejde, co řekne systemctl status jméno_služby a journalctl -u jméno služby? Je služba oneshot, simple, forking?
-
Když napíšete do cronu:
* * * * * bash $HOME/path/to/script/script.sh >> /var/log/mujLog 2>&1
co bude přibývat každou minutu do souboru /var/log/mujLog ?