Это может быть сделано из командной строки в 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)'
Ответ Bernhard корректен: в многопользовательских системах способность выполнить тяжелые программы в несколько безбожных часов ночи особенно удобна, и для человека, отправляющего задание и для его коллег. Это - часть того,"чтобы играть по правилам".
Я сделал большинство своих вычислений доктора философии этот путь, комбинируя сценарий с хорошей командой, которая понизила приоритет моей работы каждый раз, когда другие люди заставляли машину напряженно трудиться при оставлении неповрежденным ее способность к пожирателю ресурсов все системные ресурсы ночью.
Я использовал ту же самую команду, чтобы проверить, работала ли моя программа, и перезапускать ее при необходимости.
Кроме того, необходимо иметь в виду, что в был записанный путь перед экраном, tmux, и так далее, так, чтобы это был простой способ иметь отдельную оболочку, т.е. ту, которая не умрет, после того как Вы вышли из системы.
Наконец, необходимо также заметить, что это отличается от крона, который также был вокруг в течение долгого времени. Различие заключается в том в, случайно, в то время как крон, будучи таким образом повторяющимся, больше подходит для системных заданий, которые действительно должны быть выполнены навсегда в фиксированные интервалы: на самом деле, в дает Вам Вашу собственную среду, с Вашими собственными настройками (и выбор) переменной среды, в то время как крон использует минимальный набор переменных среды (просто проверяют различие в ПУТИ, как пример).
Я использую at
управляйте, когда я должен сделать некоторую тяжелую обработку на данных, которые я хочу выполнить в течение ночи, когда я не нахожусь позади своего компьютера. Конечно, я мог запустить процесс сразу после того, как я уезжаю, но это - что-то, что я склонен забывать.
Результат команды не отличается от регулярно выполнения сценария или команды.
Ваш администратор сети сообщает Вам, что некоторое обслуживание произойдет с Вашими веб-серверами, запускающимися в 19:00 и заканчивающимися к 2:00. Вы хотите вручить уведомление об обслуживании заранее, и Вы хотите максимальное время работы от своей системы. Вы собираетесь не лечь спать всю ночь, подготовить, чтобы выполнить различные команды и затем запустить его снова позже? Нет, Вы хотели бы использовать at
для планирования этих задач затем лягте спать / играют скайрим и забывают об этом.
Можно выполнить пакетные задания в 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
Когда у Вас есть вопросы, такие как это, всегда консультируются со страницами справочника. Они могут быть очень поучительными.
выборка от в странице справочника
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
Время для выполнения 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
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
at
сохраняет Вашу среду путем, это было, когда задание было запланировано: тот же рабочий каталог, переменные среды... – Carlos Campderrós 28.10.2013, 12:19batch
, который почти идентиченat
, но будет ожидать низкой загрузки вместо этого, и по-видимому,at -q z
будет хороший задание отдельно, тогда какat -q Z
будет ожидать в течение времени, затем ожидать загрузки в отбрасывание, и хороший задание также. Ничего себе, что загрузка редко используемых функций! – Ulrich Schwarz 28.10.2013, 14:29