Почему не работает этот скрипт для удаления кэшей?

Я пытаюсь создать скрипт bash, чтобы очистить кэш ОЗУ.

Вот что у меня есть:

#! /bin/bash

free -m
sync
sudo -s
echo 3 > /proc/sys/vm/drop_caches

Но это не совсем работает. Первые три команды работают отлично, на четвертой команде они выходят.

Пожалуйста, объясните.

0
задан 30 June 2012 в 03:26

2 ответа

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.
0
ответ дан 30 June 2012 в 03:26

Используйте команды sudo после использования команд non su или перемещения команд sudo в другой скрипт. Вы можете рассчитать их время (пример для освобождения памяти)

0
ответ дан 30 June 2012 в 03:26

Другие вопросы по тегам:

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