Sök…


Kör jobb en gång vid en viss tidpunkt

Obs: at är inte installerat som standard på de flesta moderna distributioner.

För att utföra ett jobb en gång vid någon annan tid än nu, i det här exemplet 17:00, kan du använda

echo "somecommand &" | at 5pm

Om du vill hämta utdata kan du göra det på vanligt sätt:

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

at förstår många tidsformat, så du kan också säga

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

Om inget år eller datum anges antar det nästa gång den tid du angav inträffar. Så om du ger en timme som redan gått idag kommer det att antas i morgon, och om du ger en månad som redan har gått i år kommer det att anta nästa år.

Detta fungerar också tillsammans med nohup som du kan förvänta dig.

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

Det finns några fler kommandon för att kontrollera tidsinställda jobb:

  • atq listar alla tidsinställda jobb ( atq ueue)
  • atrm tar bort ett tidsinställt jobb ( atr e m ove)
  • parti gör i stort sett samma som på, men kör jobb bara när systembelastningen är lägre än 0,8

Alla kommandon gäller för jobb för den inloggade användaren. Om du är inloggad som root hanteras naturligtvis systembrett jobb.

Att göra jobb vid angivna tidpunkter upprepade gånger med systemd.timer

systemd ger en modern implementering av cron . För att köra ett skript periodiskt krävs en tjänst och en timerfil. Service- och timerfilerna ska placeras i / etc / systemd / {system, user}. Servicefilen:

[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

Nästa timerfil:

[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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow