⑴ linux查看日志文件写入速度的4种方法
有时,我们需要查看某个文件的增长速度,如日志文件,以此来感受系统的弯局缺负载情况,因为一般情况下,日志写入越快,说明系统负载越重。
本文就来介绍下Linux中查看日志腊拿增长速度的几种方法,如下:
首先要介绍的是dd,因为dd命令几乎所有主流发行版都自带,无需额外安装,如下:
如上,使用 tail -F 获取新写入的数据,然后用管道将数据交给dd,dd将数据拷贝到 /dev/null ,其中 status=progress 是用来显示拷贝速度的,可见,我们日志的写入速度是 471 kB/s 。
pv命令可以看做是带进度的cp,如下:
原理与dd类似,不过命令换成了pv。
由于日志数据都是程序(如java)写入的,而在如下的伪文件中,存放着程序打开的文件信息,如下:
于是定期的读取这个offset就可以知道文件的写入速度了,这也是cv命令的实现原理,如下:
通过写一个小脚本,定期观察文件大小,也可查看文件写埋辩入速度,如下:
通过watch再加上观察,也能大致看出速度,如下:
其实转念一想,如果我们在某个函数中打上日志,然后通过grep过滤出此日志,然后我们只要计算每秒输出的日志行数,这岂不就是函数执行的QPS了!
这里可以通过 151/15 计算出QPS是10,由于没有超过1000,所以看到的是0.0kB/s,如果使用pv命令,会更简单一些,如下:
⑵ linux下jar包启动命令,我用nohup java -jar + *.jar命令启动,此时命令
启动并数据出日志到nohub.out : nohup java -jar xxx.jar nohub.out &
查看正在执行的任务:jobs
查看日志 tail -f /xxx/xxx/nohup.out
查看正在执行的java进程 : ps -ef|grep java
kill -9 123
⑶ linux下java mp文件在哪儿
如果所使用的应用服务器是tomact,mp文件默认在catalina.out日志文件里;
如果不是则可以查看java环境变量设置的位置,也就知道在mp文件的位置了;
如果没有生成mp文件或者是生成错误,请按照一下几种方法来修复:
系统默认的core文件生成路径是 /var/logs,但是 /var/logs 目录并非系统自带的,系统初始安装默认自带的是/var/log,最终导致该系统出现core mp后并没能生成core文件,因此如何查询和修改系统默认的core mp文件生产路径呢?方法如下:
一. 查询core mp文件路径:
方法1:
# cat /proc/sys/kernel/core_pattern
方法2:
# /sbin/sysctl kernel.core_pattern
二. 修改core mp文件路径:
方法1:临时修改:修改/proc/sys/kernel/core_pattern文件,但/proc目录本身是动态加载的,每次系统重启都会重新加载,因此这种方法只能作为临时修改。
/proc/sys/kernel/core_pattern
例:echo ‘/var/log/%e.core.%p’ > /proc/sys/kernel/core_pattern
方法2:永久修改:使用sysctl -w name=value命令。
例:/sbin/sysctl -w kernel.core_pattern=/var/log/%e.core.%p
⑷ 定期清理linux服务器日志文件的几个思路
定期清理linux服务器日志文件的几个思路
1,在跑批程序中,用java代码调用shell脚本;
2,在跑批程序中,用纯java代码实现,也就是使用java的文件操作类File;
3,纯shell脚本方式,使用linux服务器的调度程序调用shell脚本;
结合最近的项目,这里提供一个示例。首先,我们是在跑批项目中实现的定期清理日志功能,
因为我们有跑批项目,使用的是Control M进行调度,所以这种方式还是很方便的。
第一步:写shell脚本
find /home/logs/ -mtime +30 -name "*.log" -exec rm -rf {} ;
脚本其实很简单,一行代码就够了,把这个代码放在一个shell文件中,然后放在服务器的
指定目录下,等待java程序调用。
第二步:写java代码,调用shell脚本,示例代码仅提供思路,请大家自己调试
// 设置可执行权限
String commond = "chmod 777 clearLogFileOnTime.sh";
Process proc = Runtime.getRuntime().exec(commond);
proc.waitFor();
// 执行shell脚本
commond = "bash clearLogFileOnTime.sh";
proc = Runtime.getRuntime().exec(commond);
第三步:配置Control M,进行作业调度
关于Control M的配置不再赘述,主要就是设置跑批程序的执行时间,以及一些其他参数。