1.Linux关机重启命令:

在linux命令中reboot重新启动shutdown -r now是立即停止然后重新启动,都说他们两个是一样的,其实是有一定的区别的。
    shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。
    精确时间的格式是hh:mm,表示小时和分钟,时间段由+ 和分钟数表示。系统执行该命令后会自动进行数据同步的工作。
    该命令的一般格式: shutdown [选项] [时间] [警告信息]
    命令中各选项的含义为:
       - k 并不真正关机而只是发出警告信息给所有用户
       - r 关机后立即重新启动
       - h 关机后不重新启动
       - f 快速关机重启动时跳过fsck
       - n 快速关机不经过init 程序
       - c 取消一个已经运行的shutdown
    需要特别说明的是该命令只能由超级用户使用。
    例1,系统在十分钟后关机并且马上重新启动: # shutdown –r +10
    例2,系统马上关机并且不重新启动:# shutdown –h now
  halt是最简单的关机命令,其实际上是调用shutdown -h命令。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。
    halt命令的部分参数如下:
     [-f] 没有调用shutdown而强制关机或重启
     [-i] 关机或重新启动之前,关掉所有的网络接口
     [-p] 关机时调用poweroff,此选项为缺省选项

reboot的工作过程与halt类似,其作用是重新启动,而halt是关机。其参数也与halt类似。reboot命令重启动系统时是删除所有的进程,而不是平稳地终止它们。因此,使用reboot命令可以快速地关闭系统,但如果还有其它用户在该系统上工作时,就会引起数据的丢失。所以使用reboot命令的场合主要是在单用户模式。
    init是所有进程的祖先,其进程号始终为1。init用于切换系统的运行级别,切换的工作是立即完成的。init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别切换为6,即重新启动。

2.进程对应的内存空间中所包含的5种不同的数据区:

代码段:代码段是用来存放可执行文件的操作指令,也就是说是它是可执行程序在内存中的镜像。代码段需要防止在运行时被非法修改,所以只准许读取操作,而不允许写入(修改)操作—它是不可写的。
    数据段:数据段用来存放可执行文件中已初始化全局变量,换句话说就是存放程序静态分配的变量和全局变量
    BSS段:BSS段包含了程序中未初始化的全局变量,在内存中bss段全部置零。
    堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。
    :栈是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进后出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。

3.Linux文件权限:

为了更加安全的存储文件,Linux为不同的文件赋予了不同的权限,每个文件都拥有下面三种权限:
     ● 所有者权限:文件所有者能够进行的操作。
     ● 组权限:文件所属用户组能够进行的操作。
     ● 外部权限(其他权限):其他用户可以进行的操作。
    查看文件权限
    ls -l 命令可以查看与文件权限相关的信息:

$ls -l /home/amrood
-rwxr-xr-- amrood users Nov : myfile
drwxr-xr--- amrood users Nov : mydir

第一列就包含了文件或目录的权限。

第一列的字符可以分为三组,每一组有三个,每个字符都代表不同的权限,分别为读取(r)、写入(w)和执行(x):
      · 第一组字符(2-4)表示文件所有者的权限,-rwxr-xr-- 表示所有者拥有读取(r)、写入(w)和执行(x)的权限。
      · 第二组字符(5-7)表示文件所属用户组的权限,-rwxr-xr-- 表示该组拥有读取(r)和执行(x)的权限,但没有写入权限。
      · 第三组字符(8-10)表示所有其他用户的权限,rwxr-xr-- 表示其他用户只能读取(r)文件。
   文件访问模式
      文件权限是Linux系统的第一道安全防线,基本的权限有读取(r)、写入(w)和执行(x):
       · 读取:用户能够读取文件信息,查看文件内容。
       · 写入:用户可以编辑文件,可以向文件写入内容,也可以删除文件内容。
       · 执行:用户可以将文件作为程序来运行。
   目录访问模式
      目录的访问模式和文件类似,但是稍有不同:
      · 读取:用户可以查看目录中的文件
      · 写入:用户可以在当前目录中删除文件或创建文件
      · 执行:执行权限赋予用户遍历目录的权利,例如执行 cd 和 ls 命令。

