Nowcoder专项练习:Linux(三)

1,Linux的系统调用

所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。系统调用是用户程序和内核交互的接口

5个系统调用∶open,write,read,close,ioctl


2,终止进程的操作

  • Ctrl + C:只能杀死正在运行的进程,也就是前台进程。
  • kill:可以杀死前台和后台的进程。

3,文件查找命令

  • locate并不真正对硬盘上的文件系统进行查找,而是对文件名数据库进行检索,而且可以使用通配符?和*
  • find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作
  • whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)
  • type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令

4,Linux系统进程类型

Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。

  1. 交互进程——由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
  2. 批处理进程——这种进程和终端没有联系,是一个进程序列。
  3. 监控进程(也称守护进程)——Linux系统启动时启动的进程,并在后台运行。

5,Linux系统运行时间

在Shell环境下,如何查看远程Linux系统运行了多少时间?

  • ssh user@被监控主机ip "uptime"

  • ssh 用于远程登录;

  • uptime命令可以查看当前linux系统运行了多长时间;

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。

  • scp [可选参数] file_source file_target

6,nohup命令

  • nohup命令
    如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思(no hang up)

7,ARP的传播方式

地址解析协议,即ARP(Address Resolution Protocol),是根据 IP地址 获取 物理地址的一个TCP/IP协议 。 主

机发送信息时将包含目标IP地址的ARP请求**广播(broadcast)**到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。


8,进程间通信方式

进程A读取B进程中的某个变量(非共享内存),可行的方式有什么?
(1)B进程向消息队列写入一个包含变量内容的消息,A进程从队列中读出。
(2)通过本地环路通信。
(3)如果A、B 非亲属,那么A通过命名管道把这个变量的地址发给B进程。
(4)如果 B是A 进程的子进程,那么B直接读取变量内容即可。

首先,上面四个通信方式:
(1)是消息队列的实现方式。
(2)是本地Socket通信方式。
(3)是命名管道通信方式。
(4)是通过fork子进程的方式。

实际可行的是 (1)和(2)

对于(3),命名管道虽然可以通讯,但是把变量的地址传递过去是没有用的,因为不同的进程的地址空间是独立的,谁也不能访问谁的,只有传值才行,传地址是不行的。
对于(4),子进程虽然是由父进程fork()出来的,但是仍然属于两个进程,不同进程之间也是独立的,子进程无权读取父进程的变量。


9,进程同时打开文件

Linux下两个进程可以同时打开同一个文件,则:

  • 两个进程中分别生成两个独立的fd
  • 两个进程可以任意对文件进行读写操作,操作系统并不保证写的原子性
  • 进程可以通过系统调用对文件加锁,从而实现对文件内容的保护
  • 一般删除都是文件索引,如果两个文件同时打开同一个文件,一个线程执行删除操作,只要另一个线程不退出,就可以继续对该文件进行操作,一旦退出才找不到该文件的索引节点而报错
  • 两个进程可以分别读取文件的不同部分而不会相互影响
  • 一个进程对文件长度和内容的修改另外一个进程可以立即感知

10,ADM

  1. ADM 文件是不能单独打开的。
  2. ADM 文件是组策略用以描述基于注册表的策略设置在注册表中的存储位置的模板文件。
  3. ADM 文件还描述了管理员在“组策略对象编辑器”管理单元中看到的用户界面。管理员使用组策略对象编辑器创建或修改组策略对象 (GPO)。

11,fork

一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来的进程几乎完全相同的进程,也就是两个进程可以做完全相同的事情。但是,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。

一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己

下列程序代码在Linux系统执行后"*"会被输出多少次?

void main()
{
   int i;
   for(i=0;i<3;i++)
   {
      fork();
      printf("*\n");
    }
  return;
}

在上面的这段代码中,每次运行到fork(),当前程序就会自动克隆一个自己,而输出的时候有\n,刷新了缓冲区,因此:
在这里插入图片描述
因此,最后输出为14个*。


