问题背景:
1.使用su root进入root账户
修改/etc/sudoers权限 777
%sudo ALL=(ALL:ALL) ALL改为
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
%表示组 即sudo组的都可以免密码使用sudo指令(其实有点危险啊)
2.usermod -G sudo www-data sudo
将执行php页面的用户www-data加入sudo组中
3.重启apache
在ubuntu中是/etc/init.d/apache2 restart
4.exec('sudo killall -9 judged 2>&1 ',$output,$ans);可以将报错信息重定向输出到$output变量中
5.如果想在后台运行 php页面不等待的写法
system("sudo ./restart.sh >>/home/important/judgeonline2017core/log/newfile.txt &");
必须要把输出的信息重定向到文件才可以!!要不然那个脚本不运行完 网页就一直转圈圈 刷新就崩 但是pid变了
MD太菜了 这么个小功能加了两天才写完
经历的一个小插曲是:
www-data执行sudo不是得输入密码么 但是PHP执行脚本没地方让你输入啊 就得改sudoers文件 这个文件正常权限是440只读的 我是用sudo chmod 777修改的 然后加了免密码 nopasswd: all那行以后 再sudo chmod 440就保存了 因为sudoers文件必须是440的时候sudo命令才能用嘛 不用sudo我连重启进去安全模式都不能做 就只能去机房强制关机 然后我跟我导说这个事 他说你干嘛用sudo su root使用root账号就得了呗 学艺不精