/usr/bin/flock -w 600 /var/tmp/myscript.lock /root/myscript.sh
Эта комманда запустит /root/myscript.sh и создаст lock-файл для данного процесса. Пока он активен, новый вызов данного скрипта не произойдет.
После завершения программы, блокировка файла снимается и процесс может быть снова запущен.
Параметр -w 600 определяет время ожидания комманды flock на освобождение lock-файла.
Для моментальной отмены выполнения процесса используйте параметр -w 0, для ожидания же бесконечно долгого времени параметр нужно опустить.
<?
//Проверка блокировки
if(file_exists("lock.txt"))
die("copy");
function test228($msg) {
if (!$f = fopen('test.txt', 'a+')) return false;
@fputs($f, date('H:i:s > ').$msg."\r\n"));
@fclose($f);
return true;
}
header('Content-Length: 1');
header('Connection: close;');
echo ' ';
@flush();
@ob_flush();
//Блокируем
@file_put_contents("lock.txt", "");
for($i=0; $i<3; $i++) {
test228("test"); // если использовать эхо будет падать
sleep(10);
}
//Удаляем блокировку
@unlink("lock.txt");
?>