Ricerca…


Esegui lavoro una volta al momento specifico

Nota: at non è installato di default sulla maggior parte delle moderne distribuzioni.

Per eseguire un lavoro una volta in un altro momento rispetto a ora, in questo esempio 17:00, è possibile utilizzare

echo "somecommand &" | at 5pm

Se vuoi catturare l'output, puoi farlo nel solito modo:

echo "somecommand > out.txt 2>err.txt &" | at 5pm

at capisce molti formati di tempo, in modo da poter anche dire

echo "somecommand &" | at now + 2 minutes
echo "somecommand &" | at 17:00
echo "somecommand &" | at 17:00 Jul 7
echo "somecommand &" | at 4pm 12.03.17

Se non viene assegnato alcun anno o data, si assume la volta successiva che si verifica l'ora specificata. Quindi se offri un'ora che è già passata oggi, assumerà domani, e se darai un mese che è già passato quest'anno, assumerà l'anno prossimo.

Questo funziona anche insieme a niente come ti aspetteresti.

echo "nohup somecommand > out.txt 2>err.txt &" | at 5pm

Ci sono altri comandi per controllare i lavori a tempo:

  • atq elenca tutti i lavori a tempo ( atq ueue)
  • atrm rimuove un lavoro a tempo ( atr e m ove)
  • batch ha praticamente lo stesso aspetto, ma esegue i lavori solo quando il carico del sistema è inferiore a 0.8

Tutti i comandi si applicano ai lavori dell'utente che ha effettuato il login. Se si è effettuato il login come root, i lavori di sistema vengono gestiti naturalmente.

Fare lavori a orari specifici ripetutamente usando systemd.timer

systemd fornisce un'implementazione moderna di cron . Per eseguire periodicamente uno script è necessario un servizio e un file del timer. I file di servizio e timer devono essere collocati in / etc / systemd / {system, user}. Il file di servizio:

[Unit]
Description=my script or programm does the very best and this is the description

[Service]
# type is important!
Type=simple
# program|script to call. Always use absolute pathes 
# and redirect STDIN and STDERR as there is no terminal while being executed 
ExecStart=/absolute/path/to/someCommand >>/path/to/output 2>/path/to/STDERRoutput
#NO install section!!!! Is handled by the timer facitlities itself.
#[Install]
#WantedBy=multi-user.target

Quindi il file del timer:

[Unit]
Description=my very first systemd timer
[Timer]
# Syntax for date/time specifications is  Y-m-d H:M:S 
# a * means "each", and a comma separated list of items can be given too
# *-*-* *,15,30,45:00  says every year, every month, every day, each hour,
# at minute 15,30,45 and zero seconds

OnCalendar=*-*-* *:01:00  
# this one runs each hour at one minute zero second e.g. 13:01:00 


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow