bash - 试图通过 shell 脚本终止进程

标签 bash shell ubuntu

我想通过 shell 脚本终止进程,它给我错误。这是我到目前为止尝试过的:

当我尝试终止内存缓存时,它给我错误信息,如“kill: No such process”,我使用了以下命令:

ps -ef | grep "memcache" | awk '{print $2}' | xargs kill; 

或者如果像下面这样尝试:

kill -9 $(pidof memcache)

我收到如下错误:“:参数必须是进程或作业 ID”

当我直接在命令提示符下运行时,进程正在运行:

ring@ubuntu:~/parasol$ ps aux | grep memcache     
memcache   873  0.0  0.0 323220  1188 ?        Sl   22:56   0:00 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1
ring      1714  0.0  0.0   9384   920 pts/0    S+   23:45   0:00 grep --color=auto memcache

我引用 https://askubuntu.com/questions/239923/shell-script-to-9-kill-based-on-nameShell script to capture Process ID and kill it if exist

我的 Ubuntu 版本:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.2 LTS"
NAME="Ubuntu"
VERSION="12.04.2 LTS, Precise Pangolin"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu precise (12.04.2 LTS)"
VERSION_ID="12.04"

最佳答案

其实

ps -ef | grep memcache

将给出两行..

所以你可以走这条路

ps -ef | grep memcache | grep -v "grep" | awk '{print $2}' | xargs kill; 

这可以让你得到一个精确的 PID

如果我必须这样做,我会在开始时分成两行

#!/bin/bash
PID=`ps -ef | grep memcache | grep -v "grep" | awk '{print $2}'`
echo $PID
#to check PID is right
kill -9 $PID

将其保存在脚本文件中,比如 test.sh

然后在终端上

chmod +x test.sh

然后

./test.sh

关于bash - 试图通过 shell 脚本终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19700022/

相关文章:

linux - 目录中所有文件内容的总大小

ubuntu - 如何在 Ubuntu 上安装 .rpm?

linux - 是否有适用于 Linux 的 MongoDB GUI 桌面应用程序?

linux - 在 linux 中比较 2 个数字时预期输出不会出现

mysql - 将数据从 csv 导入到 mariaDB 缺少第一列

bash - 替换所有文件中的字符串 - Unix

linux - Bash 数组创建 : ("$@") vs ($@)

Bash elif 似乎没有被使用

python - 使用python执行带变量的linux命令

ubuntu - 当我处于插入模式时,Vim 没有 `--INSERT--`?