top и grep ничего не выводят при запуске из сценария оболочки - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь создать сценарий оболочки, который sh, на удаленном сервере, запустить там сценарий и распечатать вывод на локальном сервере, но когда я запускаю сценарий на локальном сервере, он большую часть времени ничего не выводит и редко выводит данные:

Mule: CPU > % RAM > %

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

Mule: CPU > 39.0% RAM > 8.1%

скрипт на локальном сервере

#!/bin/bash
echo -e '\r' 
echo 'leg3'
echo -e '\r'
ssh  -qT appread@${remote} << EOF
source /home/appread/Process_mon.sh 
exit
EOF

скрипт на удаленном сервере:

#!/bin/bash
mulecpu=$(top -b -n 1 -c  | grep  -P '.*[j]ava.*mule.*'|  awk '{print $9}')
muleram=$(top -b -n 1 -c  | grep -P '.*[j]ava.*mule.*'|  awk '{print $10}')
m=$(echo 'Mule: CPU > '$mulecpu'% RAM > '$muleram'% ')
echo $m

1 Ответ

1 голос
/ 06 марта 2020

Если вы запустите top без -w, его вывод может быть обрезан, и ваш grep может завершиться с ошибкой.

Добавить -w 512 или аналогичный для максимизации ширины вывода:

#!/bin/bash

top -b -n 1 -c -w 512 |\
awk '/[j]ava.*mule/ { printf "Mule: CPU > %s%% RAM > %s%%\n",$9,$10 }'


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...