我正在尝试从 PHP 关闭一台 Ubuntu 机器,但如果我想延迟关机,就会遇到问题。
我使用的 PHP 行是:
exec("sudo shutdown -h +5 &", $output);
其中 5 代表我想要关机的未来几分钟。
我的问题是,这不会在后台运行,并且 Apache 会挂起,直到机器关闭或其他人取消关机。shell_exec() 有相同的结果。
有没有其他方法可以立即返回?
答案1
我强烈反对允许你的设置提升 sudo 级别权限……
无论如何:
将“sudo shutdown -h”放入脚本文件中。
然后运行at
(调度程序)
at -f /shutdown/script `date +%H:%M --date "now + 5 minutes"`
由于您使用的是 PHP,因此用 PHP 进行时间计算可能更有意义:
$time = date('H:i', strtotime('+5 minutes'));
exec('at -f /shutdown/script $time');