![cloud-init 中的 `sudo` 命令很慢!如何解决?](https://linux22.com/image/740973/cloud-init%20%E4%B8%AD%E7%9A%84%20%60sudo%60%20%E5%91%BD%E4%BB%A4%E5%BE%88%E6%85%A2%EF%BC%81%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%EF%BC%9F.png)
我正在尝试使用 bash 用户数据引导 Centos7 EC2 实例 (ami-02eac2c0129f6376b)。由于它以 root 身份运行,并且我需要以 centos 用户身份创建很多东西,所以我使用了sudo -Hu centos <cmd>
很多次。每次调用都会带来 25 秒的延迟。我有数百次。我该怎么做才能加快速度?
这是一个已知问题,但我找不到任何解决方案。
我努力了:
- 添加并
/etc/hosts
输入我的主机名
printf "\n127.0.0.1 %s %s\n" "$(hostname -f)" "$(hostname -s)" | tee -a /etc/hosts
- 从 /etc/nsswitch.conf 中删除 myhostname
sed -Ei 's/\s*myhostname//' /etc/nsswitch.conf
这些延迟非常痛苦,因为我目前正处于构建新的用户数据脚本的反复试验阶段。
我能做些什么?
答案1
虽然最好找出sudo
速度慢的原因并解决它,但您可以将命令组合在一起,只调用一次 sudo。在脚本中,您可以执行以下操作:
sudo -Hu centos bash <<EOF
somecommand
somecommand2
morecommands
EOF
答案2
ASELinux 政策中的错误RHEL 和 CentOS 7 附带的 导致 sudo 在每个命令上等待整整 25 秒。此错误已通过此selinux-policy-3.13.1-229.el7_6.10
软件包修复。您应该创建一个更新了此软件包(最好是整个系统)的新 AMI。