Java之旅--Linux&java进阶(看清操作系统层面的事)

Java的生产系统,最常用的是Linux,所以当解决生产系统问题时,理解Linux系统,熟练掌握常用命令,对于解决问题,甚至对从更高层次理解Java,都是很有帮助的。

那么,应该怎么学Linux呢?上周五听了一次高手讲座,对于学习的串联、衔接、进阶,都是很有帮助的,所以分享到这里来。

本次讲座,先走马观花串一遍Linux命令,让其可以辅助我们的工作。但是不仅仅是讲几个命令而已,而是希望能看清楚一些操作系统层面上的事,达到理解和境界思想上的提升。

理解是灵魂,串讲是骨架,然后可以自行丰满血肉,这是目的。

本次讲座,特别适合“有一定理解,但是不深刻,或者恰恰处于进阶边缘”这种情况的人,一讲,一串,醍醐灌顶,理解会立刻深了一层。

1、strace

strace常用来跟踪进程执行时的系统调用和所接收的信号。

strace -T -t -f java Test >out 2>&1

strace -T -t -f p pid

通过这个工具,我们可以看到当Java程序,或者任何一种程序在Linux系统上运行时,实际上都是被分解成Linux API的。

讲这个命令的目的,是提示我们,可以用一种方式,用一种工具,比如strace,去理解我们的程序的运行。

语言,不论在哪种平台运行,最后都是要分解成操作系统API,分解成CPU指令。这是思维的进阶,或者我们忙于日常应用系统的开发,忘记了曾经的本质。

参考文章:

使用strace, ltrace寻找故障原因的线索

五种利用strace查故障的简单方法

2、进程

pstree 是Linux的进程体系。

ps 是系统某个时刻的进程切面,代表某个时刻有多少个进程在运行。

因为在Linux下,包括进程、Socket等,都是以文件的形式存在的,内存中的。我们可以通过ps找出进程id,然后通过“运行时文件系统”,查看进程的任何信息。

从操作系统层面鉴定进程的信息(路径、jar、连接等),是完全准确的,比从配置文件里面查询准确,也不需要问别人。

ps -ef | grep catalina

cd /proc/60282/fd

可以进一步查看更多内容,比如:

a、写多少日志:ll | grep log

你可能感兴趣的:(面试,学习路线,阿里巴巴,android,前端,后端)