Unix - ps, чтобы проверить, запущен ли сценарий

arp -n | grep -i ВАШ: MAC: ЗДЕСЬ | awk '{print $ 1}' | nslookup

Я почти уверен, что вам нужно запустить сервер имен в вашей локальной сети, чтобы это работало.

0
08.05.2018, 13:03
1 ответ

Используемая вами команда ps не имеет отношения к UNIX.

Использование key lettersвместо optionsиспользовалось в BSD ps, но это так и не вошло в стандарт. BSD даже использует ключевую букву hне так, как вы могли ожидать.

Рекомендую использовать:

ps -p $$

Если вы хотите проверить, есть ли еще экземпляры этого скрипта, используйте:

myname=`basename $0`
pids=`pgrep -d, $myname`
ps -p $pids

Теоретически вам даже не нужно больше запускать ps, достаточно будет проверить вывод pgrepна наличие запятой.

Если вы хотите реализовать алгоритм блокировки файла и иметь оболочку, совместимую с POSIX, вы можете использовать:

set -o noclobber
:> /var/tmp/myscript
if [ $? -ne 0 ]; then
     echo already running
     exit 1
fi
... do some stuff
rm /var/tmp/myscript

Надежность этого зависит от того, реализует ли оболочка noclobber так, как это нравится POSIX. Некоторые оболочки могут не реализовать это атомарно, поэтому вам нужно знать, в порядке ли ваша оболочка.

0
28.01.2020, 04:23

Теги

Похожие вопросы