Chcę zaplanować uruchamianie zadania regularnie i słyszałem, że Cron jest na to sposób.
Jak dodać zadania Cron w Ubuntu?
Chcę zaplanować uruchamianie zadania regularnie i słyszałem, że Cron jest na to sposób.
Jak dodać zadania Cron w Ubuntu?
Odpowiedzi:
Umieścić skrypt w jednym z tych folderów: /etc/cron.daily
, /etc/cron.hourly
, /etc/cron.monthly
lub /etc/cron.weekly
.
Jeśli to ci nie wystarczy, możesz dodać bardziej szczegółowe zadania, np. Dwa razy w miesiącu lub co 5 minut. Przejdź do terminala i wpisz:
crontab -e
Spowoduje to otwarcie twojego osobistego pliku crontab (plik konfiguracyjny crona). Pierwszy wiersz w tym pliku wyjaśnia wszystko! W każdym wierszu możesz zdefiniować jedno polecenie do uruchomienia i jego harmonogram, a format jest dość prosty, gdy się go zawiesi. Struktura jest:
minute hour day-of-month month day-of-week command
Dla wszystkich liczb, których możesz użyć, np. 5,34,55
W polu minut będzie oznaczać bieg o 5, 34 i 55 po dowolnej godzinie.
Możesz także użyć interwałów. Są one zdefiniowane następująco: */20
. Ten przykład oznacza co 20, więc w kolumnie minut jest to równoważne 0,20,40
.
Aby uruchomić polecenie w każdy poniedziałek o 5:30 po południu:
30 17 * * 1 /path/to/command
lub co 15 minut
*/15 * * * * /path/to/command
Pamiętaj, że dzień tygodnia rozpoczyna się w przedziale od 0 do 6, gdzie 0 to niedziela.
Możesz przeczytać więcej tutaj .
*/15 * * * * /path/to/command
możesz zrobić @reboot /path/to/command
, aby wykonać coś podczas uruchamiania.
Jeśli zadanie, które chcesz uruchomić, może być uruchomione z tymi samymi uprawnieniami, co twój użytkownik, polecam użycie crontab użytkownika, który możesz edytować, uruchamiając EDITOR="gedit" crontab -e
(który użyje gedit do edycji pliku crontab) lub po prostu crontab -e
(który będzie używał domyślnego edytora) w terminalu.
Jeśli chcesz na przykład uruchamiać coś co 10 minut, dodajesz taką linię
*/10 * * * * /usr/bin/somedirectory/somecommand
i zapisz plik.
Możesz zobaczyć zawartość crontab użytkownika za pomocą crontab -l
.
Aby dodać zadanie crona działające jako root, możesz edytować crontab roota, uruchamiając sudo crontab -e
.
Najbardziej elastycznym sposobem jest użycie crontab systemowego, /etc/crontab
który można edytować tylko z uprawnieniami roota. W tym pliku użytkownik ma wykonać każdą komendę zgodnie ze specyfikacją, aby można było uruchamiać komendy jako użytkownik root (na wypadek, gdybyś potrzebował tego poziomu uprawnień) lub jakikolwiek inny użytkownik w systemie.
Na przykład, jeśli chcesz uruchamiać coś co 10 minut jako root, możesz dodać taką linię
*/10 * * * * root /usr/bin/somedirectory/somecommand
(zauważ dodanie użytkownika do linii)
Możesz zobaczyć zawartość systemowego pliku crontab za pomocą cat /etc/crontab
.
Więcej informacji: https://help.ubuntu.com/community/CronHowto
Jeśli wolisz to zrobić za pomocą GUI, możesz przejść do Centrum oprogramowania i zainstalować Zaplanowane zadania (lub uruchomić sudo apt-get install gnome-schedule
). Zapewni to potężny GUI do dodawania zadań CRON.
Pamiętaj, że jeśli użyjesz tej metody, zadania będą domyślnie wykonywane jako własny użytkownik, a nie jako root. Zazwyczaj jest to dobra rzecz.
Polecam KDE's Scheduler ( kde-config-cron
) . Dostęp do niego można uzyskać w Ustawieniach systemu w module Harmonogram zadań .
Zarządza Crontabs zarówno osobistymi, jak i systemowymi, a łatwość tworzenia granic czasowych bardzo mnie zaskoczyła (patrz zrzut ekranu poniżej). Myślę, że ta część jest naprawdę niedoceniana.
Harmonogram zadań KDE nie będzie działał w zwykłym systemie Ubuntu. Działa tylko w systemach KDE, takich jak KUbuntu. W systemie innym niż KDE wolisz używać harmonogramu gnome
$ sudo apt-get install gnome-schedule
Aplikacja ma zaplanowane zadania w Dash.
I can't install gnome schedule on Ubuntu 16.04
@ askubuntu.com/questions/785657/… . Istnieje pakiet do pobrania @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/… . Po prostu zagraj$ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
Chciałem ustawić zadanie Crona do uruchamiania przez skrypt bash, więc wykonanie skryptu dodałoby zadanie cron.
Zdałem sobie sprawę, że kiedy korzystasz z:
crontab -e
Następnie tworzy plik:
/var/spool/cron/crontabs/root
Gdzie root to nazwa użytkownika uruchamiającego komendę crontab. Opierając się na tym i przynajmniej w 14.04, możemy wykonać następujące polecenia bash, aby utworzyć nowe zadanie Cron:
echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root
Musimy również ustawić poprawną własność pliku:
chown root:root /var/spool/cron/crontabs/root
I ustaw odpowiednie uprawnienia:
chmod 600 /var/spool/cron/crontabs/root
Jeśli po uruchomieniu crontab -e
na liście znajdują się już zadania Cron, możesz dołączyć do listy za pomocą następującego polecenia:
echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root
Przykład uruchamiania skryptu test_cron.sh
przez crona co minutę na Ubuntu 18.04 za pomocą dowiązania symbolicznego:
test_cron.sh
plik:
#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log
Jeśli chcesz używać zmiennych skryptu w skrypcie, tak jak $USER
w ścieżkach, lepiej wpisać dokładną ścieżkę, bash nie pozna twoich zmiennych w czasie wykonywania.
myname
to nazwa użytkownika (część grupy root, nie jestem pewien, czy uprawnienia roota są konieczne).
Zezwalaj użytkownikom na ustawianie zadań cron, plik zostanie utworzony w razie potrzeby:
sudo nano /etc/cron.allow
root
myname
Ścieżka do skryptu to /home/myname/shell/test_cron.sh
Zmieniłem właściciela i uczyniłem go wykonywalnym:
sudo chown myname /home/myname/shell/test_cron.sh
chmod +x /home/myname/shell/test_cron.sh
Dodałem link symboliczny:
sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron
Zalogowany, gdy myname
dodałem nowe zadanie do wykonania test_cron
co minutę.
crontab -e
*/1 * * * * test_cron
Aby sprawdzić, czy polecenie na liście:
crontab -l
*/1 * * * * test_cron
Aby sprawdzić wykonanie
grep -i cron /var/log/syslog
Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)