我正在尝试在多台AWS EC2计算机上设置一个cron,并希望立即在所有这些计算机上运行命令,并使用以下shell脚本:
#!/bin/sh
cd /etc/cron.daily
touch ecs.sh
echo '#!/bin/sh' > /etc/cron.daily/ecs.sh
echo 'sudo yum update -y ecs-init' >> /etc/cron.daily/ecs.sh
echo 'sudo yum update -y' >> /etc/cron.daily/ecs.sh
sudo chmod 755 /etc/cron.daily/ecs.sh
cd ~
(crontab -u root -l; echo '0 0 * * * /etc/cron.daily/ecs.sh') | crontab -u root -
sudo yum update -y
不起作用的部分是:chmod 755 /etc/cron.daily/ecs.sh
我不确定,我错过了什么。
答案 0 :(得分:0)
如果您可以(有足够的权限)创建文件,则无需0755
将其权限更改为>
。这也可能会提示您输入密码并以非交互方式运行,这可能是未采取措施的原因。
另一方面,如果运行它的用户没有必要的(写入)权限,则创建文件的前一行也不会发生。
您也不需要触摸文件,因为cd
重定向会创建它(总是一个新的)。
您也不应该touch
某处并继续执行操作而不检查目录是否按预期更改。但是,由于在所有操作中,除了使用绝对路径名称的不必要cd
之外,您还可以省略>
行。
如果您清理脚本并且它仍然没有执行预期的操作,那么保存其输出可能很有用(假设是非交互式执行)(重定向标准1>)
(或2>
和错误({{1}})输出到文件)并检查它是否有错误。