Журнал, если процесс активен или нет

Если вы нажмете на значок, перетащите его за панель (вправо), а затем поместите туда, где хотите, чтобы она работала. Вы просто не можете щелкнуть и перетащить в панель, иначе вы получите результаты, которые вы описали, где логотипы просто прокручиваются вверх и вниз по панели

1
задан 12 January 2018 в 14:24

2 ответа

Вы можете использовать, например. pgrep для поиска процессов с определенным именем.

В качестве примера я могу проверить, работает ли музыкальный проигрыватель Rhythmbox, набрав это:

$ pgrep rhythmbox 827

Если какие-либо цифры напечатаны (а статус выхода равен 0), это означает, что он нашел соответствующий процесс. В противном случае вывод будет пустым, и вы получите ненулевой статус выхода.

Теперь мы можем просто запускать это снова и снова в бесконечном цикле. Чтобы сэкономить ресурсы, мы ждем секунду между каждой итерацией. В зависимости от того, найден ли процесс сопоставления или нет, этот маленький скрипт ниже будет либо писать yes, либо no в файл status.txt.

#!/bin/bash while sleep 1 ; do if pgrep rhythmbox &>/dev/null ; then echo "yes" > status.txt else echo "no" > status.txt fi done

Вы также можете сделать что-нибудь более полезное внутри цикла, например, переключение символических ссылок между двумя готовыми html-документами. Предположим, что мы имеем running.html и stopped.html и хотим иметь правильный один из тех, которые связаны как status.html, которые затем могут обслуживаться вашим веб-сервером. Это может выглядеть так:

#!/bin/bash while sleep 1 ; do if pgrep rhythmbox &>/dev/null ; then ln -s running.html status.html else ln -s stopped.html status.html fi done

Я не тестировал, как веб-сервер может реагировать на это переключение ссылок, возможно, также возможно, что он кэширует материал, и изменения не будут немедленно переданы , без понятия. Вы должны попробовать.

1
ответ дан 17 July 2018 в 23:16

Вы можете использовать, например. pgrep для поиска процессов с определенным именем.

В качестве примера я могу проверить, работает ли музыкальный проигрыватель Rhythmbox, набрав это:

$ pgrep rhythmbox 827

Если какие-либо цифры напечатаны (а статус выхода равен 0), это означает, что он нашел соответствующий процесс. В противном случае вывод будет пустым, и вы получите ненулевой статус выхода.

Теперь мы можем просто запускать это снова и снова в бесконечном цикле. Чтобы сэкономить ресурсы, мы ждем секунду между каждой итерацией. В зависимости от того, найден ли процесс сопоставления или нет, этот маленький скрипт ниже будет либо писать yes, либо no в файл status.txt.

#!/bin/bash while sleep 1 ; do if pgrep rhythmbox &>/dev/null ; then echo "yes" > status.txt else echo "no" > status.txt fi done

Вы также можете сделать что-нибудь более полезное внутри цикла, например, переключение символических ссылок между двумя готовыми html-документами. Предположим, что мы имеем running.html и stopped.html и хотим иметь правильный один из тех, которые связаны как status.html, которые затем могут обслуживаться вашим веб-сервером. Это может выглядеть так:

#!/bin/bash while sleep 1 ; do if pgrep rhythmbox &>/dev/null ; then ln -s running.html status.html else ln -s stopped.html status.html fi done

Я не тестировал, как веб-сервер может реагировать на это переключение ссылок, возможно, также возможно, что он кэширует материал, и изменения не будут немедленно переданы , без понятия. Вы должны попробовать.

1
ответ дан 24 July 2018 в 13:47
  • 1
    Я пробовал это, точный код, который я использовал, это #!/bin/bash while sleep 1 ; do if pgrep java &>/dev/null ; then echo "<html><title>yes</title><body>yes</body>" > /var/www/html/stat.html else echo "<html><title>no</title><body>no</body>" > /var/www/html/stat.html fi done . Но он сказал, что java активен, и когда я сделал killall java, он не обновлялся и сказал, что Java неактивна – Joeri 12 January 2018 в 19:19
  • 2
    Возможно, вам придется приспособить свою команду pgrep к тому, что вы хотите. Если вы просто запустили pgrep -a java, проверьте, соответствует ли это правильно. (-a просто показывает командную строку, а не только идентификатор процесса на выходе). Вы также можете попробовать добавить -f в соответствие с полной командной строкой, а не только с именем процесса, например pgrep -fa java. – Byte Commander 12 January 2018 в 19:30
  • 3
    Я обнаружил, что я сделал неправильно, это было не java, а затем процесс, но только процесс – Joeri 12 January 2018 в 19:59

Другие вопросы по тегам:

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