Obsługa harmonogramu zadań

Tutaj można zadać pytanie, jeśli Linuksa widzi się pierwszy raz w życiu ;)
Awatar użytkownika
SlawekPetrelli
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 18 gru 2010, 10:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Obsługa harmonogramu zadań

Post 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
Just Linux
Awatar użytkownika
Pan Świnka
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 122
Rejestracja: 17 lis 2010, 11:01
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Obsługa harmonogramu zadań

Post 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 ?
poszukajcie odpowiedzi w /dev/null ;-)
Awatar użytkownika
dk75
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1142
Rejestracja: 07 mar 2007, 22:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Obsługa harmonogramu zadań

Post 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
Linux Mint Debian Edition x86_64/2.6.39, Conky 1.8.0, Xorg 7.6/1.10.4 - GNOME 2.30.2, nVidia 285.03
Lenovo T61p, HITACHI HTS722010K9SA00 100GB, ST9250827AS 250GB
http://linuxcounter.net/user/483055.html
Awatar użytkownika
SlawekPetrelli
Piegowaty Guziec
Piegowaty Guziec
Posty: 11
Rejestracja: 18 gru 2010, 10:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: Obsługa harmonogramu zadań

Post autor: SlawekPetrelli »

@up

Dziękuje bardzo za pomoc, przydało się
Just Linux
Awatar użytkownika
kastyk
Sędziwy Jeż
Sędziwy Jeż
Posty: 42
Rejestracja: 20 mar 2008, 14:09
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: Brak
Architektura: x86

Odp: Obsługa harmonogramu zadań

Post 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.
Janusz Kastyk
Dodaj [SOLVED] do *tematu* wiadomości, gdy twój problem zostanie rozwiązany. To naprawdę pomaga innym!
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Odp: Obsługa harmonogramu zadań

Post 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:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
Awatar użytkownika
kastyk
Sędziwy Jeż
Sędziwy Jeż
Posty: 42
Rejestracja: 20 mar 2008, 14:09
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: Brak
Architektura: x86

Odp: Obsługa harmonogramu zadań

Post 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 :)
Janusz Kastyk
Dodaj [SOLVED] do *tematu* wiadomości, gdy twój problem zostanie rozwiązany. To naprawdę pomaga innym!
ODPOWIEDZ

Wróć do „Przedszkole Linuksa”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 20 gości