Ich habe gehört, Crontab ist eine gute Wahl, aber wie schreibe ich die Zeile und wo stelle ich sie auf den Server?
Ich habe gehört, Crontab ist eine gute Wahl, aber wie schreibe ich die Zeile und wo stelle ich sie auf den Server?
Antworten:
Hier ist ein gutes Tutorial darüber, was Crontab ist und wie man es unter Ubuntu verwendet. Ihre Crontab-Linie sieht ungefähr so aus:
00 00 * * * ruby path/to/your/script.rb
( 00 00
Zeigt Mitternacht an - 0 Minuten und 0 Stunden - und das *
s bedeutet jeden Tag eines jeden Monats.)
Syntax: mm hh dd mt wd Befehl mm Minute 0-59 hh Stunde 0-23 dd Tag des Monats 1-31 mt Monat 1-12 wd Wochentag 0-7 (Sonntag = 0 oder 7) Befehl: Was möchten Sie ausführen? Alle numerischen Werte können durch * ersetzt werden, was alle bedeutet
/etc/crontab
(unter Ubuntu) zulässig , aber wenn Sie ausführen crontab -e
, bearbeiten Sie eine benutzerspezifische Crontab, die diese Spalte nicht zulässt. IIRC Ubuntu rät vom /etc/crontab
manuellen Beenden ab, da es möglicherweise überschrieben wird. Siehe hier: stackoverflow.com/questions/8475694/…
sudo crotab -u root -e
von der Manpage
linux$ man -S 5 crontab
cron(8) examines cron entries once every minute.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
...
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
...
Es ist gut zu beachten, dass spezielle "Spitznamen" verwendet werden können (dokumentiert in der Manpage), insbesondere "@reboot", für das es keine Alternative zu Uhrzeit und Datum gibt.
# Run once after reboot.
@reboot /usr/local/sbin/run_only_once_after_reboot.sh
Sie können diesen Trick auch verwenden, um Ihren Cron-Job mehrmals pro Minute auszuführen.
# Run every minute at 0, 20, and 40 second intervals
* * * * * sleep 00; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 20; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 40; /usr/local/sbin/run_3times_per_minute.sh
Um einen Cron-Job hinzuzufügen, können Sie eines von drei Dingen ausführen:
Fügen Sie der Crontab eines Benutzers einen Befehl hinzu, wie oben gezeigt (und über die Crontab, Abschnitt 5, Manpage).
crontab -e -u <username>
crontab -e
EDITOR
Umgebungsvariablen
festlegenenv EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
Erstellen Sie ein Skript / Programm als Cron-Job und fügen Sie es den Anacron- /etc/cron.*ly
Verzeichnissen des Systems hinzu
chmod a+x /etc/cron.daily/script_runs_daily.sh
- mach es ausführbarman anacron
chmod a+x <file>
/etc/crontab
oder /etc/anacrontab
zu einem festgelegten Zeitpunkt ausgeführt/etc/anacrontab
und cron.hourly in/etc/cron.d/0hourly
Oder Sie können System-Crontables in erstellen /etc/cron.d
.
/etc/cron.d
müssen nicht ausführbar sein.someuser
wird und dessen Verwendung /bin/bash
als Shell erzwungen wird. File: /etc/cron.d/myapp-cron
# use /bin/bash to run commands, no matter what /etc/passwd says
SHELL=/bin/bash
# Execute a nightly (11:00pm) cron job to scrub application records
00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
Manchmal müssen Sie PATH und GEM_PATH mit crontab mit rvm angeben.
So was:
# top of crontab file
PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/ruby-2.2.$
GEM_PATH=/home/user_name/.rvm/gems/ruby-2.2.0:/home/user_name/.rvm/gems/ruby-2.2.0@global
# jobs
00 00 * * * ruby path/to/your/script.rb
00 */4 * * * ruby path/to/your/script2.rb
00 8,12,22 * * * ruby path/to/your/script3.rb
Kurzanleitung zum Einrichten eines Cron-Jobs
Erstellen Sie eine neue Textdatei, Beispiel: mycronjobs.txt
Speichern Sie für jeden täglichen Job (00:00, 03:45) die Einteilungen in mycronjobs.txt
00 00 * * * ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh
Senden Sie die Jobs an cron (jedes Mal, wenn Sie dies ausführen, löscht cron die gespeicherten Daten und aktualisiert sie mit den neuen Informationen in mycronjobs.txt )
crontab mycronjobs.txt
Zusätzliche nützliche Informationen
Aktuelle Cron-Jobs anzeigen
crontab -l
Entfernen Sie alle Cron-Jobs
crontab -r
Sie können das Shell-Skript auf zwei Arten ausführen, entweder mithilfe eines Cron-Jobs oder durch Schreiben eines Shell-Skripts
Nehmen wir an, Ihr Skriptname lautet "yourscript.sh".
Überprüfen Sie zuerst die Benutzerberechtigung des Skripts. Verwenden Sie den folgenden Befehl, um die Benutzerberechtigung des Skripts zu überprüfen
ll script.sh
Wenn sich das Skript im Stammverzeichnis befindet, verwenden Sie den folgenden Befehl
sudo crontab -e
Zweitens, wenn das Skript den Benutzer "ubuntu" enthält, verwenden Sie den folgenden Befehl
crontab -e
Fügen Sie die folgende Zeile in Ihre Crontab ein: -
55 23 * * * /path/to/yourscript.sh
Eine andere Möglichkeit besteht darin, ein Skript zu schreiben und es im Hintergrund auszuführen
Hier ist das Skript, in das Sie Ihren Skriptnamen eingeben müssen (z. B.: - youscript.sh), das jeden Tag um 23:55 Uhr ausgeführt wird
#!/bin/bash
while true
do
/home/modassir/yourscript.sh
sleep 1d
done
Speichern Sie es in einer Datei (nennen wir es "every-day.sh")
Schlaf 1d - bedeutet, dass es einen Tag wartet und dann wieder läuft.
Geben Sie jetzt die Erlaubnis für Ihr Skript. Verwenden Sie den folgenden Befehl: -
chmod + x every-day.sh
Führen Sie dieses Shell-Skript jetzt im Hintergrund mit "nohup" aus. Dadurch wird das Skript auch nach dem Abmelden von Ihrer Sitzung weiter ausgeführt.
Verwenden Sie den folgenden Befehl, um das Skript auszuführen.
nohup ./every-day.sh &
Hinweis: - Um "yourscript.sh" jeden Tag um 23:55 Uhr auszuführen, müssen Sie das Skript "every-day.sh" genau um 23:55 Uhr ausführen.