如何杀死后台作业?

如何杀死后台作业?

我知道如何用kill杀死一个作业,%(number)但是是否有可能将一个作业作为后台作业杀死,问题是“tail作为后台作业杀死?”

答案1

有几个指定职位的方法,包括%foo指定命令以 开头的作业foo%?foo指定命令包含子字符串 的作业foo。您需要指定一个明确的前缀或子字符串:如果多个字符串匹配,shell 会报告错误。这是 POSIX 功能。

kill %tail

(注意,这是专门杀死当前shell的一个后台作业。如果你想杀死全部 tail以您的用户身份运行的进程,无论它们是否是当前 shell 的作业,您都可以使用pkill。显然,对于诸如 之类的常见实用程序tail,这可能会造成附带损害;首先使用相同的参数运行pgrep命令,看看会杀死什么。)

答案2

像任何其他进程一样杀死它应该有效:

pkill tail

不过,如果您想小心一点,您可以提前使用 top、htop 或 ps 检查 PID。

答案3

有很多方法可以做到这一点:

如果你知道<port>号码

netstat -anp | grep :<port> | awk '{print $7}' | awk -F'[/]' '{print $1}' | grep -v "-" | xargs -I % kill -9 %

如果您知道<path>文件描述符

cat <path> | xargs -I % kill -9 %

如果你知道<process>名字

pkill -f <process>

如果您知道部分进程名称为<pattern>

使用psgrep

ps -ef | grep '<pattern>' | grep -v grep | awk '{print $2}' | xargs -r kill -9

这将杀死所有与<pattern>

ps与以下一起使用awk

ps -ef | awk '/<pattern>/ && !/awk/ {print $2}' | xargs -r kill -9

这将杀死所有与<pattern>

相关内容