#!/usr/bin/env bash # Команда или скрипт, который нужно запустить RUN_SCRIPT="cat /dev/zero > /dev/null"; # Lock-файл в котором будем хранить ID процесса (PID) LOCK_FILE="/tmp/script.lock"; # Считываем из Lock-файла PID и проверяем # его наличие в процессах с помощью pgrep # Если Lock-файл содержит несуществующий PID # то в переменную PID ничего не будет записано PID=$(pgrep -F $LOCK_FILE 2> /dev/null); # Проверяем переменную PID на содержимое if [ $PID ] # Если PID содержит ID процесса then # Убиваем процесс kill -SIGTERM $PID; # Удаляем Lock-файл rm $LOCK_FILE; else # Если PID пустой # запускаем скрипт и сохраняем его PID $RUN_SCRIPT & PID=$!; # Записываем PID в Lock-файл echo $PID > $LOCK_FILE; fi # Завершаем работу скрипта с кодом 0 exit 0;