Linux 强制终止进程 shell管道

现在有进程PID为1234,通过kill 1234发现不能终止进程。但是此进程的用户身份和当前登录用户一致,以下哪个命令可以强制终止进程。 10分

A.
sudo kill 1234
B.
kill -l 1234
C.
kill -s SIGTERM 1234
D.
kill -s SIGKILL 1234

如果PID为1211的进程,其所属用户为xyz,并且此进程注册了SIGTERM、SIGINT、SIGABRT等信号的处理,收到这些信号不会退出。

如果已登录用户oklinux(具备运行sudo的权限),想要终止此进程,以下哪个命令可以完成。 10分

A.
kill -s SIGSTOP 1211
B.
kill -s SIGKILL 1211
C.
sudo kill -s SIGTERM 1211
D.
sudo kill -s SIGKILL 1211

shell中 | 表示管道,可以组合命令的输出和输入。关于管道的描述,正确的是 10分

A.
管道是shell软件提供的功能,和Linux内核无关。
B.
第一个进程的输出全部输出到管道之后,第二个进程才会从管道读取数据。
C.
第一个进程的输出重定向到管道,第二个进程的输入重定向到管道。
D.
在shell中遇到|,是命令自己创建的,不是shell创建的。

强制终止进程:kill -s SIGKILL 1234,也可以kill -9 1234
强制终止他人进程:sudo kill -s SIGKILL 1211,SIGTERM 效果等同于不带 -9 的 kill 命令,非强制
第一个进程的输出重定向到管道,第二个进程的输入重定向到管道。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    回答:

    1. 可以尝试使用kill命令加上-9参数来强制终止指定PID的进程,具体命令为:
    sudo kill -9 1234
    

    若该命令无效,则可以尝试使用pkill命令,也加上-9参数,具体命令为:

    sudo pkill -9 -u username process_name
    

    其中username为该进程所属的用户名,process_name为该进程的名称。使用pkill命令时可以一次性终止所有满足条件的进程(如某个用户下的所有进程),如果要指定精确的PID进行终止,则可以使用pgrep命令先查找出对应的PID,然后再用kill命令进行终止。

    1. 可以使用以下命令来以指定用户身份来终止对应进程:
    sudo -u xyz kill PID
    

    其中PID为该进程的PID。使用sudo -u来指定以xyz用户的身份来执行kill命令。另外,如果该进程已经设置了处理程序来捕捉信号(如SIGTERM、SIGINT、SIGABRT等),则可以使用kill命令加上-SIGNAL参数来指定发送对应的信号,比如:

    sudo -u xyz kill -SIGTERM PID
    
    1. 管道是一种将前一个命令的输出作为后一个命令的输入的方式,正确的描述应该是: D. 一个管道就是由一个或多个命令组合而成的序列。每个命令的输出通过管道传递给下一个命令的输入,每个命令都在其自己的进程中执行。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^