Запустите простой скрипт с cron
каждые 5 минут. Ваш crontab мог посмотреть, например, как это:
*/5 * * * * /path/to/your/script
Псевдокод сценария:
IF (lockfile exists) { exit }
create lockfile
IF (old job has not finished yet) {
remove lockfile
exit
}
IF (new job has already been queued) {
remove lockfile
exit
}
schedule new task
remove lockfile
Видеть Корректные сценарии оболочки привязки? поскольку, как заблокировать правильно (как без состояний состязания как возможный).
$ sed ':again;$!N;$!b again; s/{[^}]*}//g' file
This is
that wants
anyway.
Объяснение:
: снова; $! N; $! b снова;
Это читает целый файл в пространство образца.
: снова
маркировка. N
читает в следующей строке. $! b снова
ветви назад к снова
маркировка при условии, что это не последняя строка.
с {[^}] *}//g
Это удаляет все выражения в фигурных скобках.
На MAC OSX, попробуйте:
sed -e ':again' -e N -e '$!b again' -e 's/{[^}]*}//g' file
Позволяют нам взять это в качестве тестового файла с большим количеством вложенных фигурных скобок:
a{b{c}d}e
1{2
}3{
}
5
Вот модификация для обработки вложенных фигурных скобок:
$ sed ':again;$!N;$!b again; :b; s/{[^{}]*}//g; t b' file2
ae
13
5
Объяснение:
: снова; $! N; $! b снова
Это совпадает с прежде: это читает в целом файле.
: b
Это определяет маркировку b
.
s/{[^ {}] *}//g
, Это удаляет текст в фигурных скобках пока текст, не содержит внутренних фигурных скобок.
b
т, Если вышеупомянутая команда замены привела к изменению, переходит назад к маркировке b
. Таким образом команда замены повторяется, пока все группы фигурной скобки не удалены.
Perl:
perl -0777 -pe 's/{.*?}//sg' file
, Если вы хотите отредактировать оперативный
perl -0777 -i -pe 's/{.*?}//sg' file
, Который читает файл как единственную последовательность и делает расширенный поиск и замену.
Это обработает вложенный заключенный в фигурные скобки:
perl -ne 'do {$b++ if $_ eq "{"; print if $b==0; $b-- if $_ eq "}"} for split //'
Sed:
sed '/{/{:1;N;s/{.*}//;T1}' multiline.file
запустился начиная со строки с {
, и получите следующую строку ( N
), пока замена ( {}
) не может быть сделана ( возврат средств T
для маркировки сделанный :
, если замена не сделана)
Немного изменяют, чтобы быть верным, если многие, которых кюри, бракуемое в одной строке
sed ':1; s/{[^}]*}// ; /{/ { /}/!N ; b1 }' multiline.file
, Удаляет все символы в скобках ( [^}]
равный каждый символ кроме правая скобка
для создания sed
не жадный), и если в строке остаются оставленным, браковали
- назад для запуска со следующей строки, добавленной, если нет правая скобка
.