Gor*_*don 6 kill kill-process systemd systemctl
像这样杀死正在运行的守护进程 systemd 服务有什么区别:
kill -SIGKILL 3645
和
systemctl -s kill -SIGKILL 3645
其中 3645 是 systemd 服务的 pid。使用第一种方法有什么缺点吗?
Mic*_*ton 22
首先,您的systemctl
语法是错误的:systemctl kill
需要一个单位名称,而不是一个 PID,并且-s
需要一个信号名称。正如所写的,它不会做任何事情,只会给你一条错误消息:
Failed to parse signal string kill.
Run Code Online (Sandbox Code Playgroud)
如果你解决了这个问题,它会告诉你:
Failed to kill unit 3645.service: Unit 3645.service not loaded.
Run Code Online (Sandbox Code Playgroud)
正确的语法是:
systemctl kill -s SIGWHATEVER whatever.service
Run Code Online (Sandbox Code Playgroud)
显然,区别在于您可以根据 systemd 单元而不是 pid 向进程发送信号。因为一个单元可能运行多个进程,所以 systemd 可以向该单元下运行的所有进程发送相同的信号,事实上,这是默认的。该--kill-who=
选项可让您在必要时更改此设置。
但是,一般来说,养成向任何东西发送 SIGKILL 的习惯并不是一个好主意。您应该尽可能地正常停止您的服务,例如使用systemctl stop whatever.service
. SIGKILL 与kill -9
您可能听说过并被警告过的潜在破坏性相同。而且,如果您通过任一方法终止服务并且它被配置为自动重新启动,它可能会这样做。这可能是也可能不是你想要的,这取决于为什么您要发送kill信号。
归档时间: |
|
查看次数: |
38161 次 |
最近记录: |