Linux 面试被问面试题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/liuyingwei19880206/article/details/95934108

1》 如何查看哪些文件中包含某个字符串?

find .|xargs grep -ri "IBM" -l

2》以删除当前目录到所有子目录下的后缀名为rej的文件为例:

find . -name "*.cc" | xargs rm -f

3》查看所有连接的端口

netstat -ntlp

4》查看日志常用命令,

 tail:  

       -n  是显示行号;相当于nl命令;例子如下:

            tail -100f test.log      实时监控100行日志

            tail  -n  10  test.log   查询日志尾部最后10行的日志;

            tail -n +10 test.log    查询10行之后的所有日志;

    head:  

        跟tail是相反的,tail是看后多少行日志;例子如下:

            head -n 10  test.log   查询日志文件中的头10行日志;

            head -n -10  test.log   查询日志文件除了最后10行的其他所有日志;

    cat: 

        tac是倒序查看,是cat单词反写;例子如下:

            cat -n test.log |grep "debug"   查询关键字的日志

5》查看系统内存

free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。free命令默认是显示单位kb,可以采用free -m和free -g命令查看,分别表示MB和GB

Mem:表示物理内存统计,如果机器剩余内存非常小,一般小于总内存的20%,则判断为系统物理内存不够
Swap: 表示硬盘上交换分区的使用情况,如剩余空间较小,需要留意当前系统内存使用情况及负载,当Swap的used值大于0时,则表示操作系统物理内存不够,已经开始使用硬盘内存了。

第1行数据1.8G表示物理内存总量;365M表示总计分配给缓存(包含buffers与cache)使用的数量,但其中可能部分缓存并未实际使用;
74M表示未被分配的内存;shared表示共享内存;1.4G表示系统分配但未被使用的buffers数量;1.3G表示系统分配但未被使用的available数量

6》定时器

sleep,usleep和nanosleep

sleep()和nanosleep()都是使进程睡眠一段时间后被唤醒,但是二者的实现完全不同。
Linux中并没有提供系统调用sleep(),sleep()是在库函数中实现的,它是通过调用alarm()来设定报警时间,调用sigsuspend()将进程挂起在信号SIGALARM上,sleep()只能精确到秒级上。

    nanosleep()则是Linux中的系统调用,它是使用定时器来实现的,该调用使调用进程睡眠,并往定时器队列上加入一个timer_list型定时器,time_list结构里包括唤醒时间以及唤醒后执行的函数,通过nanosleep()加入的定时器的执行函数仅仅完成唤醒当前进程的功能。系统通过一定的机制定时检查这些队列(比如通过系统调用陷入核心后,从核心返回用户态前,要检查当前进程的时间片是否已经耗尽,如果是则调用schedule()函数重新调度,该函数中就会检查定时器队列,另外慢中断返回前也会做此检查),如果定时时间已超过,则执行定时器指定的函数唤醒调用进程。当然,由于系统时间片可能丢失,所以nanosleep()精度也不是很高。

alarm()也是通过定时器实现的,但是其精度只精确到秒级,另外,它设置的定时器执行函数是在指定时间向当前进程发送SIGALRM信号

crontab最小时间单位是分,如果需要在秒级设置定时任务,使用sleep延时:如果每10秒执行一次,每分钟60秒,可以看成:6个同时执行的crontab任务,第一个任务0秒执行,第二个任务延时10秒执行,第三个任务延时20秒执行,以此类推,得到:

其他内容待完善:

猜你喜欢

转载自blog.csdn.net/liuyingwei19880206/article/details/95934108