Обратите внимание, что этот ответ ориентирован на самопроверяющийся скрипт, для ручной проверки запущен ли процесс перед попыткой запустить его из командной строки, смотрите ответ slm.
Самый простой способ - использовать pgrep
, если он доступен:
if pgrep "$0" >/dev/null
then
echo "$0 is already running" 2>&1
exit 1
fi
Если нет, вы можете использовать комбинацию ps
и grep
:
if ps -Ao comm | grep -q "^$0\$"
then
echo "$0 is already running" 2>&1
exit 1
fi
Однако надежнее использовать файл блокировки, поскольку всегда есть вероятность, что процесс запущен под другим именем. Вот пример с использованием flock
:
lockfile=/var/lock/mprog
{
if ! flock -n 9
then
echo "Unable to lock $lockfile, exiting" 2>&1
exit 1
fi
# do stuff here
} 9>"$lockfile"
Этого можно добиться, создав собственную локаль и настроив ее до тех пор, пока она не станет именно такой, как вы хотите, но для этого потребуется много работы!Возможно :да, практично :нет.
Сказав это, он включает в себя следующие шаги, и поскольку вы используете Linux Mint, вы должны следовать правилам Ubuntu:
LL_RR@MM
, где LL
— язык, RR
— регион, а MM
— модификатор, который вы вероятно не будете нужно (, если вы не хотите, чтобы он включал не -западные символы, такие как кириллица, греческий или хуже ;-).)Разверните локаль :Как только ваш файл или файлы локали будут готовы,вы должны протестировать их локально, чтобы убедиться, что они верны. Основные шаги:
/usr/share/i18n/locales/
Создание двоичного файла для использования приложениями
localedef -i inputfile -c -f <charset> <locale>
Для получения дополнительной информации см. официальную документацию по Ubuntu , за исключением той части, где указано 6. Отправьте локаль в glibc . В вашем случае это не обязательно, поскольку вы не создаете новую страну/язык. 0:-)