Jak uruchomić aplikację GUI z crona?

18

Muszę uruchomić aplet Java z przeglądarki Firefox. Problem polega na tym, że muszę uruchomić Firefoksa z crona. Jeśli uruchomię z wiersza poleceń i działa dobrze, ale po umieszczeniu polecenia w cronie nie powiodło się:

*/1 * * * * firefox http://domain.com/iqms/packetloss/iqmspacket2.html
fadabi Nawi
źródło
1
Możesz użyć biblioteki java Selenium , jeśli potrzebujesz więcej funkcji niż tylko jej otwarcie.
Övünç Metin
Możesz także używać Selenium z pythonem, co jest łatwiejsze dla skryptów.
ESala

Odpowiedzi:

25

Cron działa w środowisku, które nie wie nic o menedżerze wyświetlania ( $DISPLAYnie jest ustawione). Twoje okno terminala, w którym testujesz, ma taki zestaw. Jeśli wypróbujesz to w „prawdziwym” terminalu lub przez SSH, zobaczysz, że się psuje.

Jeśli masz tylko jeden serwer X, po prostu określenie ekranu może działać:

* * * * *    DISPLAY=:0 firefox ...

Prawdopodobnie mógłbyś włożyć więcej wysiłku w :0ustalenie, pod jakim ekranem się znajduje, zamiast zakładać, że tak, ale to prawdopodobnie zadziała przez większość czasu.

Jeśli potrzebujesz tylko czegoś przeładować, spójrz na Tab Auto Reload lub podobne wtyczki Firefox.

Oli
źródło
Znalazłem tę odpowiedź, ale nadal nie uruchamia Firefoxa. Po kilku poszukiwaniach okazało się, że muszę działać jako prawidłowy użytkownik zamiast roota. * * * * * „DISPLAY =: 0,0 / usr / bin / firefox -new -window x.com/iqms/packetloss/iqmspacket2.html
fadabi Nawi
1
@fadabiNawi Łatwiejszym sposobem zarządzania byłoby zainstalowanie linii cron w crontabie właściwego użytkownika. Zaloguj się, jak chcesz, icrontab -e
Oli
7

Znalazłem tę odpowiedź, szukam dodatku do oli:

Po kilku poszukiwaniach okazało się, że muszę działać jako prawidłowy użytkownik zamiast roota.

* * * * * su fadabi -c "DISPLAY=:0.0 /usr/bin/firefox -new-window x.com/iqms/packetloss/iqmspacket2.html"; 

tq

fadabi Nawi
źródło
To pomogło, wielkie dzięki! Tylko uwaga: pełna ścieżka do Firefoksa jest obowiązkowa, nie zdawałem sobie z tego sprawy i nie działała
aexl