sudo在shell脚本执行的问题
sudo的执行需要tty。
如果将sudo service命令写在shell脚本中,通过程序方式调用,是不会执行的。
但是centos6.4中比较坑人的是"sorry, you must have a tty to runsudo"这个错误不知道为什么没有报出来,也没有写到日志中,结果浪费了一天的时间去查找原因。
如果修改/etc/sudoers,将Defaults requiretty,修改为 #Defaults requiretty,表示不需要控制终端,也可以在shell的脚本中通过程序直接执行sudo service。
由于centos的程序所拥有的权限是和运行的它的用户一样的,所以,service启动的服务是属于root用户的,如果需要服务程序调用需要sudo权限的脚本,不要写sudo在前面,直接写语句就可以了。