Почему нам нужно “при” команде в Linux?

Это может быть сделано из командной строки в Python как:

paddy$ python3 -c 'out=0
> with open("entry.txt") as f: 
>   for line in f:
>     if line[0] == "[":
>       if out: out.close()
>       out = open(line.split()[1] + ".txt", "w")
>     else: out.write(line)'
39
16.04.2015, 00:55
6 ответов

Ответ Bernhard корректен: в многопользовательских системах способность выполнить тяжелые программы в несколько безбожных часов ночи особенно удобна, и для человека, отправляющего задание и для его коллег. Это - часть того,"чтобы играть по правилам".

Я сделал большинство своих вычислений доктора философии этот путь, комбинируя сценарий с хорошей командой, которая понизила приоритет моей работы каждый раз, когда другие люди заставляли машину напряженно трудиться при оставлении неповрежденным ее способность к пожирателю ресурсов все системные ресурсы ночью.

Я использовал ту же самую команду, чтобы проверить, работала ли моя программа, и перезапускать ее при необходимости.

Кроме того, необходимо иметь в виду, что в был записанный путь перед экраном, tmux, и так далее, так, чтобы это был простой способ иметь отдельную оболочку, т.е. ту, которая не умрет, после того как Вы вышли из системы.

Наконец, необходимо также заметить, что это отличается от крона, который также был вокруг в течение долгого времени. Различие заключается в том в, случайно, в то время как крон, будучи таким образом повторяющимся, больше подходит для системных заданий, которые действительно должны быть выполнены навсегда в фиксированные интервалы: на самом деле, в дает Вам Вашу собственную среду, с Вашими собственными настройками (и выбор) переменной среды, в то время как крон использует минимальный набор переменных среды (просто проверяют различие в ПУТИ, как пример).

48
27.01.2020, 19:35
  • 1
    Также стоящий указания как другое различие с кроном, это at сохраняет Вашу среду путем, это было, когда задание было запланировано: тот же рабочий каталог, переменные среды... –  Carlos Campderrós 28.10.2013, 12:19
  • 2
    Существует также batch, который почти идентичен at, но будет ожидать низкой загрузки вместо этого, и по-видимому, at -q z будет хороший задание отдельно, тогда как at -q Z будет ожидать в течение времени, затем ожидать загрузки в отбрасывание, и хороший задание также. Ничего себе, что загрузка редко используемых функций! –  Ulrich Schwarz 28.10.2013, 14:29

Я использую at управляйте, когда я должен сделать некоторую тяжелую обработку на данных, которые я хочу выполнить в течение ночи, когда я не нахожусь позади своего компьютера. Конечно, я мог запустить процесс сразу после того, как я уезжаю, но это - что-то, что я склонен забывать.

Результат команды не отличается от регулярно выполнения сценария или команды.

16
27.01.2020, 19:35

Ваш администратор сети сообщает Вам, что некоторое обслуживание произойдет с Вашими веб-серверами, запускающимися в 19:00 и заканчивающимися к 2:00. Вы хотите вручить уведомление об обслуживании заранее, и Вы хотите максимальное время работы от своей системы. Вы собираетесь не лечь спать всю ночь, подготовить, чтобы выполнить различные команды и затем запустить его снова позже? Нет, Вы хотели бы использовать at для планирования этих задач затем лягте спать / играют скайрим и забывают об этом.

6
27.01.2020, 19:35

Можно выполнить пакетные задания в UNIX / Linux с помощью любой из трех команд — в, пакет или крон.

Запланируйте в задании с помощью определенной даты и времени

Syntax:

    $ at time date
For example, to schedule a job at 11 am on May 20, use the following at command.

    $ at 11 am may 20
6
27.01.2020, 19:35
  • 1
    Да, у меня есть то понимание "в" и его использование. Другие люди ответили на это более соответствующим образом. –  Akshay Patil 29.10.2013, 07:23

Когда у Вас есть вопросы, такие как это, всегда консультируются со страницами справочника. Они могут быть очень поучительными.

Что это делает

выборка от в странице справочника

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.

Использование

Использование инструментов:

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

at включает 4 команды (at, atq, atrm, и batch). Вы используете at и batch запланировать задания, atq видеть, что планируется, и atrm удалить задание до него выполнение.

$ at -f <cmd> timspec

Timespec

Время для выполнения at задание может быть указано по-разному.

форма выборки в странице справочника

