我想通过 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-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"
最佳答案
其实
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/