Проверьте, выполняет ли процесс Mac Bash использования именем процесса

интервал является ярлыком языка C# для Системы. Int32

, Пока это действительно означает, что Microsoft могла изменить это отображение, сообщение на обсуждениях FogCreek, указал [источник]

"По проблеме на 64 бита - Microsoft действительно работает над 64-разрядной версией Платформы.NET, но я - вполне уверенный интервал, НЕ отобразится на 64, обдумал ту систему.

Причины:

1. В стандарте ECMA C# конкретно говорится, что интервал составляет 32 бита и долго составляет 64 бита.

2. Microsoft представила дополнительные свойства & методы в версии 1.1 Платформы, которые возвращают длинные значения вместо международных значений, таких как Массив. GetLongLength, кроме того, для Выстраивания. GetLength.

, Таким образом, я думаю смело можно сказать, что все встроенные типы C# сохранят свое текущее отображение".

20
задан tshepang 25 February 2014 в 15:38
поделиться

4 ответа

Parsing this:

ps aux | grep -v grep | grep -c [-i] $ProcessName

...is probably your best bet.

ps aux lists all the currently running processes including the Bash script itself which is parsed out by grep -v grep with advice from Jacob (in comments) and grep -c [-i] $ProcessName returns the optionally case-insensitive integer number of processes with integer return suggested by Sebastian.

Here's a short script that does what you're after:

#!/bin/bash
PROCESS=myapp
number=$(ps aux | grep -v grep | grep -ci $ProcessName)

if [ $number -gt 0 ]
    then
        echo Running;
fi

EDIT: I initially included a -i flag to grep to make it case insensitive; I did this because the example program I tried was python, which on Mac OS X runs as Python -- if you know your application's case exactly, the -i is not necessary.

The advantage of this approach is that it scales with you -- in the future, if you need to make sure, say, five instances of your application are running, you're already counting. The only caveat is if another application has your program's name in its command line, it might come up -- regular expressions to grep will resolve that issue, if you're crafty (and run into this).

Research the Darwin man pages for ps, grep, and wc.

30
ответ дан 29 November 2019 в 22:33
поделиться

У него точно есть!

pgrep, pkill и pfind для OpenBSD и Darwin (Mac OS X)

http://proctools.sourceforge.net

(также доступно через MacPorts: информация о порте proctools)

pidof от nightproductions.net

0
ответ дан 29 November 2019 в 22:33
поделиться

Другой способ - использовать (злоупотреблять?) параметр -d команды killall . Параметры -d на самом деле не убивают процесс, а вместо этого выводят то, что будет сделано. Он также выйдет со статусом 0 , если найдет соответствующий процесс, или 1 , если не найдет. Собираем все вместе:

#!/bin/bash
`/usr/bin/killall -d "$1" &> /dev/null`
let "RUNNING = ! $?"     # this simply does a boolean 'not' on the return code
echo $RUNNING

Чтобы отдать должное, я изначально использовал этот метод из сценария в установщике iTunes.

11
ответ дан 29 November 2019 в 22:33
поделиться

есть ли на Mac pidof? ...

if pidof $processname >/dev/null ; then echo $processname is running ; fi
0
ответ дан 29 November 2019 в 22:33
поделиться
Другие вопросы по тегам:

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