Это может быть слишком упрощенно, исправьте меня, если я неправ. Не простое ps
достаточно?
#!/bin/bash
me="$(basename "$0")";
running=$(ps h -C "$me" | grep -wv $$ | wc -l);
[[ $running > 1 ]] && exit;
# do stuff below this comment
Я процитировал бы из стандарта FHS (Стандарт Иерархии Файловой системы):
/sbin должен содержать только двоичные файлы, важные для начальной загрузки, восстановления, восстановления и/или восстановления системы в дополнение к двоичным файлам в / мусорном ведре.
Программы, выполненные после/usr/, как известно, смонтированы (когда нет никаких проблем), обычно помещаются в/usr/sbin. Локально установленные программы системного администрирования должны быть помещены в/usr/local/sbin.
Перезагрузка сделана на основе Вашего значения переменных окружения PATH,
Обычно это смотрит двоичные файлы на основе переменной ENV ПУТИ. Если Вы будете использовать перезагрузку затем/sbin/reboot, то выполнится, если/sbin произойдет в переменной ПУТИ перед другим sbin's в переменной ENV ПУТИ.
$PATH
. – Gilles 'SO- stop being evil' 26.09.2013, 00:56