我正在尝试编写一个 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
我相信