Wpis z mikrobloga

Chłopacy. Mam problem, który męczy mnie od rana. Mianowicie jest sobie taki skrypt https://gist.github.com/indywidualny/f46e7920973fbd8255a235018710ff12 i jeśli odpalam go ręcznie (./crontest.sh >> output.log) wszystko jest ok i na wyjściu mam po kolei pierwszą i ostatnią linijkę każdego pliku, który znajduje się na liście tychże. Jeśli natomiast odpala to cron (* * * * * /home/user/crontest.sh >> /home/user/output.log) to te dwie zmienne nie mają wartości i dostaję wyłącznie puste linijki jako wynik. Wszelkie możliwe rozwiązania, które przyszły mi do głowy już sprawdziłem (PATH, * * * * * bash -c "komenda", odpalać przez exec...) i nic nie działa. Co zrobić żeby ten skrypt dawał prawidłowe wyniki również z poziomu crona? W sieci zabrakło już odpowiedzi, które mogą mnie naprowadzić. #linux #bash (no i #programowanie, bo bash).
  • 10
  • Odpowiedz
@beret20022: Oba nic nie dały. Nie wspomniałem o tym. Generalnie problem jest w tym, że działając poprzez crona skrypt nie może czytać z wyjścia subshella $(...). To jest jakieś ograniczenie crona i to nie jest nic nadzwyczajnego. Chcę jednak to osiągnąć i szukam obejścia.

@mgmuras: Jako mój crontab. Nie działa. Jako root crontab również, bo żadna różnica. Działa jedynie jak odpalę z palca. Wyżej wspomniałem o ograniczeniu crona, które znalazłem
  • Odpowiedz
@indywidualny:
klepnij crontab -e
i tam przerób wpis na coś takiego:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * * /bin/bash ~/crontest.sh
  • Odpowiedz
@indywidualny:
* * * * * cd /home/user/crontest.sh && /home/user/crontest.sh >> /home/user/output.log
albo
* * * * * user cd /home/user/crontest.sh && /home/user/crontest.sh >> /home/user/output.log
  • Odpowiedz
@ufik78: niestety nic z tego. Nadal te zmienne są puste. A wszystko poza tym działa od samego poczatku xD napiszę to w pythonie jutro, bo najwyrazniej strata czasu. Bash script tego mi nie załatwia.
  • Odpowiedz
@kici666: Sprawdziłem. Ten head kompletnie nic nie zwraca. Wywaliłem ten subshell $(...) i przypisanie, wiec powinno to iść bezpośrednio na plik, do którego wyjście przekierowałem z całego skryptu. Nie idzie. Ano niezłe jajca ( ͡° ʖ̯ ͡°) Oczywiście jak zrobię z palca ./script.sh to wszystko jest ok. Przez tego crona wrzodów dostanę.
  • Odpowiedz