Может кто-нибудь сказать мне, почему это иногда не:Killing ошибки нескольких процессов
if [ $(pgrep -f agent.jar | wc -l) -gt 1 ]; then
kill $(pgrep -f agent.jar | grep -v $(pgrep -of agent.jar) | sort -n | uniq | awk '{printf $1" "}');
fi
Цель этой части кода заключается в следующем:
Проверьте, существуют ли дублирующие процессы. Обратите внимание на то, как я ссылаюсь на файл .jar вместо java, если другие приложения Java работают
Если обнаружены дубликаты, они получают идентификаторы процесса из последних дубликатов (т. Е. Оставляют оригинал) и пытаются убить дубликаты ,
Код отлично работает. Он обнаруживает дубликаты и убивает их, но иногда он поднимает третий процесс (возможно, grep pid или ps pid) и пытается его убить. Я не знаю, что такое случайный ПИД-анализ. Его единственное временное, поэтому я угадываю его часть линии убийства.
Вот пример ошибки
/start.sh: line 15: [: 3183: binary operator expected
Это в конечном счете, в конечном итоге бросает эту ошибку в терминал, который выглядит плохо. Возможно, можно игнорировать его, поскольку он в противном случае выполняет свою работу, но это будет неаккуратно, и есть вероятность того, что какое-либо другое условие нарушит сценарий, поэтому в идеале мне нужно его исправлять.
Спасибо за вашу помощь
Что в вашей линии 15? – konsolebox
kill $ (pgrep -f agent.jar | grep -v $ (pgrep -of agent.jar) | sort -n | uniq | awk '{printf $ 1 ""}'); – Atomiklan
Это не похоже на то, что на вашей линии 15. '[' нигде нет. – konsolebox