Polecenie at używane jest do jednorazowego wykonania określonego programu czy skryptu w przyszłości w zadanym czasie. Wszystkie zadania do wykonania gromadzone są w katalogu /var/spool/at i wykonywane przez demona atd w określonym czasie. Każde zadanie zaplanowane do wykonania będzie miało założony plik, który zawiera wszelkie zmienne niezbędne do prawidłowego wykonania zadania a także nazwę komendy lub skryptu do uruchomienia. Nie ma potrzeby restartowania demona atd po dodaniu zadania do wykonania. Wiele jest sposobów na określenie dla at czasu wykonania zadania:
at 1:15am – wykonuje zadanie o 1:15 w nocy
at noon – wykonuje zadanie w południe
at 23:45 – wykonuje zadanie o 11:45pm
at midnight – wykonuje zadanie o północy
at 17:05 tomorrow – wykonuje zadanie następnego dnia o 17:05
at now + 5 hours – wykonuje zadanie za 5 godzin, zamiast godzin możemy wskazać minuty, dni czy tygodnie
at 3:00 5/15/15 – wykonuje zadanie o 3:00 w nocy dnia 2015-05-15
Jako opcję komendy at można wskazać -f, który oznacza plik do wykonania w zadanym czasie.
Przykład poniższy uruchamia za 2 godziny od aktualnego czasu skrypt użytkownika user100 – script1.sh – z poziomu jego katalogu domowego:
1 |
$ at -f ~/script1.sh now + 2 hours |
At jest domyślnie zainstalowane w RHEL ale możemy to sprawdzić dodatkowo:
1 2 3 |
# yum list installed at at.x86_64 3.1.13-22.el7@base |
Jeżeli pakietu nie ma możemy go zainstalować w systemie:
1 |
# yum –y install at |
Ćwiczenie 1. Zamów, wyświetl i usuń zadanie do wykonania.
Uruchom komendę at i podaj poprawny czas i datę wykonania zadania. Naciśnij Ctrl+d w linii poleceń at>.
1 2 3 4 5 |
# at 11:30pm 6/30/15 at> find / –name core –exec rm {} \; & /tmp/core.out at> <EOT> job 5 at Tue Jun 30 23:30:00 2015 The system has assigned ID 5 to this at job. |
Wylistuj plik z zadaniem dla at utworzony w katalogu /var/spool/at directory:
1 2 |
# ll /var/spool/at -rwx------. 1 root root 2862 Dec 4 13:49 a00005016d1f72 |
Wyświetl zawartość tego pliku komendą cat lub at. Określ ID zadania korzystając z at.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# cat /var/spool/at/a00005016d1f72 # at –c 5 #!/bin/sh # atrun uid=0 gid=0 # mail root 0 umask 22 XDG_SESSION_ID=2383; export XDG_SESSION_ID HOSTNAME=host1.example.com; export HOSTNAME SELINUX_ROLE_REQUESTED=; export SELINUX_ROLE_REQUESTED SHELL=/bin/bash; export SHELL HISTSIZE=1000; export HISTSIZE SSH_CLIENT=192.168.0.13\ 64816\ 22; export SSH_CLIENT SELINUX_USE_CURRENT_RANGE=; export SELINUX_USE_CURRENT_RANGE SSH_TTY=/dev/pts/4; export SSH_TTY USER=root; export USER …… . . find / -name core -exec rm {} \; & /tmp/core.out marcinDELIMITER0c40a7df |
Wylistuj zadanie do wykonania komendą at lub atq:
1 2 3 |
# at –l # atq 5 Tue Jun 30 23:30:00 2015 a root |
Finalnie usuń zadanie komendą at lub atrm:
1 2 |
# at –d 5 # atrm 5 |
To powinno usunąć plik z zadaniem z katalogu /var/spool/at
. Można potwierdzić usunięcie pliku także komendą atq.