Linux 排查进程挂起【板砖~】
Linux 排查进程挂起
- 问题描述
- lockf() 函数说明
- 命令 1 strace -p [pid] 进行跟踪
- 命令2 lsof -p [pid] 进行查看
- 解决办法
问题描述
Linux 系统下; 进程突然挂起, 经过日志调试和跟踪,最后定位为 A进程进行日志打印时,fopen() 打开文件后, 进行了lockf(iNum,F_LOCK,00) 操作, 使用文件结束后-且没有 lockf( iNum, F_ULOCK, 00 ) ; B进程 对相同文件进行读写操作时, 就会在fopen时 挂起;
需要kill A进程之后, B进程才会正常继续往下运行
lockf() 函数说明
#include <unistd.h>
int lockf(int fd, int cmd, off_t len);
fd为通过open返回的打开文件描述符。
cmd的取值为:
F_LOCK:给文件互斥加锁,若文件以被加锁,则会一直阻塞到锁被释放。
F_TLOCK:同F_LOCK,但若文件已被加锁,不会阻塞,而回返回错误。
F_ULOCK:解锁。
F_TEST:测试文件是否被上锁,若文件没被上锁则返回0,否则返回-1。
len:为从文件当前位置的起始要锁住的长度。
通过函数参数的功能,可以看出lockf只支持排他锁,不支持共享锁。
命令 1 strace -p [pid] 进行跟踪
可以通过该命令 ,跟踪程序的执行情况 ,再什么地方挂起;
命令2 lsof -p [pid] 进行查看
返回: COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
如果是 fopen–打开文件,则文件大小 显示在SIZE这一列;
解决办法
排查程序中 对于文件lockf() 锁定后,写完日志后 ,需要进行lockf() 进行解锁操作 ;
Linux 排查进程挂起【板砖~】相关推荐
- linux排查进程退出原因面试,linux面试中经常会遇到的问题
Linux 面试题答案解析 1.绝对路径用什么符号表示?当前目录.上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 答案: 绝对路径: 如/etc/init.d 当前目录和上层目录: ./ ...
- linux 让暂停的进程恢复,Linux 下进程的挂起和恢复命令
本文给大家介绍进程的挂起及恢复命令,具体内容如下所示: #ctrl+z:挂起,程序放到后台,程序没有结束. #jobs:查看被挂起的程序工作号 恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前 ...
- Linux排查哪个进程和IP在占用网速
Linux排查哪个进程在占用网速 使用NetHogs定位哪个进程在占用流量 安装NetHogs 查看进程流量 显示界面说明 使用iftop定位哪个IP在占用流量 iftop基本用法 查看哪个连接占用流 ...
- linux write引起进程挂起,Linux设备驱动中的阻塞与非阻塞总结
Linux设备驱动中的阻塞与非阻塞总结 阻塞操作是指,在执行设备操作时,若不能获得资源,则进程挂起直到满足可操作的条件再进行操作. 非阻塞操作的进程在不能进行设备操作时,并不挂起.被挂起的进程进入sl ...
- <Linux>进程概念
文章目录 一.什么是进程 1.进程概念 2.进程描述 – PCB 3.task_struct内容分类 二.进程的基本操作 1.查看进程 2.结束进程 3.通过系统调用获取进程标示符 4.通过系统调用创 ...
- Linux下进程通信知识点学习笔记(一)
4种主要事件导致进程创建: 系统的初始化: 执行了正在运行的进程所调用的进程创建系统调用: 用户请求创建一个进程: 一个批处理作业的初始化: 进程的终止: 正常退出: 出错退: 严重错误: 被其他进程 ...
- linux一个进程通知另外一个进程,Linux进程通信学习笔记
一.为什么需要进程通信 1)数据传输 一个进程需要把它的数据发送给另一个进程. 2)资源共享 多个进程之间共享同样的资源. 3)通知事件 一个进程向另外一个进程发送消息,通知它发生了某事件. 4)进程 ...
- Linux 让进程在后台可靠运行的几种方法
场景 思考三个问题: 想让进程在断开连接后依然保持运行? 如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作? 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Li ...
- linux 进程管理 ppt,linux操作系统-进程管理和打印管理.ppt
<linux操作系统-进程管理和打印管理.ppt>由会员分享,可在线阅读,更多相关<linux操作系统-进程管理和打印管理.ppt(25页珍藏版)>请在装配图网上搜索. 1.进 ...
最新文章
- 没有场景,不做单点技术输出,360数科如何做金融科技的最佳实践?
- 技嘉G31主板学习笔记
- 恒驰机器人_机器人如何造恒驰?探秘最牛汽车生产基地
- 杭电oj 1002 c++版本
- ELV局部视图与差分隐私【敏感度到底怎么理解】【上】
- css如何让a标签,根据输入的内容长度调整宽度,宽度自适应,那位大仙帮帮忙...
- java矩形类_Java定义矩形类
- mscaffe 训练minist数据
- iOS字体适配方法总结
- 北京朝阳行政区划(朝阳区街道行政区划) 用于shp数据转为geojson格式作为ECharts地图
- ubuntu code::blocks 汉化(附汉化包)
- c#程序设计实训报告心得体会_C#.NET程序设计实验一实验报告
- Android 官方推荐 : DialogFragment 创建对话框
- oracle 中的.dbf,郑怡:请问各位大师:oracle中dbf文件是什么文件?
- 利用R语言进行探索性数据分析(EDA)
- 王选-“从Dijkstra谈帅才的洞察力”[转]
- 测试开发是什么?为什么现在那么多公司都要招聘测试开发?
- 在IOS设备上调试(真机调试)
- oracle中部门工资降序排列,oracle面试题整理二(10级学员 乔宇整理)
- 4.驱动框架入门之LED