Linux 编写一个命令以终止名称包含“的第一个进程”;ca";?只有第一个流程具有;ca“;在其’;名字必须被杀,而不是其他人?

Linux 编写一个命令以终止名称包含“的第一个进程”;ca";?只有第一个流程具有;ca“;在其’;名字必须被杀,而不是其他人?,linux,bash,Linux,Bash,刚接触linux,我正在努力学习更多,我遇到了这种情况 我曾尝试使用ps命令和grep来捕获“ca”,但它会返回每次出现的“ca”,无论它来自何处,实际上对我没有帮助 我尝试过这个解决方案,但不起作用 ps aux | grep ca find out the process id and issue kill <process number> ps aux|grep ca 找出进程id 并发出杀戮信号 但grep将捕获所有“ca”,无论它在哪里,进程名、目录和任何内容 我应该做

刚接触linux,我正在努力学习更多,我遇到了这种情况

我曾尝试使用ps命令和grep来捕获“ca”,但它会返回每次出现的“ca”,无论它来自何处,实际上对我没有帮助

我尝试过这个解决方案,但不起作用

ps aux | grep ca
find out the process id
and issue kill <process number>
ps aux|grep ca
找出进程id
并发出杀戮信号
但grep将捕获所有“ca”,无论它在哪里,进程名、目录和任何内容

我应该做些什么来实现我所需要的。提前谢谢

 kill `ps -aux | sed "s/\s\+/ /g" | cut -d ' ' -f2,11 | sed "s/ .*\// /g" | grep ca | head -1 | cut -d' ' -f1`
  • 使用cut从ps中提取pid和命令名
  • 从命令名中删除路径
  • 加州大学格雷普
  • 仅选择第一个结果
  • 仅选择pid列
  • 将pid作为第一个参数传递给kill

  • 这应该可以做到:

    pkill -o ca
    
    pkill
    -o
    选项将终止最早的匹配进程。要获取最新版本,请使用
    -n
    选项:

    pkill -n ca
    
    注意
    pkill
    采用一种模式,因此,如果您希望获得以“ca”开头的流程,也可以这样做:

    pkill -o ^ca
    

    无法保证具有匹配“ca”的第一个进程始终是您想要的进程。请说明您的具体要求。您可以检查
    pgrep
    命令以满足您的需要。@Niati Arora:我建议您考虑一下。概括的情况会发生。PID可以回收利用。“排名第一”通常可能是最老的,但它并不总是最老的;无论如何,访问手册页提供了更好的解决方案!确实好多了