<commit_before>---
layout: post
title:  Linux下按名称杀死进程
date:   2016-11-13 12:34:56 +08:00
category: 每日小技巧
tags: Linux Shell 进程
comments: true
---

* content
{:toc}

一句即可

```
kill -9 $(ps aux | grep 'xxxx' | grep -v 'grep' | awk '{print $2}')
```

注意：`xxxx`是足够能唯一标识这个进程的特征词，一定要典型和详细的描述这个进程，避免误杀其他进程。
必要时可以使用不太明确的特征词来列出进程，以便查看其更为准确的特征信息

以`mongodb`为例，有时候需要在`mongos` `configsvr` `shardsvr`中定位到特定的那一个进程

```
$ ps aux | grep 'mongo' | grep -v 'grep'
root     52594  0.3  2.0 449780 38868 ?        Sl   19:08   0:00 /root/mongodb/bin/mongod --shardsvr --bind_ip 127.0.0.1 --port 27021 --replSet shard1 --oplogSize 1000 --dbpath /root/datas/mongodb/db/shard11 --logpath /root/datas/mongodb/logs/shard11.log --logappend --maxConns 10000 --quiet --fork --directoryperdb
root     52622  0.5  2.0 425244 39160 ?        Sl   19:08   0:00 /root/mongodb/bin/mongod --configsvr --bind_ip 127.0.0.1 --port 20000 --dbpath /root/datas/mongodb/db/config --logpath /root/datas/mongodb/logs/config.log --logappend --fork --directoryperdb
root     52660  0.2  0.4 322604  9024 ?        Sl   19:08   0:00 /root/mongodb/bin/mongos --configdb 127.0.0.1:20000 --bind_ip 127.0.0.1 --port 30000 --chunkSize 50 --logpath /root/datas/mongodb/logs/mongos.log --logappend --fork
```

从上面的查询结果可以看出，要杀死的进程分别为

```
kill -9 $(ps aux | grep 'mongod --shardsvr' | grep -v 'grep' | awk '{print $2}')
kill -9 $(ps aux | grep 'mongod --configsvr' | grep -v 'grep' | awk '{print $2}')
kill -9 $(ps aux | grep 'mongos --configdb' | grep -v 'grep' | awk '{print $2}')
```

这个例子简要说明了怎么更准确的区分进程名称
当然，经过翻阅 `mongodb` 官网说明 https://docs.mongodb.com/manual/reference/program/mongos/#bin.mongos
我们得知，对于杀死 `mongodb` 进程使用 `kill -9` 是错误的，正确的方式应该是 `kill -2`
而且，还有其他各种 `shutdown` 的方式，详情请参阅上述链接
还有这个链接 http://stackoverflow.com/questions/15884521/shutdown-mongos-for-upgrade

<commit_msg>Update 2016-11-13-Linux下按名称杀死进程.markdown<commit_after>---
layout: post
title:  Linux下按名称杀死进程
date:   2016-11-13 12:34:56 +08:00
category: 每日小技巧
tags: Linux Shell 进程
comments: true
---

* content
{:toc}

一句即可

```
kill -9 $(ps aux | grep 'xxxx' | grep -v 'grep' | awk '{print $2}')
```

注意：`xxxx`是足够能唯一标识这个进程的特征词，一定要典型和详细的描述这个进程，避免误杀其他进程。
必要时可以使用不太明确的特征词来列出进程，以便查看其更为准确的特征信息

以`mongodb`为例，有时候需要在`mongos` `configsvr` `shardsvr`中定位到特定的那一个进程

```
$ ps aux | grep 'mongo' | grep -v 'grep'
root     52594  0.3  2.0 449780 38868 ?        Sl   19:08   0:00 /root/mongodb/bin/mongod --shardsvr --bind_ip 127.0.0.1 --port 27021 --replSet shard1 --oplogSize 1000 --dbpath /root/datas/mongodb/db/shard11 --logpath /root/datas/mongodb/logs/shard11.log --logappend --maxConns 10000 --quiet --fork --directoryperdb
root     52622  0.5  2.0 425244 39160 ?        Sl   19:08   0:00 /root/mongodb/bin/mongod --configsvr --bind_ip 127.0.0.1 --port 20000 --dbpath /root/datas/mongodb/db/config --logpath /root/datas/mongodb/logs/config.log --logappend --fork --directoryperdb
root     52660  0.2  0.4 322604  9024 ?        Sl   19:08   0:00 /root/mongodb/bin/mongos --configdb 127.0.0.1:20000 --bind_ip 127.0.0.1 --port 30000 --chunkSize 50 --logpath /root/datas/mongodb/logs/mongos.log --logappend --fork
```

从上面的查询结果可以看出，要杀死的进程分别为

```
kill -9 $(ps aux | grep 'mongod --shardsvr' | grep -v 'grep' | awk '{print $2}')
kill -9 $(ps aux | grep 'mongod --configsvr' | grep -v 'grep' | awk '{print $2}')
kill -9 $(ps aux | grep 'mongos --configdb' | grep -v 'grep' | awk '{print $2}')
```

这个例子简要说明了怎么更准确的区分进程名称

当然，经过翻阅 `mongodb` 官网说明 https://docs.mongodb.com/manual/reference/program/mongos/#bin.mongos

我们得知，对于杀死 `mongodb` 进程使用 `kill -9` 是错误的，正确的方式应该是 `kill -2`

而且，还有其他各种 `shutdown` 的方式，详情请参阅上述链接

还有这个链接 http://stackoverflow.com/questions/15884521/shutdown-mongos-for-upgrade


{'fraction_non_alphanumeric': 0.16535646516671185, 'fraction_numerical': 0.09758742206560043, 'mean_word_length': 3.3208430913348947, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 8, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7484011', 'n_tokens_mistral': 2046, 'n_tokens_neox': 1878, 'n_words': 351}