【发布时间】:2013-11-11 01:48:40
【问题描述】:
我想通过 shell 脚本杀死进程,它给了我错误。这是我到目前为止尝试过的:
当我尝试杀死 memcache 时,它给了我类似“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-name 和 Shell 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"
【问题讨论】:
-
pidof memcache或ps -ef | grep "memcache" | awk '{print $2}'的结果是什么?看起来不错。 -
pidof memcache 没有给出任何东西,没有错误没有 id。
-
实际上
ps -ef | grep memcache会给出两行.. 所以你可以这样ps -ef | grep memcache | grep -v "grep" | awk '{print $2}' | xargs kill; -
@Ashish:它给出错误“:没有这样的文件或目录”,但是当我运行 ps -ef | grep 内存缓存 | grep -v "grep" 它只给出一个进程。 awk 的问题...