Я пытаюсь создать скрипт bash, чтобы очистить кэш ОЗУ.
Вот что у меня есть:
#! /bin/bash
free -m
sync
sudo -s
echo 3 > /proc/sys/vm/drop_caches
Но это не совсем работает. Первые три команды работают отлично, на четвертой команде они выходят.
Пожалуйста, объясните.
sudo -s
создает сеанс входа в систему. Затем, после того как вы выйдете, вы снова станете обычным пользователем. Затем он выполняет 4-ю строку, но в этот момент вы не являетесь пользователем root, поэтому происходит сбой.
Вы не можете просто вставить sudo перед оператором echo, так как это встроенная команда.
Так что попробуйте это вместо:
#!/bin/bash
free -m
sync
sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
Из man sudo :
-s [command] The -s (shell) option runs the shell specified by the SHELL environment variable if it is set or the shell as specified in passwd(5). If a command is specified, it is passed to the shell for execution. Otherwise, an interactive shell is executed.blockquote>
Используйте команды sudo после использования команд non su или перемещения команд sudo в другой скрипт. Вы можете рассчитать их время (пример для освобождения памяти)