В позволяет довольно сложные спецификации времени, расширяя стандарт POSIX.2. Это принимает, что времена формы HH:MM выполняют задание в определенное время суток. (Если то время уже проходит, следующий день принят.) Можно также указать середину ‐ ночь, полдень или ужин (16:00), и можно было снабдить суффиксом время суток AM или PM для выполнения утром или вечер. Можно также сказать, какой день задание будет выполнено, путем предоставления даты в именинах месяца формы с дополнительным годом или предоставления даты формы MMDD [CC] YY, MM/DD / [CC] YY, DD.MM. [CC] YY или [CC] DD MM YY. Спецификация даты должна следовать за спецификацией времени суток. Можно также дать времена как теперь +, считают единицы измерения времени, где единицы измерения времени могут быть минутами, часами, днями или неделями, и можно сказать в выполнить задание сегодня путем добавления суффикса времени сегодня и выполнить задание завтра путем добавления суффикса времени завтра.

Примеры

Скажите, что у Вас есть этот сценарий оболочки.

$ cat mycrontest.sh

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

Образец выполняется:

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

Образец при представлениях задания:

$ 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

Ссылки

15
27.01.2020, 19:35

atтакже может быть очень удобным способом запуска напоминаний. Моя текущая машина разработки работает под управлением OSX, поэтому atи простой notify.bash, который я собрал вместе, могут быть очень полезными :

.
$ at 5pm
notify.bash -t 'Work is over' -m "Don't forget to rollback INT environment"
^D
$ at now + 15 minutes
notify.bash -m 'Check tests' -l 'http://integration.example.com/jobs/XXXX'
^D
$ at now + 10 minutes
notify.bash -m 'Check the fridge, pudding should be done!'
^D

notify.bash

#!/bin/bash

DEFAULT_TITLE='Hey! Listen!'
TITLE="$DEFAULT_TITLE"
LINK=
MESSAGE=

function args.help () {
    local error="$1"
    if [ "$error" ]; then
        echo >&2 "$error"
    fi
    cat >&2 <<EOF
Usage $0 <options>

Displays a message using an Applescript notification box

Options
-------

--title <text>    Sets the title, otherwise the default is used ("$DEFAULT_TITLE")
 -t     <text>    Alias for --title

--link  <url>     Add a button to open a link
 -l     <url>     Alias for --link

--body  <text>    Set the message body
 -m     <text>    Alias for --body
EOF
}

function args.verify-not-empty () {
    local value="$1"
    local varname="$2"

    if [ "$value" ]; then
        echo "$value"
    elif [ "$varname" ]; then
        args.help "$varname cannot handle an empty argument"
        exit 1
    else
        args.help \
            "The programmer forgot to include context, something was empty which shouldn't have been, but I can't tell you much more than that. Sorry :("
        exit 1
    fi
}

function args.parse () {
    while [ "$1" ]
    do
        case "$1" in
            '-t' | '--title')
                shift
                TITLE=$(args.verify-not-empty "$1" title)
                shift
                ;;
            '-l' | '--link')
                shift
                LINK=$(args.verify-not-empty "$1" link)
                shift
                ;;
            '-m' | '--body')
                shift
                if [[ "$1" = '-' ]]; then
                    MESSAGE=$(cat -)
                else
                    MESSAGE="$1"
                fi
                MESSAGE=$(args.verify-not-empty "$MESSAGE" body)
                shift
                ;;
            *)
                args.help "Unrecognized argument: $1"
                exit 1
        esac
    done
    if [[ ! "$MESSAGE" ]]; then
        args.help "Message body was not specified"
        exit 1
    fi
}

function message.display-no-link () {
    osascript > /dev/null <<EOF
tell application "Finder"
  activate
  display alert "$TITLE" ¬
          message "$MESSAGE" ¬
          buttons { "Acknowledge" } ¬
          default button "Acknowledge"
end tell
return
EOF
}

function message.display-with-link () {
    osascript > /dev/null <<EOF
tell application "Finder"
  activate
  display alert "$TITLE" ¬
          message "$MESSAGE\n\nClick 'Open Link' to go to $LINK" ¬
          buttons { "Acknowledge", "Open Link" } ¬
          default button "Open Link"
          set response to button returned of the result
          if response is "Open Link" then open location "$LINK"
end tell
return
EOF
}

function message.display () {
    if [ "$LINK" ]; then
        message.display-with-link
    else
        message.display-no-link
    fi
}

args.parse "$@"
message.display
1
27.01.2020, 19:35

Теги

Похожие вопросы