Моя відповідь дещо та сама, що і Майк.
У сценарії слід поставити щось подібне:
- створити файл блокування
- Перевірте наявність файлу блокування при наступному запуску.
Але є одна дуже важлива річ, яку ви повинні робити. і це для реалізації системи пасток.
Отже, з цього ви можете зробити те, що навіть якщо ваш сценарій вбитий чи хтось його вбив, ви можете захопити цей сигнал і видалити файл блокування, щоб у вас не було застарілого блокування файлу.
Ви можете прочитати, як це реалізувати тут .
Лише одна невелика річ, ви не можете вловити сигнал 9, я маю на увазі, якщо хтось це робить kill -9
, ви не можете потрапити в пастку, оскільки цей сигнал безпосередньо взаємодіє з ядром, і немає способу його захопити.
Крім того, як пропонує Джон, вам потрібно видаляти файл блокування щоразу, коли система перезавантажується, лише щоб переконатися, що не залишилося застарілого файлу.
Це ви можете легко зробити, ввівши невелику rm -f <FILE>
команду в /etc/rc.local