Strona 1 z 1

Obsługa harmonogramu zadań

: 18 gru 2010, 10:33
autor: SlawekPetrelli
Witam, dopiero się uczę i wiem że istnieje taka możliwość aby zapanowywać zadania i wiem że są polecenia at i crontab ale nie wiem jak ich używać czy mógł mi ktoś opisać?
I podać przykłady np aby za 2 minuty wykonało polecenie "date" i w przypadku crontab aby co 2 minuty wykonywało te same polecenie. Również proszę o odpowiedź jak skończyć dane polecenie( tzn aby harmonogram nie wykonywał danej operacji).

Dziękuje za pomoc

Odp: Obsługa harmonogramu zadań

: 18 gru 2010, 18:21
autor: Pan Świnka
wpisz crontab w google a link z wikipedii prawde ci powie

tak samo dla ata,

generalnie te polecenia są mega proste i domyślne

można wiedziec po co ci uruchamiac cos co dwie minuty albo za dwie minuty ?

Odp: Obsługa harmonogramu zadań

: 19 gru 2010, 15:25
autor: dk75
opisy i man opisami ale jak przyjdzie co do czego szczegóły zabijają

Po pierwsze nie zadziała ci nic co wypisuje swoje wyniki do terminala gdyż... uruchamia się to bez terminala więc nic nie zobaczysz.
Więc albo to ma uruchomić jakiś program który sobie działa w tle i nie musisz go widzieć albo uruchamiasz to w screen i wtedy możesz się połączyć z sesją screen później i zobaczyć jak twój program/skrypt działa (ale musi ciągle działać) albo przekierowujesz wyniki do pliku i później oglądasz plik albo wyświetlasz powiadomienia w XWindows.

Uf, ale długie zdanie.

Drugi największy problem to ścieżki do plików wykonywalnych.
O ile w CRONTAB można to sobie dopisać do pliku konfiguracji i to zostaje to w AT musisz to dopisywać albo do każdego zadania albo podawać ścieżki pełne do komend.
Podobno AT przejmuje zmienną PATH ze środowiska w którym się go uruchamia ale mi to sprawiało problemy.

Kolejny drobny problem, tym razem z CRONTAB jest taki, że plik konfiguracyjny musi mieć pustą linię na końcu gdyż inaczej nie wykona się nic.

Problem z AT jest taki, że gdy nie podajesz skryptu do wykonania tylko komendy to musisz otworzyć edytor a potem aby z niego wyjść i zapisać zadanie trzeba wcisnąć <CTRL>D - też trochę się tego naszukałem.

Kolejny problem, z CRONTAB jest taki, że jak coś chcesz zrobić co np. miesiąc to musisz ustawić również wszystkie inne zmienne bo inaczej będzie się to robiło tego dnia co 1 minutę przez cały dzień - można się nieźle wkąpać.

Kolejny problem z AT jest taki, że nie przejmuje zmiennej DISPLAY od systemu więc trzeba mu ją podać aby wyświetlić cokolwiek w XWindows (np. zenity)


A teraz przykłady.

AT (robi zadania jednorazowe) - za 2 minuty

Kod: Zaznacz cały

at now + 2 minute
otworzy to edytor zadania gdzie wpisujesz

Kod: Zaznacz cały

env DISPLAY=":0.0" /usr/bin/zenity --info --text="$(/bin/date)"
i naciskasz <CTRL>D

Jeśli masz skrypt shell który chcesz uruchomić to

Kod: Zaznacz cały

at now + 2 minute -f /pełna/ścieżka/nazwa-skryptu.sh
za 3 dni o godzinie 12:00

Kod: Zaznacz cały

at 12:00 + 3 day -f /pełna/ścieżka/nazwa-skryptu.sh


CRONTAB (robi zadania w określonym czasie do ich wykasowania)

Kod: Zaznacz cały

crontab -e
zadania dla twojego użytkownika - nie zrobisz nic co potrzebuje uprawnień administratora
pokaże się edytor z plikiem konfiguracji - dopisujesz na końcu

Kod: Zaznacz cały

