【发布时间】:2013-07-05 13:20:17
【问题描述】:
使用非特权用户帐户,使用 bash,我可以做到:
sudo /bin/sleep 6000
然后用 Ctrl-c 杀死它。但是,从另一个终端发送 SIGINT 或 SIGKILL 将无法达到此目的。
有人知道这是为什么吗?例如,我希望能够终止发送信号的进程,以便在脚本中使用。
问候。
【问题讨论】:
-
您确实以超级用户的身份致电
kill,不是吗?否则你将无权终止进程。
使用非特权用户帐户,使用 bash,我可以做到:
sudo /bin/sleep 6000
然后用 Ctrl-c 杀死它。但是,从另一个终端发送 SIGINT 或 SIGKILL 将无法达到此目的。
有人知道这是为什么吗?例如,我希望能够终止发送信号的进程,以便在脚本中使用。
问候。
【问题讨论】:
kill,不是吗?否则你将无权终止进程。
您只能向使用相同 UID 运行的进程发送信号(除非发送进程以 root 身份运行)。当您使用sudo 时,新进程以root 身份运行,但如果您尝试杀死它,您将以普通用户ID 运行。你必须使用sudo kill PID 来杀死它。
从终端控制字符发送的信号被特殊处理:它们可以发送到与终端在同一登录会话中运行的任何进程。
【讨论】: