linux基础2

https://www.linuxcool.com/
1、inode
linux操作系统的文件权限与文件属性。
文件系统通常会将这两部分分别存放在inode和block中。
硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节,操作系统读取硬盘的时候,一次性读取一个块block。块是文件存取的最小单位,由多个扇区组成的块。块的大小,最常见的是4KB,即连续八个sector组成一个block。
文件系统中的数据分为数据和元数据,
数据指的是普通文件中的实际数据。
元数据指用来描述一个文件的特征的系统数据,如访问权限、文件拥有者基于文件数据块的分布信息等等。
存储文件的元信息的区域就是inode。中文译名索引节点,也叫i节点,一个文件必须占用一个inode,至少占用一个Block。
inode包含很多的文件元信息,但不包含文件名,例如:字节数、属主UserID、属组GroupID、读写执行权限、时间戳等。

而文件名存放在目录当中,但Linux系统内部不使用文件名,而是使用inode 码识别文件。对于系统来说文件名只是inode 码便于识别的别称。
df可以获取当前磁盘被占用多少空间,还剩下多少空间等信息,-h表示格式化输出数据,-i表示显示i节点信息。
2、文件类型和文件权限由10个字符组成:
第 1 位表示文件的类型;
第 2 – 4 位表示文件所有者对文件的权限;
第 5 – 7 位表示文件所有者所在组的用户对文件的权限;
第 8 – 10 位表示其他用户对文件的权限。

其中 r 表示可读,w 表示可写,x 表示可执行,- 表示没有权限
3、linux下的进程有运行态、就绪态和等待态三种状态
4、route 命令用于显示和操作IP路由表;
tracert 为 Windows 路由跟踪实用程序,可以用于确定 IP 数据包访问目标时所选择的路径;
ping 命令用于检测主机;
netstat 命令用于显示 络状态,利用 netstat 指令可以得知整个 Linux 系统的 络情况。
5、大多数的 Linux(Red Hat、Slackware、Caldera)都以 bash 作为缺省的shell,并且运行 sh 时,其实调用的是 bash。
Bourne Again shell(bash)
Bourne shell(sh)
Korn shell(ksh)
C shell(csh)
6、文件句柄0,1,2分别是标准输入,标准输出,标准错误。
7、基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识 星期0~6(0表示星期天)
第6列要运行的命令
8、-u 用户 指定用户的用户 ;因为系统用户的用户 为 0,故指定用户 为 0;
如果同时有 -o 选项,则可以重复使用其他用户的标识 ,因为系统本身存在用户 为 0 的系统用户,故应该使用该参数。
9、rsync是中小型企业常用的同步工具是基于内容的同步,其他的也都可以,但是存在一些问题,
rsync结合inotify可以达到实时同步,最重要的是rsync是同步差异的内容,而不是同步差异的文件开销比其他的小,并且是基于ssh协议的,sshd服务都是服务器必备的,不需要额外装其他服务
wget 基于http/ftp协议的.ftp 需要其他服务 scp基于ssh协议 ,这些都是基于文件内容做同步开销大
10、find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
-newer file 表示查找修改比 file 文件更新的文件,! 表示取反,所以整个的意思是:查找更改时间比文件 file1 新但比文件 file2 旧的文件。
11、可移植可执行文件(Portable Executable,PE)是一种用于可执行、目标文件和动态链接库的文件格式,主要用于Windows,而使用于Linux和多数Unix系统中的是可执行与可链接格式(ELF),Mac OS中则主要使用Mach-O;
12、lseek()函数:移动文件的读写位置
read() write()读写文件
pread() pwrite()带偏移量的读写文件
都属于系统调用
feek() 库函数
13、cfdisk是用来磁盘分区的程序,类似DOS的fdisk,具有互动式操作界面而非传统fdisk的问答式界面,可以轻易地利用方向键来操控分区操作。
fdisk是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。
/etc/mtab记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;而/etc/fstab是系统准备装载的
etc/fstab记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。
14、ls>c会先生成c文件,然后ls的结果就是abc,重定向到c中,所以c中是abc.
15、/etc/fstab是系统分区的配置文件,开机后系统会自动挂载文件中制定的设备;
但是光驱U盘这些移动设备是无法开机自动挂起的,否则将造成系统启动失败。
noauto是非自动挂起;手动挂载的,也用于CD-ROW等移动设备
rw :读写;
ro :只读;
sw :交换分区;
defaults :默认设置;
16、Linux下进程间通信的几种主要手段简介:
a)管道(Pipe):即有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;
b)信 (Signal):信 是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信 给进程本身;linux除了支持Unix早期信 语义函数sigal外,还支持语义符合Posix.1标准的信 函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信 机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);
c)Message(消息队列):消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信 承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
d)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信 量结合使用,来达到进程间的同步及互斥。
e)信 量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
f)套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。
Linux线程间通信:互斥体,信 量,条件变量
Windows线程间通信:临界区(Critical Section)、互斥量(Mutex)、信 量(Semaphore)、事件(Event)
Windows 进程间通信:管道、内存共享、消息队列、信 量、socket
Windows 进程和线程共同之处:信 量和消息(事件)
用于进程间通讯(IPC)的四种不同技术:

  1. 消息传递(管道,FIFO,posix和system v消息队列)
  2. 同步(互斥锁,条件变量,读写锁,文件和记录锁,Posix和System V信 灯)
  3. 共享内存区(匿名共享内存区,有名Posix共享内存区,有名System V共享内存区) 4. 过程调用(Solaris门,Sun RPC)
    通信,指的进程/线程有交互,可以通过共享资源进行通知或数据传递。临界区则是一种概念,指的是访问公共资源的程序片段,并不是一种通信方式
    17、子进程继承父进程
    用户 UIDs和用户组 GIDs
    环境Environment
    堆栈
    共享内存
    打开文件的描述符
    执行时关闭(Close-on-exec)标志
    信 (Signal)控制设定
    进程组
    当前工作目录
    根目录
    文件方式创建屏蔽字
    资源限制
    控制终端
    子进程独有

