Сброс подкачки Ansible в Linux

В отличие, например, от Python, bcне поддерживает цепочечные сравнения:

a < b < c

Чтобы выполнить оба сравнения и потребовать, чтобы оба были истинными, используйте логическое -и (требует GNU bc):

(a < b) && (b < c)

Например:

$ a=104.9; b=136; c=136.9; if echo "($a < $b) && ($b < $c)" | bc -l | grep -q 1; then echo True; else echo False; fi
True
$ a=104.9; b=137; c=136.9; if echo "($a < $b) && ($b < $c)" | bc -l | grep -q 1; then echo True; else echo False; fi
False

POSIX до н.э.

Если у вас нет GNU bc, вы можете заменить логическое -и умножением:

$ a=104.9; b=136; c=136.9; if echo "($a < $b)*($b < $c)" | bc -l | grep -q 1; then echo True; else echo False; fi
True
$ a=104.9; b=137; c=136.9; if echo "($a < $b)*($b < $c)" | bc -l | grep -q 1; then echo True; else echo False; fi
False
2
21.10.2019, 16:59
2 ответа

Как сбросить пространство подкачки, если размер используемого подкачки превышает 100 МБ

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

Сначала возьмите пространство подкачки из системы:

- name: Grab the swap space used (in megabytes)
  shell: free -m | grep Swap | awk '{print $2}'
  register: swap_used

Затем включайте и выключайте подкачку, только если пространство подкачки _превышает пороговое значение.

- name: Turn off swap
  shell: "swapoff -a"
  when: (swap_used.stdout_lines[0] | int) > 100

- name: Turn on swap
  shell : "swapon -a"
  when: (swap_used.stdout_lines[0] | int) > 100
1
27.01.2020, 22:16

Использование фактов:

- name: Reset swap 
  shell: "swapoff -a && swapon -a"
  when: ansible_memory_mb['swap']['total'] > 100
0
27.01.2020, 22:16

Теги

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