Установить переменную в результат команды деления и вычитания

В первую очередь я бы проверил приоритет процессов, запущенных на серверах.

ps -eo pid,ppid,ni,comm

Затем я бы изменил значение nice на самое высокое в вашем процессе node.js, чтобы увидеть, есть ли какие-либо улучшения.

renice -n -12 -p (PID вашего node.js)

3
29.06.2020, 18:12
2 ответа

Вот так (больше не используйте устаревшееexpr):

dayleft=$(( arithmetic expression ))

Если вам нужны числа с плавающей запятой в , используйте вместо :

dayleft=$(bc -l <<< "scale=2; 100/3")

Как заявил Stéphane Chazelas в комментариях, ksh93, zshи yashподдерживают числа с плавающей запятой в пределах $((...))и ((...)).

expr— это программа, используемая в древнем шелл-коде для выполнения математических операций. В оболочках Posix, таких как bash, используйте $(( expression )). В bash, ksh88+, mksh/pdksh или zsh вы также можете использовать (( expression ))илиlet expression


((...))— это арифметическая команда, которая возвращает статус выхода 0, если выражение не равно нулю, или 1, если выражение равно нулю. Также используется как синоним слова «пусть», если необходимы побочные эффекты (назначения ). См.http://mywiki.wooledge.org/ArithmeticExpression


$((...))— арифметическая замена. После выполнения арифметических действий все это заменяется значением выражения. См.http://mywiki.wooledge.org/ArithmeticExpression


Подстановка команд:"$(cmd "foo bar")"вызывает выполнение команды 'cmd' с аргументом 'foo bar', и "$(..)"заменяется выходными данными. См.http://mywiki.wooledge.org/BashFAQ/002и http://mywiki.wooledge.org/CommandSubstitution

.

Избегайте использования переменных ВЕРХНИЙ РЕГИСТР , они зарезервированы для системного использования


Наконец

expiryepoch=$(date --date="$expirydate" +%s)
todayepoch=$(date --date="$todaysdate" +%s)
dayleft=$(bc <<< "scale=2; (todayepoch - expiryepoch) / 86400")
4
18.03.2021, 23:23

Вы должны выйти за скобки, и между ними и цифрами должен быть пробел. В противном случае оболочка считает, что здесь нужно запустить подоболочку :

.
DAYSLEFT=$(expr \( $EXPIRYEPOCH - $TODAYEPOCH \) / 86400 )
3
18.03.2021, 23:23

Теги

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