改变权限:
     chmod (change mode) 命令来改变文件或目录的访问权限,权限可以使用符号或数字来表示。
     使用符号表示权限:
     可以增加(+)和删除(-)权限,也可以指定特定权限。
     符号说明:
        +   为文件或目录增加权限
        -   删除文件或目录的权限
        =  设置指定的权限
    下面的例子将会修改testfile文件的权限:

$ls -l testfile
-rwxrwxr-- amrood users Nov : testfile
$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx amrood users Nov : testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx amrood users Nov : testfile
$chmod g=rx testfile
$ls -l testfile
-rw-r-xrwx amrood users Nov : testfile

也可以同时使用多个符号:

$chmod o+wx,u-x,g=rx testfile
$ls -l testfile
-rw-r-xrwx amrood users Nov : testfile

使用数字表示权限:
     除了符号,也可以使用八进制数字来指定具体权限,如下表所示:
     数字权限说明:
      0               没有任何权限                                                         ---
      1               执行权限                                                               --x
      2               写入权限                                                               -w-
      3    执行权限和写入权限:1 (执行) + 2 (写入) = 3                  -wx
      4               读取权限                                                               r--
      5    读取和执行权限:4 (读取) + 1 (执行) = 5                         r-x
      6    读取和写入权限:4 (读取) + 2 (写入) = 6                         rw-
      7    所有权限: 4 (读取) + 2 (写入) + 1 (执行) = 7                    rwx

下面的例子,首先使用  ls -1  命令查看testfile文件的权限,然后使用chmod命令更改权限:

$ls -l testfile
-rwxrwxr-- amrood users Nov : testfile
$ chmod testfile
$ls -l testfile
-rwxr-xr-x amrood users Nov : testfile
$chmod testfile
$ls -l testfile
-rwxr---wx amrood users Nov : testfile
$chmod testfile
$ls -l testfile
----r---wx amrood users Nov : testfile  

更改所有者和用户组
    在Linux中,每添加一个新用户,就会为它分配一个用户ID和群组ID,上面提到的文件权限也是基于用户和群组来分配的。

有两个命令可以改变文件的所有者或群组:
     · chown :chown 命令是"change owner"的缩写,用来改变文件的所有者。
     · chgrp :chgrp 命令是"change group"的缩写,用来改变文件所在的群组。

chown 命令用来更改文件所有者,其语法如下:
        $ chown user filelist
        user 可以是用户名或用户ID,例如
        $ chown amrood testfile
        $ 将testfile文件的所有者改为amrood。

注意:超级用户 root 可以不受限制的更改文件的所有者和用户组,但是普通用户只能更改所有者是自己的文件或目录。

chgrp 命令用来改变文件所属群组,其语法为:
        $ chgrp group filelist
        group 可以是群组名或群组ID,例如
        $ chgrp special testfile
        $ 将文件 testfile 的群组改为 special。

4.死锁:

