Как Warner говорит выше, ребенок ssh демона (который является оболочкой входа в систему, и это - дети), доберется SIGHUP
, но они не получат их немедленно. Будет задержка, иногда в минутах, прежде чем ssh демон на стороне сервера разочаруется в Вашем соединении. В течение того времени процесс продолжит работать.
Как Сигнализатор, также сказанный, процесс может принять решение проигнорировать SIGHUP
, в этом случае это продолжит работать, пока это не должно будет запросить вход и затем найти STDIN
закрылся.
for i in $(ps aux | awk '/activemq/ {print $2}' | sort -gu); do netstat -lp | grep $i; done
tcp 0 0 localhost:32000 *:* LISTEN 23059/java
tcp6 0 0 HPM.DMZ:61616 [::]:* LISTEN 23059/java
tcp6 0 0 [::]:8161 [::]:* LISTEN 23059/java
tcp6 0 0 [::]:36168 [::]:* LISTEN 23059/java
было короче, но это называет netstat многократно.
Этот будет немного более кратким; это проверяет, которые являются pids названных процессов".*activemq.*
"и после того, как это проверяет их открытые порты:
netstat -lp | grep $(ps aux | awk '/[a]ctivemq/ {print $2}')
Можно добавить фильтр uniq, если Вы должны:
netstat -lp | grep $(ps aux | awk '/[a]ctivemq/ {print $2}' | sort -u)
ОТРЕДАКТИРОВАННЫЙ НА ОСНОВЕ КОММЕНТАРИЕВ JOE:
Joe Nazz записал:
Это не работает. Результатом" "" $ (PS aux | awk '/ctivemq/{печатают 2$}' | вид-u)""" являются несколько строк, которые не может распознать grep. Это не прибывает "Такой файл или dir..." –
Вы правы, Если существует несколько процессов, мы должны работать немного больше в regexp выражении нашего grep.
Таким образом, для хранения моей команды run-netstat-just-once, выражение должно быть чем-то подобным:
~# netstat -lp | grep $(ps aux | awk '/[a]pache/ {a=a"\|"$2} END { sub(/^../,"",a); print "("a")"}')
Команда создает regexp для соответствия каждому pid апача (я использую apache2 в качестве много процесса экземпляра для соответствия потребностям). Как Вы будете видеть в следующем выражении, regexp создал попытки соответствовать каждому pid апача:
~# ps aux | awk '/[a]pache/ {a=a"\|"$2} END { sub(/^../,"",a); print "("a")"}'
(7335\|7336\|7337\|7338\|7339\|8733\|8744\|13418\|13421\|23126)
– Joe Nazz записал:
[...], Но что делает сингл в средних скобках? –
О Вашем вопросе, связанном того, почему я использовал в regexp, это - очень старый прием, чтобы не соответствовать процессу, созданному regexp это сам. Следующий пример сам объяснительный:
~# ps aux | grep foo
root 10932 0.0 0.0 9608 868 pts/0 S+ 11:42 0:00 grep foo
~# ps aux | grep "[f]oo"
~#
PS: если Вы чувствуете, что этот ответ был полезен, не оставляйте не проголосовавшими
Это получает "activemq" pids, тестирует тот, был возвращен, выполняет netstat однажды.
pids=`ps -eo 'pid,args' | awk '/activemq/ && !/awk/ {print $1}'`
test -n "${pids}" && netstat -lp | egrep -w "(`echo ${pids} | tr ' ' '|'`)"