我有一个在Linux上(Ubuntu Server 16.04 LTS)运行的.net core 2.0程序。
我试图通过调用以下命令的进程关闭计算机:sudo shutdown -h now
,但当程序以守护进程服务方式在后台运行时,关闭进程无法正常工作。
以下是代码:
var process = new Process
{
StartInfo =
{
CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
UseShellExecute = false,
FileName = Environment.GetEnvironmentVariable("SHELL"),
Arguments = "-s"
},
EnableRaisingEvents = true
};
if (process.Start())
{
process.BeginErrorReadLine();
process.BeginOutputReadLine();
process.StandardInput.WriteLine("sudo shutdown -h now");
}
我的假设是该服务作为单独的会话运行,因此它没有任何控制权。当应用程序作为Linux守护进程运行时,如何让计算机关机?
sudo
的特权 - 或者sudo
启动但立即提示输入密码,因此它处于空闲状态。 - Dai