为什么这个用于删除缓存的 bash 脚本不起作用?

为什么这个用于删除缓存的 bash 脚本不起作用?

我正在尝试编写一个 bash 脚本来清除我的 RAM 缓存。

以下是我目前所掌握的信息:

#! /bin/bash

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

但它不能完全工作。前三个命令运行正常,但在第四个命令时它退出。

请解释。

答案1

sudo -s创建登录 shell 会话。然后退出后,您将返回到普通用户身份。然后它执行第 4 行,但此时您不是 root 用户,因此失败。

您不能简单地将 sudo 放在 echo 语句前面,因为那是一个内置命令。

所以尝试一下这个:

#!/bin/bash

free -m
sync
sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

男人须藤

-s [命令]
     -s(shell)选项运行 SHELL 指定的 shell
如果设置了环境变量,或者 passwd(5) 中指定的 shell。
如果指定了命令,则该命令将被传递给 shell 执行。
否则,将执行交互式 shell。

答案2

使用非 su 命令后使用 sudo 命令或将 sudo 命令移至另一个脚本。您可以对它们进行计时(例如释放内存)

echo "free -m" | at 7:00

我相信

相关内容