linux常见面试题

1.ps的用法

ps -ef 

其中各列的内容意思如下(8列)

UID    //用户ID、但输出的是用户名 

PID    //进程的ID 

PPID    //父进程ID 

C      //进程占用CPU的百分比 

STIME  //进程启动到现在的时间 

TTY    //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 

CMD    //命令的名称和参数

 

ps -aux

同ps -ef 不同的有列有(11列)

%CPU      //进程占用的CPU百分比 

%MEM      //占用内存的百分比 

VSZ      //该进程使用的虚拟內存量(KB) 

RSS      //该进程占用的固定內存量(KB)(驻留中页的数量) 

STAT      //进程的状态 

START    //该进程被触发启动时间 

TIME      //该进程实际使用CPU运行的时间

 

2.kill

kill命令用来中止一个进程。 

杀死进程最安全的方法:kill pid

强行中止:kill -9 pid

和缓的重启进程:kill -HUP PID 

使用进程名字中止:killall httpd

杀死它和它的子进程: kill -TERM PPID

 

 

3.crontab配置 , 如何实现每秒执行

第一列 分钟: 1——59

第二列 小时: 1——23(0表示子夜)

第三列 日 : 1——31

第四列 月 : 1——12

第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此类推)

第六列 要运行的命令

http://blog.csdn.net/fdipzone/article/details/22701113

 

4.进程和线程的区别

进程就是一个“执行中的程序”,它是一个动态的概念,它可以申请和拥有系统资源。

进程作为分配资源的基本单位

线程是进程中的一部分,进程中可以包含若干个线程,它们可以利用进程所拥有的资源。

线程作为独立运行和独立调度的基本单位。

由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。

 

5.进程的状态

三态模型

(1)运行:当一个进程在处理机上运行时,则称该进程处于运行状态。

(2)就绪:当一个进程获得了除处理机以外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。

(3)阻塞:也称为等待或睡眠状态,一个进程正在等待某一事件发生(例如请求I/O而等待I/O完成等)而暂时停止运行,这时即使把处理机分配给进程也无法运行,故称该进程处于阻塞状态。

五态模型:对于一个实际的系统,进程的状态及其转换更为复杂。引入新建态和终止态构成了进程的五态模型。

 

6.chmod chown chgrp

(1)chmod 变动文件属性 r=4,w=2,x=1  

格式:chmod 777 file     三个数字代表User、Group、及Other的权限 

(2)chown 转变文件拥有者 -R选项意味着对所有子目录下的文件也都进行同样的操作 

格式:chown 用户名:用户组:文件/目次   例: chown -R root:root /home

(3)chgrp 转变文件所属用户组 -R选项意味着对所有子目录下的文件也都进行同样的操作

格式:chgrp 用户组 文件名  例:chgrp -R user smb.conf

 

7. vim 

(1)替换: 使用 :s 命令来替换字符串 

:s/vivian/sky/ 替换当前行第一个 vivian 为 sky

:s/vivian/sky/g 替换当前行所有 vivian 为 sky 

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky 

(2)查找: 使用/word   下一个n    上一个N

(3) 剪切一行:dd    (4)复制一行:yy       (5)粘贴:p

(6)定位:gg定位到第一行,G定位到最后一行

(7)删除所有行:1,$d    (8)撤销: u     (9)反撤销:ctrl+r 

 

8.rm 

删除Linux系统中的文件或目录

要慎用rm -rf *这样的命令

-f 强制删除,忽略不存在的文件,从不给出提示

-i 交互模式删除文件,删除文件前给出提示

-r 递归的删除目录下面文件以及子目录下文件

 

9.sort

sort 将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

-r   以相反的顺序来排序。

-f   排序时,忽略大小写字母。

-b   忽略每行前面开始出的空格字符。

 

 

10.uniq

uniq 命令删除文件中的重复行。

注:uniq只除去相邻的重复的行,可以使用 sort 命令使所有重复行相邻,然后可以真正的去除所有重复的行

-c 在输出行前面加上每行在输入文件中出现的次数。

-d 仅显示重复行。

-u 仅显示不重复的行。

 

11.查询某一段时间的日志 

awk -F ']' '($1 >= "2017-03-12 01:50:11" && $1 <= "2017-03-12 01:50:13"){print $1}'

 

12.堆和栈的区别

  一、堆栈空间分配区别:

  1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;

  2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

  二、堆栈缓存方式区别:

  1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;

  2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。

  三、堆栈数据结构区别:

  堆(数据结构):堆可以被看成是一棵树,如:堆排序;

  栈(数据结构):一种先进后出的数据结构。

 

13.Linux进程结构

可由三部分组成:代码段、数据段、堆栈段。也就是程序、数据、进程控制块PCB(Process Control Block)组成。进程控制块是进程存在的惟一标识,系统通过PCB的存在而感知进程的存在。

代码段存放程序的可执行代码。数据段存放程序的全局变量、常量、静态变量。堆栈段中的堆用于存放动态分配的内存变量,堆栈段中的栈用于函数调用,它存放着函数的参数、函数内部定义的局部变量。

 

14.IO模型

常见的IO模型有四种:

(1)同步阻塞IO(Blocking IO):即传统的IO模型。

(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。

(3)IO多路复用(IO Multiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,Java中的Selector和Linux中的epoll都是这种模型。

(4)异步IO(Asynchronous IO):即经典的Proactor设计模式,也称为异步非阻塞IO。

同步和异步的概念描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。

阻塞和非阻塞的概念描述的是用户线程调用内核IO操作的方式:阻塞是指IO操作需要彻底完成后才返回到用户空间;而非阻塞是指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成。

 

15.find

在目录结构中搜索文件,并执行指定的操作。

find pathname -options [-exec]

-name   按照文件名查找文件。

-mtime -n +n  按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前

-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格。 例: php {} \;

 

16.文件属性

l是链接 d是目录 c是字符设备文件 b是块设备  -是文件

 

17.socket

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。

 

18.tar

压缩操作:

# tar -cvf /usr/local/auto_bak/test.tar /usr/local/test 仅打包,不压缩 

# tar -zcvf /usr/local/auto_bak/test.tar.gz /usr/local/test 打包后,以gzip压缩

解压操作:

#tar -zxvf /usr/local/test.tar.gz

 

19.软连接

软连接: ln -s 源文件 目标文件

20.shell操作光标

ctrl + a 移动光标到行首

crtl + e 移动光标到行尾

ctrl + u 删除光标左边的内容

 

20.全局查找

查找某个目录所有文件里是否含有某个字符串:

(1)进入要查询的目录

(2)grep -rn "hello world" *

 

21.快捷键

复制:ctrl+insert

粘贴:shift+insert

 

22.dstat

实时地看到所有系统资源使用情况

CPU状态:CPU的使用率,这项报告更有趣的部分是显示了用户,系统和空闲部分

磁盘统计:磁盘的读写操作,这一栏显示磁盘的读、写总数。

网络统计:网络设备发送和接受的数据,这一栏显示的网络收、发数据总数。

分页统计:系统的分页活动

系统统计:这一项显示的是中断(int)和上下文切换(csw)

 

23.历史命令

history 记录执行过的命令

ctrl+r  反向查询历史命令

你可能感兴趣的:(操作系统)