Zadanie Cron uruchamia skrypt Pythona, ale nie otrzymano danych wyjściowych

0

Mam program w języku Python, który kopiuje zawartość urządzeń USB podłączonych do mojego komputera, w tym przypadku jest to tablet z Androidem. Skrypt używa pyudevdo wykrywania urządzeń, a następnie GVfsdo ich montowania.

Chciałem uruchomić skrypt i uruchomić go w tle, więc nie muszę go uruchamiać za każdym razem. Próbowałem go /etc/init/uruchomić, ale działanie GVfsjako root powoduje problemy, więc postanowiłem uruchomić skrypt za pośrednictwem cron. Mam ustawiony, aby rozpocząć o określonej godzinie, jeśli to zrobię ps -auxi mogę zobaczyć proces na liście, jednak jeśli podłączę urządzenie, nic się nie stanie, pliki nie zostaną skopiowane.

Jeśli uruchomię skrypt ręcznie, działa on bez żadnych problemów.

To właśnie mam w swoim crontabie.

45 10 * * * cyberbemon /home/cyberbemon/Development/python/usb-dumper-1.0/build/lib.linux-x86_64-2.7/usb-dumper/./usb-dumper.py `

Python używa tej env #!/usr/bin/env python

Próbowałem zalogować dane wyjściowe programów do pliku, jak to cyberbemon /home/cyberbemon/Development/python/usb-dumper-1.0/build/lib.linux-x86_64-2.7/usb-dumper/./usb-dumper.py > /home/cyberbemon/usb-dumped/log.txt 2>&1

Ale ten plik jest pusty.

Mam źródło programu stąd: https://codingteam.net/project/usb-dumper/download

cyberbemon
źródło
Pozbądź się 2>&1i zobacz, co się stanie.
Ed Manet

Odpowiedzi:

0
  • Jeżeli edytowałeś Yr crontab użytkownika, a następnie stłumić / usunąć nazwę użytkownika cyberbemon, który poprzedza długą drogę prowadzącą do skryptu yr. Nie potrzebujesz tam nazwy użytkownika.

  • Jeśli się nie mylę, na początku określasz środowisko użytkownika. #!Nie tylko !. Może to być po prostu literówka w poście lub zapomniałeś uciec przed znakiem funta wewnątrz bloku kodu, pisząc swój post (tak jak to \#!). Powinien więc przeczytać:

    #! / usr / bin / env python

  • Może to tylko ja, ale nie znam ścieżek, które zawierają /./gdzieś pośrodku, jak w:

/home/cyberbemon/Development/python/usb-dumper-1.0/build/lib.linux-x86_64-2.7/usb-dumper/. /usb-dumper.py

... bez dodanych spacji. Zwykle w większości typów powłok .jest:

  • synonim cmd, sourcegdy jest używany samodzielnie przed nazwą pliku.

  • oznacza ukryty plik, gdy poprzedza nazwę pliku.

  • jest używany w wyrażeniu regularnym w celu dopasowania jednego znaku

  • wskazuje bieżący katalog roboczy, gdy jest używany w ścieżkach, jak na przykład w

    $ cd $ HOME / Desktop; pwd

    / home / cyberbemon / Desktop

    $ cp $ HOME / .bashrc.

Polecam przejście do katalogu, w którym jest przechowywany skrypt Pythona, a następnie w terminalu uruchom polecenie pwd. Otrzymasz pełną ścieżkę do skryptu yr.

Cbhihe
źródło