Linux面试
1、进程管理命令之ps -ef和ps aux:ps -ef | more
一般执行ps -ef 或者ps aux 命令是查看我们的进程是否启动成功,或者找出进程号,对进程的kill强制关闭,比如系统正在运行mysql进程,突然发现mysql挂掉了,那只能杀掉mysql这个进程了,我会使用ps -ef | grep mysql 命令查询mysql进程的ID号,加入进程号是2070,通过kill -9 2070这条命令即可杀死mysql进程。当然也可以通过这两个命令查看进程的资源损耗情况
2、top命令详解:显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
(1)参数解析:
1)-d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒
2)-p:指定特定的pid进程号进行观察
(2)应用实例:
1)排查CPU过高问题?
a、使用top命令定位异常进程,比喻查找到java进程
b、使用top -H -p java_pid 查看异常线程,找到异常线程号
c、使用printf "%x\n" 线程号将异常线程号转化为16进制
d、使用jstack 进程号|grep 16进制异常线程号 -A90来定位异常代码的位置。
e、解决相应的代码。
3、kill命令详解:用来中止一个进程,工作原理:向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。
(1)应用实例:
1)强制中止一个进程号为324的进程:kill -9 pid
2)解除Linux系统死锁:kill -SIGKILL pid
3)回收内存:首先kill -9 pid,在使用free即可发现内存容量增加。
4)中止httpd进程:首先ps -ef | grep httpd 然后kill -9 httpd_pid
5)重启和停止进程:kill -HUP pid
4、linux连接超时如何解决
(1)测试网络是否能通:ping 远程IP
(2)若能ping通则表示与服务器网络连接正常,接下里测试端口:Telnet 远程IP 端口
5、如何在不解压tar包的情况下,查看包里内容?
(1)使用 tar -tvf 其中t表示显示内容,v表示tar处理的文件信息,f表示使用档案文件或者设备。
6、系统访问突然变慢如何排查和解决
(1)top命令查看系统资源是否达到上限,例如:CPU、内存、磁盘、I/O、网络带宽等
(2)如果是CPU的问题,uptime命令查看下当前的负载均衡,即如果最近1分钟,最近5分钟,最近15分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳
(3)free -m:查看内存使用情况
(4)df -h:查看磁盘使用情况
(5)iostat 2 3 :查看磁盘io操作,每隔2秒显示1次,总共显示3次。
7、与端口相关的命令
(1)根据进程pid查端口:lsof -i | grep pid 或者 netstat -nap | grep pid
(2)根据端口查进程:lsof -i :port 或者 netstat -nap | grep port
8、常用的命令
(1)find 查找文件:find /home -name "文件名称"
(2)grep 用于查找文件里符合条件的字符串:grep "linux" text.txt,grep -n "linux" text.txt;显示行数。
(3)cat 显示文本,创建文件,合并文件。
1)一次显示整个文件: cat filename
2)从键盘创建一个文件: cat > filename,只能创建新文件,不能编辑已有文件
3)将几个文件合并为一个文件: cat file1 file2 > file
(4)tail 查看文件末尾几行:
1)tail -10 text.txt:显示文件text.txt的最后十行。
2)tail +20 text.txt:显示文件 notes.log 的内容,从第 20 行至文件末尾:
3)tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
(5)head 查看文件前几行
1)显示文件前n行:head -n 5 a.txt
2)显示文件前n个字节:head -c 20 a.txt。
(6)ln 为文件在另外一个位置建立一个同步的链接:
1)ln -s file_data.txt link_data:为文件file_data.txt创建软链接link_data。
2)ln file_data.txt link_data:为文件file_data.txt创建硬链接link_data。硬链接相当于副本,但是不占用磁盘空间,文件与硬链接会在同一文件系统。
3)硬连接:用ln命令来建立硬链接
a、硬链接是一个指针,指向文件索引节点。当创建一个文件的硬链接时,系统并不为它重新分配inode号,而是使用和文件相同的inode号,但是inode连接数增加了,由最初的n变成n+1。删除文件不会影响硬链接,硬链接的inode数会从n+1变为n,
b、只有将所有指向文件内容的指针即链接数减为0时,内核才会把文件内容从磁盘上删除。硬链接只能应用于文件,不能应用于目录,不能跨文件系统(即分区)。
4)软连接/符号链接:符号链接是对一个文件的间接指针。硬链接直接指向文件的i节点。
a、软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。建立软链接,只要在ln后面加上选项 –s。
b、创建文件的软链接时,软链接会使用一个新的inode,所以软链接的inode号和文件的inode号不同,软链接的inode里存放着指向文件的路径。删除文件软链接也无法使用了,因为文件的路径不存在了;当我们再次创建这个文件时(文件名与之前的相同),软链接又会重新指向这个文件。
c、软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷。软连接需要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。
7、求查看日志中访问次数最多的前2个IP
文件内容如下: 123.45.67.68 1234.56.78.9 1.1.1.1 45.56.78.90 127.0.0.1 567.78.8.9 45.56.78.90 45.56.78.90 45.56.78.90 45.56.78.90 45.56.78.90 123.45.67.68 123.45.67.68 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 1)命令:grep -E -o "((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)[\.]){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" ip.txt |sort 结果: 1.1.1.1 123.45.67.68 123.45.67.68 123.45.67.68 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 234.56.78.9 45.56.78.90 45.56.78.90 45.56.78.90 45.56.78.90 45.56.78.90 45.56.78.90 67.78.8.9 2)命令:grep -E -o "((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)[\.]){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" ip.txt |sort|uniq -c 结果: 1 1.1.1.1 3 123.45.67.68 5 127.0.0.1 1 234.56.78.9 6 45.56.78.90 1 67.78.8.9 3)命令:grep -E -o "((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)[\.]){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" ip.txt |sort|uniq -c|sort -nr 结果: 6 45.56.78.90 5 127.0.0.1 3 123.45.67.68 1 67.78.8.9 1 234.56.78.9 1 1.1.1.1 4)命令:grep -E -o "((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)[\.]){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" ip.txt |sort|uniq -c|sort -nr|head -n 2 结果: 6 45.56.78.90 5 127.0.0.1