进程 PID
不同的父进程
自己的文件描述符和目录流的拷贝
子进程不继承父进程的进程正文(text),数据和其他锁定内存(memory locks)
不继承异步输入和输出
父进程和子进程拥有独立的地址空间和PID参数。

子进程从父进程继承了用户 和用户组 ,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
经过fork()以后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把自己克隆了一遍。事实上,父进程只复制了自己的PCB块。而代码段,数据段和用户堆栈内存空间并没有复制一份,而是与子进程共享。只有当子进程在运行中出现写操作时,才会产生中断,并为子进程分配内存空间。由于父进程的PCB和子进程的一样,所以在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”
18、文件类型和权限由开头的 10 个字符表示,第一位表示文件的类型,有如下几种:

  • 普通文件类型
    d 目录文件
    b 块设备文件
    c 字符设备文件
    s 套接字文件
    p 管道文件
    l 链接文件
    19、在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下: minute hour day-of-month month-of-year day-of-week commands 第一项是分钟,第二项是小时,第三项是一个月的第几天,第四项是一年的第几个月,第五项是一周的星期几,第六项是要执行的命令。这些项都不能为空,必 须填入。如果用户不需要指定其中的几项,那么可以使用代替。因为是统配符,可以代替任何字符,所以就可以认为是任何时间,也就是该项被忽略了。
    crontab文件的格式:M H D m d cmd.
    M:MIN
    H:HOUR
    D:DAY
    m:MONTH
    d:DAYOFFWEEK
    cmd:COMMAND
    通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。
    时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。
    这个命令非常适合周期性的日志分析或数据备份等工作。
    20、snprintf 在stdio.h头文件中,其他的在string.h头文件中
    首先,使用场景不同。除了snprintf之外,其他的都是用于两个字符串之间进行比较、拷贝、拼接等操作的,而snprintf最主要是,要把一个用户变量按照一个format打印到字符串中。
    其次,函数参数类型不同。除了snprintf之外,其他的都是定长参数,而snprintf是接受变长参数的。
    最后,定义位置也不同,除了snprintf位于stdio.h之外,其他的都是string.h中的。
    因此,snprintf和其他的一定不是一类的,单从头文件的划分就能看出来。
    P.S. glibc的头文件划分绝大多数都很有讲究。
    21、关闭文件的目的之一是释放内存中的文件对象——正确的,因为要把这块内存空间标记,等待回收。
    关闭文件的目的之一是保证将输出的数据写入硬盘文件——正确的,因为要关闭输入输出流。
    很明显这是错的,文件读写过程中,要通过缓冲区buffer,程序不可能直接和硬盘文件交换数据的,不然要内存和缓存干嘛呢是吧。
    打开文件的目的是使文件对象和磁盘文件建立联系——正确的,这是操作系统层面的问题,有寻址的过程。
    22、$0 为脚本名, 1 为第一个参数名 . . . . . 所以把这条命令当做一个空格间隔的数组, 1为第一个参数名…..所以把这条命令当做一个空格间隔的数组, 1为第一个参数名…..所以把这条命令当做一个空格间隔的数组,n是取到对应下标n的字符串…
    变量说明:
    $$
    Shell本身的PID(ProcessID)
    $!
    Shell最后运行的后台Process的PID
    $br> 最后运行的命令的结束代码(返回值)
    $-
    使用Set命令设定的Flag一览
    所有参数列表。如 ” * 所有参数列表。如” /span>所有参数列表。如*“用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。
    @ 所有参数列表。如 ” @ 所有参数列表。如” @所有参数列表。如@“用「”」括起来的情况、以”$1″ “ 2 ” … ” 2″ … ” 2″n” 的形式输出所有参数。
    $#
    添加到Shell的参数个数
    $0
    Shell本身的文件名
    1 ~ 1~ 1n
    23、cat(concatenate)命令用于连接文件并打印到标准输出设备上;
    | 是管道符,用于将两个命令隔开,管道符左边命令的输出会作为管道符右边命令的输入;

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。

meminfo文件中,有以下信息(未完全列出)

MemTotal: 所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小)

SwapCached: 已经被交换出来的内存,但仍然被存放在swapfile中。用来在需要的时候很快的被替换而不需要再次打开I/O端口。

HighTotal:
HighFree: 高位内存是指所有在860MB以上的内存空间,该区域主要用于用户空间的程序或者是缓存页面。内核必须使用不同的手法使用该段内存,因此它比低位内存要慢一些。

SwapTotal: 交换空间的总和

Writeback: 正在被写回到磁盘的内存大小。

返回说明:
成功执行时,mmap()返回被映射区的指针,munmap()返回0。失败时,mmap()返回MAP_FAILED(其为(void*)-1),munmap 返回-1。
参数:
start:映射区的开始地址。
length:映射区的长度。
prot:映射区域的保护方式。可以为以下几种方式的组合

lags:指定映射对象的类型,映射选项和映射页是否可以共享。它的值可以是一个或者多个以下位的组合体

fd:有效的文件描述词。
offset:被映射对象内容的起点

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8596 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月23日
下一篇 2022年7月23日

相关推荐