*/2 * * * * /usr/bin/zenity --info --text="$(/bin/date)"   #co dwie minuty
0 12 * * * /pełna/ścieżka/nazwa-skryptu.sh   #codziennie w południe
0 12 */3 1 * /pełna/ścieżka/nazwa-skryptu.sh   #w styczniu, co 3 dni w południe
@monthly /pełna/ścieżka/nazwa-skryptu.sh   #raz w miesiącu
0 */1 * * 7 /pełna/ścieżka/nazwa-skryptu.sh   #w każdą niedzielę o pełnej godzinie



Jak chcesz zadania z uprawnieniami ROOT to uruchamiasz edycję z SUDO

Kod: Zaznacz cały

sudo at now + 2 minute

Kod: Zaznacz cały

sudo crontab -e

Odp: Obsługa harmonogramu zadań

: 19 gru 2010, 15:47
autor: SlawekPetrelli
@up

Dziękuje bardzo za pomoc, przydało się

Odp: Obsługa harmonogramu zadań

: 27 gru 2010, 14:21
autor: kastyk
Mój problem również dotyczy (chyba) crona, podłączę się więc tutaj.

Chodzi mi o uruchamianie programów użytkownika przy starcie systemu. Wiem, że wystarczy odpowiedni wpis do mego crontaba. Używając polecenia

Kod: Zaznacz cały

crontab -e
jako zwykły użytkownik dodałem tam taki wpis:

Kod: Zaznacz cały

sentex@optiplex:~$ crontab -l
# m h  dom mon dow   command

# @reboot /usr/bin/screen -d -m rtorrent
# @reboot /usr/bin/screen -d -m irssi
@reboot /home/sentex/on_boot.sh
Zawartość mego skryptu (ma on oczywiście prawa do wykonywania - 744)

Kod: Zaznacz cały

sentex@optiplex:~$ cat /home/sentex/on_boot.sh
#!/bin/bash

sleep 5s && screen -d -m -S irssi irssi
sleep 10s && screen -d -m -S rtorrent rtorrent
Moje zakomentowane wpisy w crontabie to próby uruchamiania tych programów bez skryptu, prosto z crontaba; oba programy się uruchamiały. Po co więc skrypt?

Problem leży w kodowaniu znaków w irssi. Uruchamiany z kolsoli, ma poprawne, ustawione w konfiguracji kodowanie UTF-8. Po uruchomieniu z crontaba przy starcie systemu, zarówno za pomocą skryptu, jak i bezpośrednio, przy wpisywaniu polskich znaków widzę znaki zapytania.

Przez użycie polecenia "sleep" próbowałem opóźnić uruchamianie programów, myśląc że uruchamiały się zbyt wcześnie, przed ustawieniem locales systemu. Jak widać, nie pomogło.

Proszę o pomoc.

Odp: Obsługa harmonogramu zadań

: 27 gru 2010, 15:03
autor: jacekalex
A ja mam jedno pytanie:
Znacie jakiś program do atd/cron - w gtk/qt - do klikania, skuteczniejszy od apletu gnome-schedule?

Bo ten ostatni jest teoretycznie fajny, ale nigdy nie zauważyłem, żeby był znacząco skuteczny :(

Natomiast tłumaczyć rodzince - co to webmin/usermin ...., i jak to obsługiwać....

Pozdrawiam
:craz:

Odp: Obsługa harmonogramu zadań

: 27 gru 2010, 15:18
autor: kastyk
kastyk pisze:(...)Problem leży w kodowaniu znaków w irssi. Uruchamiany z kolsoli, ma poprawne, ustawione w konfiguracji kodowanie UTF-8. Po uruchomieniu z crontaba przy starcie systemu, zarówno za pomocą skryptu, jak i bezpośrednio, przy wpisywaniu polskich znaków widzę znaki zapytania.(...)
Odpowiem sam sobie, bo mam już rozwiązanie problemu :)

Wystarczyło dodać do pliku /etc/environment definicję języka. Obecnie zawartość pliku to:

Kod: Zaznacz cały

sentex@optiplex:~$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
LANG=pl_PL.UTF-8

I wszystko jest OK :)