linux kill进程没有立刻停止
前些天在执行restart脚本的时候遇到了一个奇怪的问题:
1、第一次执行进程不见了,启动失败
2、第二次重启进程成功,但是在kill的时候提示进程不存在
需要重启两次进程才能成功
查看日志文件:
第一次重启失败是因为端口被占用,那么意味着进程没有被kill掉。第二次kill提示进程不存在则是因为
在第一次重启进程的时候写入了新的进程号(然后在绑定端口监听的时候发现端口被占用,进程启动失败)
接下来需要研究的是,在执行了kill之后进程为什么没有立刻被kill掉,查资料发现:

也就是说执行kill以后,信号被放在了pending对列中,下一次cpu调度这个进程耗时较长。
查看了一下,系统600多个进程,所以暂时的处理办法是先sleep 0.1s,然后再执行kill命令
参考:
1、当执行kill -9 PID时系统发生了什么2、Linux进程状态:D
附:重启脚本
#!/bin/bash BASEDIR=$(cd "$(dirname "$0")";pwd)
PID=./bin/process.pid # kill server
if [ -e "$PID" ]; then
cat "${BASEDIR}"/bin/process.pid | xargs kill -9
sleep 0.1
rm -rf ${BASEDIR}/bin/process.pid
echo "stop process success..."
fi mkdir -p ${BASEDIR}/log # start server as daemon
cd ${BASEDIR}/bin
chmod +x ./process
nohup ./** >> ${BASEDIR}/log/out.log 2>&1 &
echo "restart process server success..."
linux kill进程没有立刻停止的更多相关文章
- linux kill进程和子进程小trick
我们的hive web是调用polestar restful service(https://github.com/lalaguozhe/polestar-1)来执行具体的hive或者s ...
- Linux:kill 进程
在使用Linux时,出现端口占用.进程已启动(但处于不可控状态)情况时如何处理? 发现已知端口被占用时,可以使用netstat -apn | grep yourPort 来查看占用该端口的进程的pid ...
- Linux下查找进程,kill进程
1. ps命令用来查找linux运行的进程,常用命令: ps aux | grep 进程名: eg:ps aux | grep admin 查找admin的进程 或者 ps -ef | grep j ...
- Linux下kill进程脚本
Linux下kill进程脚本 在Linux有时会遇到需要kill同一个程序的进程,然而这个程序有多个进程,一一列举很是繁琐,使用按名字检索,统一kill Perl脚本 使用方法 kill_all.pl ...
- linux, kill掉占用60%多cpu的进程,几秒后换个pid 和 command 又出现
linux, kill掉占用60%多cpu的进程,几秒后换个pid 和 command 又出现?快速清理木马流程.假设木马的名字是xysbqaxjqy,如果top看不到,可以在/etc/init.d目 ...
- linux 查找并kill进程
以php以关键字查找进程 $ ps aux | grep php root 32957 0.0 0.1 2470904 8908 s002 S+ 4:53下 ...
- linux查询进程 kill进程
查询进程 #ps aux #查看全部进程 #ps aux|grep firewall #查询与firewall相关的进程 kill进程一 kill进程pid为711进程: #pkill -9 711 ...
- Linux查看进程线程个数
1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{pr ...
- Linux kill和kill-9区别
进程状态转换图 kill和kill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象. 执行kill命令,系统会发送一个SI ...
随机推荐
- Lyft、Uber、滴滴涉足汽车租赁领域,能打破既有汽车所有权模式吗?
自共享经济出现之后,众多相关项目遍地开花.这些共享经济项目对于人们来说,最直观的感受就是实惠.性价比高.方便.不过抛开这些使用层面的优点来看的话,共享经济项目最大的特色或许就是改变了事物的所有权.一件 ...
- Java中常用的API(四)——其他
前面说三篇文章分别介绍了Object.String.字符缓冲类的API,接下来我们简要介绍一下其他常用的API. 1.System System类用于获取各种系统信息,最为常用的是: System.o ...
- Python笔记_第四篇_高阶编程_高阶函数_2.filter
1. filter函数: 原型:filter(fn,lsd) 参数1为函数 参数2为序列 功能:用于过滤序列,把传入的函数一次作用域序列每个元素,根据返回的是True还是False决定是否保留该元素. ...
- Docker部署freeswitch
1. clone配置文件到本地服务器 git clone https://github.com/BetterVoice/freeswitch-container.git 相关Dockerfile如下: ...
- Spring Cloud Alibaba 教程 | Nacos(五)
扩展配置(extended configurations) 通过之前的学习,我们知道应用引入nacos配置中心之后默认将会加载Data ID= ${prefix} - ${spring.profile ...
- 浅谈JVM - 内存结构(二)- 虚拟机栈|凡酷
2.1 定义 Java Virtual Machine Stacks(Java虚拟机栈) Java 虚拟机栈描述的是 Java 方法执行的内存模型,用于存储栈帧,是线程私有的,生命周期随着线程启动而产 ...
- git 提交部分修改的文件,以及如何撤回已经add的文件
命令 1.git status //查看修改文件状态 ,可以看到哪些add了哪些没add 注意:如果此时出现了有些文件不想添加到暂存区却添加进去了,需要撤回 git reset HEAD 全部撤销gi ...
- Vue插件配置和 后台交互
Vue插件配置和 后台交互 一.全局配置静态文件(csss, js..) 1.1 全局配置css文件 创建css文件 在main.js配置css文件 // 配置全局css样式 // 方式一 impor ...
- VMware12 + Ubuntu16.04 虚拟磁盘扩容
转载自:https://blog.csdn.net/Timsley/article/details/50742755 今天用虚拟机的时候,发现虚拟机快满了,提示磁盘空间小,不得不扩充虚拟机空间.经过百 ...
- You are attempting to install the android sdk inside your android studio installation
原因 我的android studio文件名为AndroidStudio 我的android studio sdk文件名为AndroidStudioSDK 所以系统把AndroidStudioSDK自 ...