我想通过shell脚本来杀死进程,它给了我错误.这是我到目前为止所尝试的:
当我试图杀死MEMCACHE它给我的错误,如"杀:没有这样的过程",我用下面的命令:
ps -ef | grep "memcache" | awk '{print $2}' | xargs kill;
Run Code Online (Sandbox Code Playgroud)
或者如果尝试如下:
kill -9 $(pidof memcache)
Run Code Online (Sandbox Code Playgroud)
我得到如下错误:":参数必须是进程或作业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
Run Code Online (Sandbox Code Playgroud)
我REFF到https://askubuntu.com/questions/239923/shell-script-to-9-kill-based-on-name 和 shell脚本来捕获进程ID,如果存在杀死它
我的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"
Run Code Online (Sandbox Code Playgroud)
实际上可以
ps -ef | grep memcache
Run Code Online (Sandbox Code Playgroud)
会给两行..
所以你可以走这条路
ps -ef | grep memcache | grep -v "grep" | awk '{print $2}' | xargs kill;
Run Code Online (Sandbox Code Playgroud)
这可以为您提供一个PID
如果我必须这样做,我会在开始时将它分成两行
#!/bin/bash
PID=`ps -ef | grep memcache | grep -v "grep" | awk '{print $2}'`
echo $PID
#to check PID is right
kill -9 $PID
Run Code Online (Sandbox Code Playgroud)
将它保存在脚本文件中说test.sh
然后在终端上
chmod +x test.sh
Run Code Online (Sandbox Code Playgroud)
然后
./test.sh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24497 次 |
| 最近记录: |