Terminal: Wie benutzt man „at“?

Könnte jemand einige Beispielverwendungen für den atBefehl bereitstellen? Ich finde das mansuper verwirrend.

$ man at

Wenn wir beispielsweise in 10 Minuten einen Befehl ausführen wollten, kann dies mit at? (und ohne sleep)

Ab macOS 12.2.1 ist die beste Beschreibung, die ich gesehen habe, um dies zu beantworten, hier: unix.stackexchange.com/a/478840/193772

Antworten (2)

Die Zeitangabe für "in 10 Minuten ab jetzt" ist now +10 minutes. Zum Beispiel,

echo 'open ~' | at now +10 minutes

Das System ist jedoch atin macOS standardmäßig deaktiviert, wie in der atManpage erwähnt:

IMPLEMENTATION NOTES
     Note that at is implemented through the launchd(8) daemon periodically
     invoking atrun(8), which is disabled by default.  See atrun(8) for infor-
     mation about enabling atrun.

Die atrunManpage sagt, dass Sie laufen müssen

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

Ich verwende den atBefehl, wenn ich Daten stark verarbeiten muss, die ich nachts ausgeführt haben möchte, wenn ich nicht hinter meinem Computer bin. Natürlich könnte ich gleich nach meiner Abreise mit dem Prozess beginnen, aber das vergesse ich gerne.

Das Ergebnis des Befehls unterscheidet sich nicht von der regulären Ausführung des Skripts oder Befehls.
@ Bernhard

Was es tut
Auszug aus atder Manpage

NAME
       at, batch, atq, atrm - queue, examine or delete jobs for later execution

DESCRIPTION
       at  and  batch  read  commands  from  standard  input or a specified file
       which are to be executed at a later time, using /bin/sh.
    

Verwendung
Die Verwendung der Tools:

Usage: at [-V] [-q x] [-f file] [-mldbv] timespec ...
       at [-V] [-q x] [-f file] [-mldbv] -t time
       at -c job ...
       atq [-V] [-q x]
       atrm [-V] job ...
       batch    

atenthält 4 Befehle ( at, atq, atrm, und batch). Sie verwenden atund , batchum die Jobs zu planen, atqum zu sehen, was geplant ist, und atrmum einen Job zu entfernen, bevor er ausgeführt wird.

$ at -f <cmd> timspec

Zeitangabe
Die Zeit für die Ausführung des at-Jobs kann auf verschiedene Arten angegeben werden.

Auszugsformular auf der Manpage

At erlaubt recht komplexe Zeitangaben und erweitert damit den POSIX.2-Standard. Es akzeptiert Zeiten im Format HH:MM, um einen Job zu einer bestimmten Tageszeit auszuführen. (Falls diese Zeit bereits vergangen ist, wird der nächste Tag angenommen.) Sie können auch Midnight, Noon oder Teatime (4pm) spezifizieren und Sie können eine Tageszeit mit dem Suffix AM oder PM für den Betrieb am Morgen haben oder am Abend. Sie können auch angeben, an welchem ​​Tag der Job ausgeführt werden soll, indem Sie ein Datum im Format Monat-Tag mit einem optionalen Jahr oder ein Datum im Format MMTT[CC]JJ, MM/TT/[CC]JJ angeben. TT.MM.[CC]JJ oder [CC]JJ-MM-TT. Die Angabe eines Datums muss der Angabe der Uhrzeit folgen. Sie können auch Zeiten wie now + count time-units angeben, wobei die Zeiteinheiten Minuten, Stunden, Tage,

Beispiele
Angenommen, Sie haben dieses Shell-Skript.

$ cat mycrontest.sh

#!/bin/bash
 echo "It is now $(date +%T) on $(date +%A)"

Beispiellauf:

$ ./mycrontest.sh
It is now 18:37:42 on Friday

Probe bei Jobeinreichungen:

$ at -f mycrontest.sh  10pm tomorrow
job 14 at Sun Jul  8 22:00:00 2007

$ at -f mycrontest.sh 2:00 tuesday
job 15 at Tue Jul 10 02:00:00 2007

$ at -f mycrontest.sh 2:00 july 11
job 16 at Wed Jul 11 02:00:00 2007

$ at -f mycrontest.sh 2:00 next week
job 17 at Sat Jul 14 02:00:00 2007

Dank an @slm