产生死锁的原因主要是:
   (1) 因为系统资源不足
   (2) 进程运行推进的顺序不合适
   (3) 资源分配不当等。
   如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。 
   产生死锁的四个必要条件:
   (1) 互斥条件:一个资源每次只能被一个进程使用。
   (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
   (3) 不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。
   (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
   这四个条件是死锁的必要条件 ,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。 
   死锁的解除与预防:
   理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。

5.fork()函数:

不算main这个进程自身,到底创建了多少个进程啊?

int main(int argc, char* argv[])
{
fork();
fork() && fork() || fork();
fork();
}
     (1) A&&B||C
      A为假,跳过B,判断C;
      A为真,判断B,若B为真,跳过C;
                           若B为假,判断C.
     (2) fork()函数父进程返回子进程ID;子进程返回0
     第一条语句新增1个;
     第二条语句新增4*2个;
    第三条语句,此时已有进程1+1+4*2个,所以新增10个.
    总数为2*(2+1+2)*2=20;减去自己就是19.

Linux面试知识点总结的更多相关文章

  1. 知名互联网公司校招 Java 开发岗面试知识点解析

    天之道,损有余而补不足,是故虚胜实,不足胜有余. 本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几 ...

  2. Java 面试知识点解析(四)——版本特性篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  3. Java 面试知识点解析(五)——网络协议篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  4. Java开发岗面试知识点解析

    本文作者参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几个部分: Java 基础知识点 Java 常见集合 高并发编 ...

  5. web开发前端面试知识点目录整理

    web开发前端面试知识点目录整理 基本功考察 关于Html 1. html语义化标签的理解; 结构化的理解; 能否写出简洁的html结构; SEO优化 2. h5中新增的属性; 如自定义属性data, ...

  6. Java 开发岗面试知识点

    本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几个部分: Java 基础知识点 Java 常见集合 ...

  7. [ Java面试题 ]Java 开发岗面试知识点解析

    如背景中介绍,作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向. 在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几个部分: Java 基础知识点 Jav ...

  8. 前端开发面试知识点大纲--摘自jackyWHJ

    前端开发面试知识点大纲:HTML&CSS:    对Web标准的理解.浏览器内核差异.兼容性.hack.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端适应 Ja ...

  9. Linux面试基础题-2

    继续我们这面试系列,在这篇文章里我们给出了10个问题.这些问题或者是在以后的文章中出现的问题不一定在面试中会被问到.然而通过这些文章我们呈现出的是一个交互的学习平台,这必将会对你有很大的帮助. 自本系 ...

随机推荐

  1. ueditor工具栏新增按钮教程

    我做了一个人博客网站想要一段文字高亮显示,大概是这样: 但是ueditor上面的代码语言是一大块的<pre></pre>标签,觉得不合适,就在网上搜索相关文章,自己结合着实现了 ...

  2. Jquery实现特效滑动菜单栏

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. p/invoke 碎片-- 对字符串的处理

    字符串在内存中的的几种风格 字符串作为参数和返回值 参考 字符串在内存中的几种风格 所谓的风格,也就是字符串在内存中的存在形式.如何存放的,占据内存的大小,还有存放顺序等.在不同的编程语言和不同的平台 ...

  4. 执行non-Java processes命令行的工具ExecHelper

    在Java程序里执行操作命令行工具类: public static void main(String[] args) { try { /*String file = ExecHelper.exec( ...

  5. MySQL的简单使用

    MySQL 参数     参数 描述 备注 -D,--database=.name 打开指定数据库 mysql –uroot –procky –Dhisdb 或者mysql –uroot –prock ...

  6. KVC 和 KVO

    KVC 键值编码    全称是Key-value coding,翻译成键值编码.它提供了一种使用字符串而不是访问器方法去访问一个对象实例变量的机制.        1.通过key(成员变量的名称)设置 ...

  7. 有时打开myeclipse,部署报错解决方案

    1.首先关闭MyEclipse工作空间. 2.然后删除工作空间下的 "/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.g ...

  8. Virtualbox 上调整 Mac OS 分辨率 最简单方法

    Mac OS 分辨率:VBoxManage setextradata "Mac OS X 10.10" VBoxInternal2/EfiGopMode 3       ----代 ...

  9. 客户有两台windows服务器要做sql server双机切换

    基本架构 2 windows 2008 server:安装成域控制器,实现故障转移(虚拟ip访问,共享磁盘阵列卷链接主服务器),安装sqlserver2012 1磁盘阵列共享卷:数据库文件放于其中,两 ...

  10. PYTHON 内置函数

    bin() #二进制 r = bin(11) print(r) # 0b1011 oct() #八进制 r = oct(14) print(r) #0o16 int() #十进制 r = int(10 ...