【问答】Linux

Linux系统日志在哪里看

Linux日志分为内核及系统日志、用户日志、应用日志;系统日志由rsyslog服务统一管理,用户日志记录操作系统用户登录登出日志,日志一般记录在var/log下,如/var/log/messages内核消息日志,/var/log/lastlog用户登录事件日志;

Linux系统下你关注过哪些内核参数,说说你知道的

Linux内核参数大都在/proc/sys目录下和/etc/sysctl.conf文件中配置,参数名称是以文件所在的路径,并将“/”以“.”来取代,如/proc/sys/net/ipv4/ip_forward的参数名称为net.ipv4.ip_forward; 修改方法有两种: 1、使用echo value方式直接追加到文件里,如echo "1" >/proc/sys/net/ipv4/tcp_syn_retries,但这种方法设备重启后又会恢复为默认值;2、把参数添加到/etc/sysctl.conf中,然后执行sysctl -p使参数生效,永久生效;常用参数如: proc/sys/net/core/wmem_max最大socket写buffer; /proc/sys/net/core/rmem_max最大socket读buffer; /proc/sys/net/ipv4/tcp_wmemTCP写buffer; /proc/sys/net/ipv4/tcp_rmemTCP读buffer; /etc/security/limits.conf和 ulimit -a修改文件句柄;

Linux下IO模型有几种,各自的含义是什么

Linux有5种IO模型,其中4种同步IO(线程阻塞等待):阻塞IO、非阻塞IO、多路复用IO、信号驱动IO,1种异步IO;阻塞IO:慢速设备如socket、terminal默认的IO方式;非阻塞IO:IO操作后立即返回,通过不断轮训IO事件做相应的处理;多路复用IO:专门的多路复用IO线程阻塞的监控多个IO描述符,真正的IO线程不阻塞;信号驱动IO: 利用信号机制,安装信号SIGIO的处理函数,通过监控文件描述符,当其就绪时,通知目标进程进行IO操作;异步IO:采用系统监控到IO就绪后回调用户线程的方式;

epoll和poll有什么区别

select/poll:创建一个待处理事件列表(一个进程所打开的文件描述符有限),然后把这个列表发给内核,再去轮询检查这个列表,以判断事件是否发生,select对读、写、异常创建3个集合分别轮询,poll只创建一个集合,每个包含读、写、异常3个事件,一次轮询同时检查3个事件,Windows不支持;epoll:把事件列表的管理交给内核,由内核主动通知进程事件的发生,进程不再轮询,支持一个进程打开大数目的socket描述符(FD),IO效率不随FD数目增加而线性下降(因为内核只通知活动的FD);

平时用到哪些Linux命令

查看系统信息(cat /proc/xx)、查看文件内容(cat、tac、more、less、head、tail)、文本处理(cat、grep、sed)、权限管理(chmod、chown、chgrp)、文件操作(cd、pwd、ls、mkdir、mv、cp、touch、rm、find)、网络(ifconfig、route、netstat、nslookup)、信息显示(top、free、stat、df)、进程(ps、kill);

用一行命令查看文件的最后十行

tail -f filename:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上;tail -n 20 filename:显示filename最后20行;tail -n +20 filename:显示filename前面20行;其他文本操作命令:cat 从第一行开始显示档案内容;tac 从最后一行开始显示档案内容; more 分页显示档案内容; less与more 相似,但支持向前翻页;head仅仅显示前面几行;

用一行命令输出正在运行的java进程

ps aux | grep java或使Java自带的命令jps;

介绍下你理解的操作系统中线程切换过程

每个进程都有私有的虚拟地址空间,进程的所有线程共享同一地址空间,每个线程被CPU分配一个时间片,一旦被激活,它正常运行直到时间片耗尽并被挂起,此时操作系统选择另一个线程进行运行;切换前会保存上一个任务的状态,以便下次切回这个任务时重新加载;

进程和线程的区别

进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位);进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵, 而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多;线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式进行,不过如何处理好同步与互斥是编写多线程程序的难点;多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间;

top命令之后有哪些内容,有什么作用

top命令类似Windows的资源管理器,参数:-d刷新时间间隔,-p指定只监控指定进程ID;可显示进程CPU、内存详细信息;

线上CPU爆高,请问你如何找到问题所在

1、查看CPU最高的进程:top -P,对占用cpu的进程进行排序,查看哪个进程占用的cpu最高,找到占用cpu最高的进程pid;2、查看进程是哪个服务:jps,查看进程是哪个Java服务;3、查看进程中占用CPU最高的线程:top -Hp pid;4、将操作系统线程ID转换成16进制:printf %x tid,前面再加上0x;5、查看该线程堆栈信息:jstack pid | grep 0xtid;

操作系统进程通信IPC的几种方式,与线程区别

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息, IPC的方式通常有无名管道(速度慢,容量有限,只有父子进程能通讯 )、FIFO命名管道(一种文件类型,任何进程间都能通讯,但速度慢)、消息队列( 消息的链接表,存放在内核中 )、信号量(是一个计数器,用于进程间的互斥与同步,不是用于存储进程间通信数据)、共享存储(两个或多个进程共享一个给定的存储区,速度快,但要处理同步)、Socket、Streams等,其中 Socket和Streams支持不同主机上的两个进程IPC;

线程间通信机制:互斥锁、条件变量、读写锁、线程信号量、线程信号;  

你可能感兴趣的:(【问答】Linux)