Shell脚本错误:如何在Shell脚本中更改文件的权限

时间:2018-02-09 21:16:39

标签: bash shell cron

我正在尝试在多台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 我不确定,我错过了什么。

1 个答案:

答案 0 :(得分:0)

如果您可以(有足够的权限)创建文件,则无需0755将其权限更改为>。这也可能会提示您输入密码并以非交互方式运行,这可能是未采取措施的原因。

另一方面,如果运行它的用户没有必要的(写入)权限,则创建文件的前一行也不会发生。

您也不需要触摸文件,因为cd重定向会创建它(总是一个新的)。

您也不应该touch某处并继续执行操作而不检查目录是否按预期更改。但是,由于在所有操作中,除了使用绝对路径名称的不必要cd之外,您还可以省略>行。

如果您清理脚本并且它仍然没有执行预期的操作,那么保存其输出可能很有用(假设是非交互式执行)(重定向标准1>)(或2>和错误({{1}})输出到文件)并检查它是否有错误。