Как проверить запущено ли приложение linux
Как вы думаете, операционная система Linux может автоматически позаботиться сама о себе? Когда работает все нормально или вам не нужны никакие нестандартные возможности - вполне да. Но иногда может понадобиться ваше вмешательство в ее работу.
В Linux для каждой отдельной программы, при ее запуске создается процесс. Неважно запускаете программу вы вручную самостоятельно или это делает система или ядро. Например, программа инициализации, которая запускается сразу после завершения загрузки ядра тоже имеет свой процесс с идентификатором 0. Процессы в linux можно описать как контейнеры, в которых хранится вся информация о состоянии и выполнении программы. Если программа работает хорошо, то все нормально, но если она зависла или вам нужно настроить ее работу может понадобиться управление процессами в Linux.
В этой статье будет затронута обширная тема, мы рассмотрим такие возможности:
- Просмотр запущенных процессов
- Просмотр информации о процессах
- Поиск процессов в Linux
- Изменение приоритета процессов
- Завершение процессов
- Ограничение памяти доступной процессу
Я не мог не включить в статью первые пункты, но они очень просты и мы не будем разбирать их очень подробно. Но вот все остальное может показаться сложным и недостаточно описанным.
Что такое процесс?
Начнем с того, что разберемся в терминах. По сути, процесс - это каждая программа. Как я уже говорил для каждой запускаемой программы создается отдельный процесс. В рамках процесса программе выделяется процессорное время, оперативная память и другие системные ресурсы. У каждого процесса есть свой идентификатор, Proccess ID или просто PID, по ним, чаще всего и определяются процессы Linux. PID определяется неслучайно, как я уже говорил, программа инициализации получает PID 1, а каждая следующая запущенная программа - на единицу больше. Таким образом PID пользовательских программ доходит уже до нескольких тысяч.
На самом деле, процессы Linux не настолько абстрактны, какими они вам сейчас кажутся. Их вполне можно попытаться пощупать. Откройте ваш файловый менеджер, перейдите в корневой каталог, затем откройте папку /proc. Видите здесь кучу номеров? Так вот это все - PID всех запущенных процессов. В каждой из этих папок находится вся информация о процессе.
Например, посмотрим папку процесса 1. В папке есть другие под каталоги и много файлов. Файл cmdline содержит информацию о команде запуска процесса:
Поскольку у меня используется система инициализации Systemd, то и первый процесс запускается для нее. С помощью каталога /proc можно сделать все. Но это очень неудобно, особенно учитывая количество запущенных процессов в системе. Поэтому для реализации нужных задач существуют специальные утилиты. Перейдем к рассмотрению утилит, которые позволяют реализовать управление процессами в Linux.
Управление процессами в Linux
В Linux есть очень большое количество утилит для решения различных задач по управлению процессами. Это и такие многофункциональные решения, как htop, top, а также простые утилиты, например, ps, kill, killall, who и т д. Я не буду рассматривать в этой статье графические утилиты, и top тоже рассматривать не буду. Первое потому что слишком просто, второе - потому что htop лучше. Мы остановимся на работе с программой htop и ее аналогами в форме утилит в стиле GNU, одна утилита - одна функция.
Давайте установим htop, если она у вас еще не установлена. В Ubuntu это делается так:
sudo apt install htop
В других дистрибутивах вам нужно просто использовать свой менеджер пакетов. Имя пакета такое же.
Посмотреть запущенные процессы
Это очень простая задача, и также просто она решается. Для этого существует множество утилит, начиная от обычной ps, до более продвинутых интерактивных top, htop и так далее.
Открыв htop, мы сразу видим список запущенных процессов. Конечно, здесь отображены не все процессы linux, их-то в системе очень много, вы уже знаете, все они на один экран не поместятся. По умолчанию выводятся процессы, запущенные от имени вашего пользователя:
Вы можете увидеть такую информацию о процессе:
- PID - идентификатор процесса
- USER - пользователь, от которого был запущен процесс
- PRI - приоритет процесса linux на уровне ядра (обычно NI+20)
- NI - приоритет выполнения процесса от -20 до 19
- S - состояние процесса
- CPU - используемые ресурсы процессора
- MEM - использованная память
- TIME - время работы процесса
К отображению можно добавить и дополнительные параметры, но эти главные. Добавить параметры можно с помощью меню Setup. Там все очень просто, читайте подсказки и следуйте указаниям. Например, добавлен параметр PPID:
Очень важной особенностью программы есть то, что вы можете сортировать процессы в Linux по нужному параметру. Просто кликните по названию параметра, оно выделится зеленым и будет выполнена сортировка. Например, хотите посмотреть в каком порядке запускались процессы, сортируем по PID:
Также есть интересная возможность разместить процессы в виде дерева. Вы сможете увидеть, каким процессом был запущен тот или иной процесс. Для отображения дерева нажмите кнопку F5:
Почти те же действия вы можете выполнять с помощью программы ps. Только здесь нет такого удобного интерактивного режима. Все делается с помощью опций.
Рассмотрим основные опции, которые будем использовать:
- -e - вывести информацию обо всех процессах
- -a - вывести информацию обо всех наиболее часто запрашиваемых процессах
- -t - показывать только процессы из этого терминала
- -p - показывать информацию только об указанном процессе
- -u - показывать процессы только определенного пользователя
Одним словом, чтобы посмотреть все активные на данный момент процессы в linux, используется сочетание опций aux:
Программа показывает все те же параметры, только здесь нет интерактивного интерфейса. Думаете здесь нельзя отсортировать процессы, но ошибаетесь, можно. Для этого есть опция sort. Вы можете сортировать их по любому полю, например:
Список будет отсортирован в обратном порядке, внизу значения больше, вверху - меньше. Если нужно в обратном порядке, добавьте минус:
В качестве поля для сортировки могут быть использованы приоритеты процессов Linux или любые другие параметры. Также вы можете обрезать вывод, если не нужно выводить всю информацию:
Казалось бы, у ps нет возможности стоить деревья процессов. Но не совсем, для этого существует отдельная команда:
Поиск процессов в Linux
Список процессов, это хорошо. Но иногда, когда какой-нибудь процесс завис и нужно убить процесс Linux или нам нужно провести с ним какие-либо действия, нужно выделить этот процесс из списка, узнать его PID и информацию о нем.
Чтобы найти процесс linux в htop можно использовать кнопку F3. Нажмите F3 и наберите нужное слово. Дальше чтобы перейти к следующему вхождению нажимайте F2 или Esc для завершения поиска:
Для поиска процессов в htop можно использовать также фильтр htop. Нажмите F4, введите слово и будут выведены только процессы linux, имя которых включает это слово.
В утилите ps фильтрации нет, но зато мы можем использовать утилиту grep, перенаправив вывод ps на нее чтобы найти процесс linux:
ps aux | grep chromium
Это очень часто употребляемая команда.
Изменение приоритета процессов
Приоритет процесса linux означает, насколько больше процессорного времени будет отдано этому процессу по сравнению с другими. Так мы можем очень тонко настроить какая программа будет работать быстрее, а какая медленнее. Значение приоритета может колебаться от 19 (минимальный приоритет) до -20 - максимальный приоритет процесса linux. Причем, уменьшать приоритет можно с правами обычного пользователя, но чтобы его увеличить нужны права суперпользователя.
В htop для управления приоритетом используется параметр Nice. Напомню, что Priv, это всего лишь поправка, она в большинстве случаев больше за Nice на 20. Чтобы изменить приоритет процесса просто установите на него курсор и нажимайте F7 для уменьшения числа (увеличения приоритета) или F8 - для увеличения числа.
Но и для решения этой задачи управления процессами Linux необязательно использовать htop. Вы можете сделать все и другими командами. Например, команда nice. С помощью нее вы можете указать приоритет для запускаемого процесса:
nice -n 10 apt-get upgrade
Или изменить приоритет для уже существующего по его pid:
renice -n 10 -p 1343
Завершение процессов в Linux
Если процесс завис и не отвечает, его необходимо завершить. В htop, чтобы убить процесс Linux, просто установите курсор на процесс и нажмите F9:
Система для управления процессами использует определенные сигналы, есть сигналы, которые указывают процессу завершиться. Вот несколько основных сигналов:
- SIGTERM - попросить процесс сохранить данные и завершится
- SIGKILL - завершить процесс немедленно, без сохранения
Вообще сигналов есть несколько десятков, но мы не будем их рассматривать. Отправим сигнал SIGKILL:
Также можно воспользоваться утилитой kill:
Также можно уничтожить процесс по имени:
Ограничение процессов
Управление процессами в Linux позволяет контролировать практически все. Вы уже видели что можно сделать, но можно еще больше. С помощью команды ulimit и конфигурационного файла /etc/security/limits.conf вы можете ограничить процессам доступ к системным ресурсам, таким как память, файлы и процессор. Например, вы можете ограничить память процесса Linux, количество файлов и т д.
Запись в файле имеет следующий вид:
<домен> <тип> <элемент> <значение>
- домен - имя пользователя, группы или UID
- тип - вид ограничений - soft или hard
- элемент - ресурс который будет ограничен
- значение - необходимый предел
Жесткие ограничения устанавливаются суперпользователем и не могут быть изменены обычными пользователями. Мягкие, soft ограничения могут меняться пользователями с помощью команды ulimit.
Рассмотрим основные ограничения, которые можно применить к процессам:
- nofile - максимальное количество открытых файлов
- as - максимальное количество оперативной памяти
- stack - максимальный размер стека
- cpu - максимальное процессорное время
- nproc - максимальное количество ядер процессора
- locks - количество заблокированных файлов
- nice - максимальный приоритет процесса
Например, ограничим процессорное время для процессов пользователя sergiy:
sergiy hard nproc 20
Посмотреть ограничения для определенного процесса вы можете в папке proc:
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 204800 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 23562 23562 processes
Max open files 1024 4096 files
Max locked memory 18446744073708503040 18446744073708503040 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 23562 23562 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Ограничения, измененные, таким образом вступят в силу после перезагрузки. Но мы можем и устанавливать ограничения для текущего командного интерпретатора и создаваемых им процессов с помощью команды ulimit.
Вот опции команды:
- -S - мягкое ограничение
- -H - жесткое ограничение
- -a - вывести всю информацию
- -f - максимальный размер создаваемых файлов
- -n - максимальное количество открытых файлов
- -s - максимальный размер стека
- -t - максимальное количество процессорного времени
- -u - максимальное количество запущенных процессов
- -v - максимальный объем виртуальной памяти
Например, мы можем установить новое ограничение для количества открываемых файлов:
Установим лимит оперативной памяти:
ulimit -Sv 500000
Напоминаю, что это ограничение будет актуально для всех программ, выполняемых в этом терминале.
Выводы
Вот и все. Теперь управление процессами в Linux не вызовет у вас проблем. Мы рассмотрели очень даже подробно эту тему. Если у вас остались вопросы или есть предложения по дополнению статьи, пишите в комментариях!
Как я могу определить, запущен процесс или нет, а затем выполнить сценарий bash для выполнения каких-либо действий на основе этого условия?
если процесс abc запущен, сделайте это
если это не работает, сделайте это.
Считайте важным отметить, что ни одно из приведенных ниже решений не учитывает состояние процесса. Комментарий по одному из моих вопросов привел меня сюда, но ответ на него дал мне представление о различных состояниях программы, например о zombie процессе (не то, что я бы назвал «запущенным» процессом). Полный список STAT значений столбцов в выходных данных ps приведен здесь для тех, кто склонен написать ответ, который учитывает это, или отредактировать свой собственный.Сценарий bash, выполняющий что-то подобное, будет выглядеть примерно так:
Этот скрипт просто проверяет, запущена ли программа "gedit".
Или вы можете только проверить, работает ли программа следующим образом:
@DreadPirateShawn Можете ли вы сказать мне, почему использовать / dev / null, а не просто 0? Использование числа делает код более читабельным, по крайней мере, для нуба (такого как я). Нет перенаправления, нет ничего @ Сильвиу, а? Поиск в Google /dev/null : "/ dev / null перенаправляет стандартный вывод команды на нулевое устройство, которое является специальным устройством, которое отбрасывает записанную в него информацию" . использование 0 перенаправит вывод команды в файл с именем 0 . В этом случае я бы посоветовал почувствовать себя более комфортно > /dev/null - вы увидите это повсюду, так как это стандартный / правильный способ отменить вывод. Спасибо, я использовал это для милого маленького скрипта, который проверяет, запущена ли программа перед ее выполнением. (хотя мне пришлось немного его расширить, поскольку исполняемый файл google chrome не имеет того же имени, что и команда run, имя exec просто chrome.) Пожалуйста, добавьте -x параметр, чтобы pgrep он искал точное приложение, иначе он получит неверное значение, если найдет ту же строку в имени другого приложения. Я просто потратил 1 час, чтобы выяснить это. Чтобы проверить, не запущена ли программа, используйте ! pgrepЛюбое решение, которое использует что-то вроде ps aux | grep abc или pgrep abc имеет недостатки.
Почему?
Поскольку вы не проверяете, запущен ли конкретный процесс, вы проверяете, запущены ли какие-либо процессы, которые совпадают abc . Любой пользователь может легко создать и запустить исполняемый файл с именем abc (или содержащий abc его в своем имени или аргументах), что приведет к ложному срабатыванию вашего теста. Есть различные варианты , которые можно применить к ps , grep и pgrep сузить область поиска, но вы все равно не получите надежный тест.
Итак, как мне надежно протестировать определенный процесс?
Это зависит от того, для чего вам нужен тест.
Я хочу убедиться, что служба abc запущена, и если нет, запустите ее
Для этого и нужны init и upstart. Они запустят службу и гарантируют, что ее pid будет сохранен в pidfile. Попробуйте снова запустить службу (через init или upstart), и она проверит pid-файл и либо запустит его, если его там нет, либо прервет работу, если он уже запущен. Это все еще не на 100% надежно, но это так близко, как вы получите.
ABC это мой сценарий. Мне нужно убедиться, что запущен только один экземпляр моего скрипта.
В этом случае используйте файл блокировки или файл блокировки. Например
См. Bash FAQ 45 для других способов блокировки.
Хотя это технически верно, я никогда не сталкивался с такой проблемой в реальной жизни. Большинство программ не меняют свои имена так, как это нарушает сценарии. Таким образом, для простых сценариев что-то вроде pgrep или ps вполне адекватно, и ваш подход кажется излишним. Если вы пишете сценарий для публичного распространения, вы должны писать его максимально безопасным способом. @ScottSeverance Программы, меняющие имена, не проблема; это потребует вмешательства независимо. Это другие пользователи, работающие с той же самой программой, или другие программы с похожими именами, которые внезапно приведут к тому, что скрипт получит ложные срабатывания и, таким образом, поступит неправильно. Я просто предпочитаю «работает», а не «в основном работает». Я оговорился. Но многие из нас используют однопользовательские системы. И в многопользовательской ситуации легко также использовать grep для имени пользователя. Что делать, если ваш скрипт не работает во время выполнения и умирает до разблокировки файла? @ jp093121 Ловушка EXIT срабатывает при выходе из сценария. Независимо от того, выходит ли он из-за достижения конца сценария, команды выхода или получает сигнал (который может быть обработан), rm команда запускается. Так что, пока он заканчивается после того, как ловушка установлена, замок должен исчезнуть.Это то, что я использую:
Говоря простым языком: если 'pgrep' возвращает 0, процесс выполняется, в противном случае это не так.
пока pidof и pgrep являются отличными инструментами для определения того, что работает, они оба, к сожалению, недоступны в некоторых операционных системах. Определенный fail safe был бы использовать следующее: ps cax | grep command
вывод на Gentoo Linux:
выход на OS X:
в Linux и OS X grep возвращает код выхода, поэтому легко проверить, был ли найден процесс или не:
кроме того, если вы хотите список PIDs, вы можете легко grep для тех, а также:
чьи выходные данные одинаковы в Linux и OS X:
вывод следующей пустой строки, что делает этот подход безопасным для процессов, которые не работают:
этот подход подходит для написания простой пустой строки проверьте, а затем даже повторите обнаруженные PIDs.
вы можете проверить его, сохранив его в файл (с именем "running") с разрешениями на выполнение (chmod +x running) и выполнив его с параметром: ./running "httpd"
внимание.
пожалуйста, имейте в виду, что вы просто анализируете вывод ps ax что означает, что, как видно из вывода Linux, он не просто соответствует процессам, но и аргументам перешел в эту программу. Я настоятельно рекомендую быть как можно более конкретным при использовании этого метода (например, ./running "mysql" также будет соответствовать процессам "mysqld"). Я настоятельно рекомендую использовать which чтобы проверить полный путь, где это возможно.
ссылки:
вы должны знать PID !
Поиск процесса, пытаясь сделать какое-то распознавание шаблонов на аргументах процесса (например, pgrep "mysqld" ) - это стратегия, которая рано или поздно обречена на провал. Что делать, если у вас есть два mysqld работает? Забудьте об этом подходе. Вы можете временно сделать все правильно, и это может работать в течение года или двух, но затем происходит что-то, о чем вы не думали.
only the process id (pid) поистине уникально.
всегда хранить pid когда вы запускаете что-то в фоновом режиме. В Bash это можно сделать с помощью $! переменная Bash. Вы избавите себя от стольких хлопот, сделав это.
как определить, работает ли процесс (по pid)
теперь возникает вопрос, Как узнать, работает ли pid.
это POSIX и, следовательно, портативный. Он вернет сам pid, если процесс запущен, или ничего не вернет, если процесс не запущен. Строго говоря, команда вернет один столбец, pid , но поскольку мы дали пустой заголовок заголовка (материал, непосредственно предшествующий знаку равенства), и это единственный запрошенный столбец, команда ps не будет использовать заголовок вообще. Это то, что мы хотим, потому что это облегчает синтаксический анализ.
это будет работать на Linux,BSD, Solaris и т. д.
другой стратегией было бы проверить значение выхода из вышеуказанного . Он должен быть равен нулю, если процесс запущен и ненулевой, если это не так. Спецификация POSIX говорит, что ps должен выйти >0, если произошла ошибка, но мне неясно, что представляет собой "ошибка". Поэтому я лично не использую эту стратегию, хотя я уверен, что она будет работать также на всех платформах Unix/Linux.
на большинстве дистрибутивов Linux, вы можете использовать pidof (8).
он будет печатать идентификаторы всех экземпляров указанных процессов, или ничего, если нет запущенных случаях.
например, в моей системе (у меня есть четыре экземпляра bash и один раз remmina под управлением):
на других Юниксов, pgrep или комбинацию ps и grep достигнет того же самого, что и другие по праву указывать.
самый простой способ-использовать ps и grep:
Если ваша команда имеет некоторые аргументы команды, то вы также можете поместить больше "grep cmd_arg1" после "grep $command", чтобы отфильтровать другие возможные процессы, которые вас не интересуют.
пример: покажите мне, если какой-либо процесс Java с аргументом:
Это должно работать на большинстве вкусов Unix, BSD и Linux:
- SunOS 5.10 [отсюда PATH=. ]
- Linux 2.6.32 (CentOS)
- Linux 3.0.0 (Ubuntu)
- Дарвин 11.2.0
- FreeBSD 9.0-STABLE
- Red Hat Enterprise Linux ES выпуск 4
- Red Hat Enterprise Linux Server выпуска 5
просто незначительное дополнение: если вы добавите -c флаг для ps, вам не нужно удалять строку, содержащую процесс grep с grep -v далее. Т. е.
это все, что вам нужно для ввода в системе bsd-ish (включая MacOSX), вы можете оставить -u если вам нужно меньше информации.
о системе, где генетика родного ps командная точка обратно в SysV, вы бы использовали
для a список, содержащий больше, чем просто pid и имя процесса. Конечно, вы можете выбрать конкретные поля для печати с помощью .
собирая различные предложения вместе, самая чистая версия, которую я смог придумать (без ненадежного grep, который запускает части слов), это:
kill -0 не убивает процесс, но проверяет, существует ли он, а затем возвращает true, если у вас нет pidof в вашей системе, сохраните pid при запуске процесса:
затем в скрипте:
когда вы запустите его, его PID будет записан в $! переменной. Сохраните этот PID в файл.
затем вам нужно будет проверить, соответствует ли этот PID запущенному процессу. Вот полный скелет сценария:
на основе ответ of peterh . Трюк для зная, если данный ПИД работает в ps -o pid= -p $PID инструкция.
этот подход можно использовать в случае, если команды "ps", "pidof" и rest недоступны. Я лично очень часто использую procfs в своих инструментах/скриптах/программах.
небольшое объяснение, что происходит:
это выводит количество процессов, базовым именем которых является "chromium-browser":
если это печатает "0", процесс не выполняется. Команда предполагает, что путь процесса не содержит пробела. Я не тестировал это с приостановленными процессами или процессами зомби.
проверена с помощью gwak как awk альтернативы в Linux.
вот более универсальное решение с некоторым примером использования:
вот моя версия. Особенности:
- проверяет точное имя программы (Первый аргумент функции). поиск " mysql "не будет соответствовать запуску"mysqld"
- поиск аргументов программы (второй аргумент функции)
это удаляет возврат каретки, созданный терминалом. Остальное можно объяснить этой пост.
следующая функция оболочки, основанная только на стандартных командах и параметрах POSIX, должна работать в большинстве (если не в любой) систем Unix и linux. :
обратите внимание, что он задохнется при передаче сомнительного имени команды "0]", а также не сможет идентифицировать процессы, имеющие встроенное пространство в их именах.
обратите внимание также, что наиболее загруженное и принятое решение требует не переносного ps options и безвозмездно использует оболочку, которая, несмотря на свою популярность, не гарантируется присутствие на каждой машине Unix / Linux ( bash )
В общем, мне нужно было как-то примитивно проверить запущена ли программа, а если нет, то запустить её. Да, есть программы для мониторинга всего этого дела (например, mon), но ставить их из-за одной программы не хотелось, поэтому написал небольшой скрипт.
Для начала смотрим запущена программа или нет:
После этого нужно написать условие проверки и запуска программы.
if [ "$ret" -eq 0 ] - если ( if ) значение переменной (ключ -eq означает равно) равно 0, то ( then ):
echo "Running Htop" - выводим текст: "Запускается Htop";
sleep 1 - ставим задержку при запуске в 1 секунду;
htop - запускаем программу Htop;
exit 1 - выходим из скрипта;
Иначе ( else ):
echo "EXIT. Htop already running!" - выводим текст: "Htop уже запущен!"
exit 1 - выходим из скрипта.
Конструкция "Если. то. иначе. " обязательно заканчивается fi ;
Писать на Bash несложно, а также весьма увлекательно, в прочем, как и все в программировании. Так что попробуйте сами что-нибудь написать, у вас обязательно получится. Тем более, что по bash полно всякой документации, в том числе и на русском языке.
if [ "$ret" -eq 1 ] вот так работает с нулем всегда считает запущенным так как сама команда греп создает процесс и таким именем
В пояснении к скрипту написано, как исключается из списка процессов сам grep.
Не спорю возможно 🙂 но моя убунта 14.04 упорно считала сама себя 🙂
Что у Вас выводит эта команда?
Походу ничего не выводит, скобки не воспринимает. Это урезанная pxe сборка для загрузки по nfs. А вот на основном серве с полноценной инсталяшкой все работает для интересу проверил.
Если htop не запущен, команда и не должна ничего выводить. Скобки служат для исключения grep из вывода.
Скорее всего, grep у Вас работает как раз верно, не смотря на сборку.
Чё-то как-то сложновато у вас всё. Вот как я сделал бы:
Проверено на труъ убунте в bash и sh.
А ps aux | grep [t]op выдаёт лично у меня нечто со словами org.freedesktop.
Спасибо за полезный комментарий!
Однако, справедливости ради замечу, что когда ты админишь сервера, то посмотреть вывод ps намного проще и быстрее, чем городить конструкции из if-условий 🙂 В скрипте, согласен, так выглядит элегантнее.
В 10.6 также не работает, поэтому я просто написал юнит для systemd для своего python-скрипта, чтобы автоматом перезапускался, если вдруг упадет.
Как проверить, запущена ли заданная программа?
Здравствуйте, дорогие программисты! Помогите сделать программу, которая будет проверять включена ли.
Как проверить, запущена ли заданная программа
Помогите сделать программу каторая все время будет проверять включена ли программа каторая задана.
Как проверить с какими правами запущена программа ?
Как на С проверить с какими правами запущена программа (от имени user или admin ) Если.
Как проверить, что программа запущена (избежать повторного запуска)?
Знаю, что можно с помощью FindWindow, но вдруг FindWindow найдет просто другую программу с похожим.
если демон не запущен, то можете его запустить с помощью
Добавлено через 1 минуту
Как проверить, что программа запущена (избежать повторного запуска)?
Знаю, что можно с помощью FindWindow, но вдруг FindWindow найдет просто другую программу с похожим.
Проверить, запущена ли программа
Такая ситуация у меня свой сервер на нем стоит программа, и она по каким то причинам сама.
Проверить запущена ли программа от имени администратора
Для работы моей программы нужно что бы она была запущена от имени администратора иначе происходит.
Проверить от какого пользователя запущена программа
Можно ли проверить от какого пользователя запущена программа? Просто для моей программы нужен.
Помогите проверить запущена ли программа и слушает ли она порт
Собственно ситуация такая: Есть необходимость сделать на С++ программу, которая будет проверять.
Читайте также:
- Что значит телега facebook сообщение вконтакте мессенджер telegram это приложения для видеозвонков
- Как заказать яндекс такси в гомеле по приложению
- Почему не устанавливается приложение вайлдберриз на андроид
- Какое приложение надо скачать для колонки алиса
- Какая должна быть как правило длительность приложения полного испытательного напряжения для слоистых