12,clone与fork

  • fork()函数赋值时将父进程的所有资源都通过复制数据结构进行了复制,然后传递给了子进程,因此,fork()函数不带有参数
  • clone()函数则是将部分父进程的资源的数据结构进行了复制,复制哪些资源是可以选择的,这个可以通过参数去设定,因此,clone()函数带有参数,没有复制的资源可以通过指针分享给子进程。

13,git合并代码

  • git pull --rebase
  • git merge
  • git cheery-pick

以上三者都可以合并代码

而对于git blame命令,则是会逐行显示文件,并在每一行的行首显示commit号,提交者。最早提交日期等,并不是合并代码的命令。


14,路径表示

  • PWD: 是print working directory的缩写,用于记录查看当前的目录路径,当利用cd命令切换当前路径时,系统自动更新PWD的值。OLDPWD用于记录旧的工作目录,即用户所处的前一个目录。
  • PATH: PATH 是 Linux 中一个极为重要的环境变量,它用于帮助 Shell 找到用户输入的命令。用户所输入的每个命令实际上是一个源代码文件,计算机执行这个文件里的代码以实现这个命令的功能,这些源代码文件称为可执行文件。可执行文件存在于各种各样的目录下, PATH 就记录了一系列的目录列表, Shell 为每个输入命令搜索 PATH 中的目录列表。
  • HOME: HOME 记录当前用户的目录,由 /etc/passwd 的倒数第 2 个域决定, HOME 目录用于保存用户自己的文件。

15,Unix系统的组成

Unix系统由以下4部分组成:

  • Kernel(内核)
  • Shell(外壳)
  • 文件系统
  • 应用程序

16,GID

组标识号(GID):是当前用户缺省的工作组标识,具有相似属性的多个用户可以被分配到同一个组,每个组都有自己的组名,且以组标识号区分,除了在/etc/passwd指明其归属的组外,还在/etc/group中指明组包含的用户。

Q:通过编辑/etc/group文件来改变了sales group的GID,所有的组员都能成功的进行的转换,除了Jack,他甚至都无法登陆,原因是什么?

A:/etc/group是用户组信息文件,里面定义了用户组的ID, /etc/passwd是用户基本信息文件,里面定义了用户的ID,用户组的ID等相关信息,所以因为两个文件中都定义了用户组的信息,所以两个文件应该都要改过来,否则会导致用户找不到所属组。


17,对内核进行配置

Q:编译内核时,可以使用哪些命令对内核进行配置?

A:

  • make config
  • make menuconfig
  • make oldconfig
  • make xconfig

18,fork、子进程与父进程

使用fork函数得到的子进程从父进程继承了整个进程的地址空间,包括:
进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等

子进程和父进程的不同之处在于:

  • 父进程设置的锁,子进程不会继承(因为如果是排它锁,如果被继承,自然就矛盾了)
  • 各自的进程ID父进程的ID是不同的。
  • 子进程未决告警被清除。
  • 子进程的未决信号集设置为空集。

19,查看文件大小命令

  • ls -lh: 可以查看文件的权限、大小;
  • df: 主要是可以查看文件系统占用的磁盘空间的使用情况。
  • du: 主要是可以查看指定文件和目录所占用的空间大小。

20,UNIX的进程

通常,一个进程由三个部分组成:进程控制块(PCB)、数据和程序。

在UNIX中,一个进程也由三个部分组成:进程控制块、数据段和共享正文段,并有其自身的不同含义。

进程运行时用到的数据以及工作区,构成了一个进程的数据段。
需要注意的是,如果进程执行的程序是不能被共享的,那么也把他归入到数据段中

为了管理好进程的共享正文段,UNIX在内存专门开辟一个text结构区域,形成正文段text[]。

因此,划分进程为进程控制块、数据段和共享正文段可以实现:

  • 共享正文
  • 共享数据
  • 可重入

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值