Linux知识点汇总二(NK)

目录

42. Linux进程间的通信方式有哪些

43. Linux线程间的通信方式有哪些

44. Windows进程间的通信方式有哪些

45. Windows线程间的通信方式有哪些

46. 可以查看某IP是否可达的命令

47. Linux中查看文件的方法有哪些

48. whereis命令的作用

49. Umask是什么

50. 退出vi编辑器并保存对文件的修改,有两种方式

51. 在vi编辑文件时,如何查找字符串

52. Nginx的配置文件 nginx.conf的相关内容

53. init启动进程时,需要读取配置文件:/etc/inittab

54. man的级别

55. 终止前台和后台进程的命令

56. 两个进程同时打开同一个文件时

57. /etc/shadow, /etc/passwd的作用

58. ARP是什么

59. 挂载设备用mount, 卸载设备用unmount

60. 对于线程,其虚拟内存的大小不受物理内存大小的限制

61. 任何shell都会执行exec+fork命令

62. 将目标文件打包成静态库文件: ar

63. 关于makefile的描述

64. sizeof求大小的常见文件

65. 从文本文件的每一行中截取指定内容的数据: cut

66. 输入输出重定向:标准输入,标准输出,标准错误输出

67. 硬链接和软链接

68.  arm-linux-gcc 命令的常用参数

69. 批量删除当前目下的所有.c文件

70. locate命令查找文件

71. 改变权限chmod,改变所有者chown,改变所属组chgrp

72. 新建用户 useradd

73. Shell环境下,如何查看远程Linux系统运行的时间

74. 关于网络编程的描述小结

75. logcat命令

76. history命令:查看最近的n条信息

77. 从后台启动程序,应该在命令的结尾加上 &

78. 查看Linux机器的CPU, SWAP分区,硬盘信息

79. 删除文件行相关的命令dd

80. 打印相关的命令 plr


【写在前面】

为了便于查找,这里另起一篇汇总文。

汇总一的链接在此: Linux知识点汇总一(NK)

42. Linux进程间的通信方式有哪些

(1)管道pipe:即有名管道named pipe,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的所有功能外,它还允许五亲缘关系进程间的通信。

(2)信号signal:信号是比较复杂的通信方式,用于通知接收进程有某种事件发生。除了用于进程间通信外,进程还可以发送信号给进程本身。Linux除了支持Unix早期信号语义函数signal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数时基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。

(3)消息队列message:消息队列是消息的链接表,包括Posix消息队列systen V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点。

(4)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其他通信机制,如信号量结合使用,来达到进程间的同步以及互斥。

(5)信号量 semaphore:主要作为进程间以及统一进程不同线程之间的同步手段。

(6)套接口 socket:更为一般的进程间通信机制,可用于不同机器之间的进程通信。期初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其他类Unix系统上:Linux和System V的变种,都支持套接字。

43. Linux线程间的通信方式有哪些

(1)互斥体

(2)信号量

(3)条件变量

44. Windows进程间的通信方式有哪些

(1)管道

(2)内存共享

(3) 消息队列

(4)信号量

(5)socket

45. Windows线程间的通信方式有哪些

(1)临界区 critical section

(2)互斥量 mutex

(3) 信号量 semaphore

(4)事件 event

补充:

Windows进程和线程共同之处:信号量和消息(事件)

46. 可以查看某IP是否可达的命令

(1)ping:用来检查自己主机是否与目标地址接通。

(2)tracert:windows的命令,是一个简单的网路诊断工具,可以列出分组经过的路由节点,以及它在IP网络中每一跳的延迟。是路由跟踪实用程序,用于确定IP数据包访问目标所采取的路径。tracert命令用IP生存时间TTL字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由。

(3)telnet:Linux telnet命令用于远端登入,执行telnet指令开启终端机阶段作业,并登入远端主机。 telnet IP

补:

(1)route:该命令在本地IP路由表中显示和修改条目网络命令,可修改路由。

47. Linux中查看文件的方法有哪些

(1)cat:由第一行开始显示文件所有内容

(2)tac:总最后一行开始显示文件的所有内容

(3)more:一页一页的显示文件内容,只能向后翻页

(4)less:也是一页一页显示文件内容,但是可以通过键盘上的 pagedown,pageup键,控制向前还是向后翻页。

(5)head:显示一个文件的前几行

命令:

head -n k:打印前K行

head -n -k:打印除最后K行外

(6)tail:显示一个文件的后几行

命令:

tail -n k:打印最后K行

tail -n +k:从K行开始打印

补充:

(1)sed -n '300-500p' filename:表示打印第300-500行。//sed命令p; 列印,将某个选择的数据印出。p参数与sed -n参数一起运行。

48. whereis命令的作用

whereis命令只能用于程序名称的搜索,而且只搜索二进制文件(-b),man说明文件(-m),源代码文件(-s)。如果省略参数,则返回所有信息。该命令查找的目录,是由环境变量$PATH指定的。

whereis查找的速度非常快,因为Linux系统会将系统内的所有文件都记录在一个数据库文件中。当使用whereis (还有locate命令)时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会高。

但是该数据库文件并不是实时更新的,默认情况下一星期更新一次。因此,在用whereis和locate查找文件时,有时候会找到已经被删除的数据,或者刚刚建立文件却无法查找到。原因就是数据库文件没有更新。

49. Umask是什么

Umask是设置系统创建文件时的默认权限,是创建文件权限补码,对文件来说最大值是6。

比如:Umask设为244,则创建的文件默认权限是422,第一位是-,即-r---w--w-

50. 退出vi编辑器并保存对文件的修改,有两种方式

(1)在末行模式下执行 :wq

(2)在命令模式下执行ZZ命令

51. 在vi编辑文件时,如何查找字符串

(1)从下往上找:?,比如?2021

(2)从上往下找:/,比如/2021

52. Nginx的配置文件 nginx.conf的相关内容

(1)nginx进程数设置为cpu总核心数最佳

(2)虚拟主机配置多个域名时,各域名间用空格隔开

(3)设定http服务器中 sendfile on; ,开启搞笑文件传输模式。对于普通应用,设置为on; 。用于进行下载等应用磁盘IO重负载应用时,设置为off, 以平衡磁盘与网络I/O处理速度,降低系统的负载。

(4)设置工作模式与连接数上限时,应考虑单个进程最大的连接数(最大连接数=连接数*进程数)。

53. init启动进程时,需要读取配置文件:/etc/inittab

(1)/etc/inittab:定义了系统引导时的运行级别,进入或者切换到一个运行级别时做什么

(2)/bin/sh:解释脚本的shell命令,开机后运行

(3)/etc/sysvinit:就是system V风格的init系统,即源于System V系列UNIX。sysvinit中运行模式描述了系统各种预订的运行模式。

(4)/sbin/init:在核心完整的加载后,开始运行系统的第一支程序,主要的功能就是准备软件运行的环境,包括系统的主机名称,网络配置,语系处理,文件系统格式和其他服务的启动等。

54. man的级别

(1)1:查看命令的帮助

(2)2:查看可被内核调用的函数的帮助。系统调用

(3)3:查看函数和函数库的帮助。例程

(4)4:查看特殊文件的帮助,主要是/dev目录下的文件

(5)5:查看配置文件的帮助。文件格式描述,比如 /etc/passwd

(6)6:查看游戏的帮助

(7)7:查看其它杂项的帮助。例如宏命令,惯例等

(8)8:查看系统管理员可用命令的帮助。系统管理员工具,只能由root启动。

补:

man -f 命令:可以查看这个命令有哪些级别

55. 终止前台和后台进程的命令

(1)kill:杀死前台和后台的进程

(2)ctrl+c:杀死正在运行的进程,即前台进程

补:

(1)shut down:重启系统

(2)halt:关闭系统

56. 两个进程同时打开同一个文件时

(1)两个进程中分别产生两个独立的fd

(2)两个进程可以任意对文件进行读写,操作系统并不保证写的原子性

(3)进程可以通过系统调用对文件加锁,从而实现对文件内容的保护

(4)两个进程可以分别读取文件的不同部分而不会互相影响

(5)一个进程删除该文件后,另一个进程可以继续操作,直到退出以后,才找不到文件。因为删除的通常都是文件索引。

57. /etc/shadow, /etc/passwd的作用

(1)/etc/shadow:用来保存所有用户的密码,第二字段为用户的加密密码,如果密码是“!!”或"*"则代表没有密码不能登录,需要用户登录验证。

(2)/etc/passwd:用来保护用户的基本信息。

58. ARP是什么

(1)ARP: address resolution protocol,地址解析协议。

(2)是根据IP地址获取物理地址的一个TCP/IP协议。

(3)工作位于数据链路层(在物理层的上一层),用于将IP地址和物理地址映射。

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

补充:

unicast是单播,broadcast是广播,multicase是多播。

(5)arp -a: all

arp -d: delete

arp -D: Device

arp -L: 没有该参数

59. 挂载设备用mount, 卸载设备用unmount

卸载有三种方式:通过设备名,挂载点,设备名+挂载点

比如: unmount /dev/hdc, unmount /mnt/cdrom,  unmount /mnt/cdrom /dev/hdc ,

60. 对于线程,其虚拟内存的大小不受物理内存大小的限制

进程的虚拟内存大小并不受物理内存大小的限制,例 32位处理器虚拟内存空间可能是4G,但物理内存实际是小于4G的,部分地址空间分配给ROM, 外设等。

61. 任何shell都会执行exec+fork命令

在此基础上,ls还会执行read。所以,执行ls时,引起exec(execve), fork和read的系统调用。

62. 将目标文件打包成静态库文件: ar

(1)将源文件编译成目标文件:gcc -c *.c  //得到目标文件*.o

(2)将目标文件打包成静态库:ar crv libtest.a  *.o  //将该目录下的所有目标文件打包成libtest.a静态库。然后,在编译的时候,就可以直接使用这个静态库

63. 关于makefile的描述

(1)makefile文件保存了编译器和连接器的参数选项,还表述了所有源文件之间的关系(源代码文件需要的特定的包含文件,可执行文件要求包含的目标文件模块和库等)。

创建程序(make程序)时,首先读取makefile文件,然后再激活编译器,汇编器,资源编译器和连接器,以便产生最后的输出。

最后输出big生成的通常是可执行文件,创建程序利用内置的推理规则来激活编译器,以便通过对特定CPP文件的编译来产生特定的OBJ文件。

(2)主要包含了五个内容:显示规则,隐晦规则,变量定义,文件只是和注释

(3)默认情况下,make命令会在当前目录下按顺序找寻文件名为: GNUmakefile, makefile, Makefile的文件,找到后解释这个文件(只会有一个文件,可能有这三个不同的命名)。

这三个文件名中,最好使用Makefile这个文件名,因为这个文件名首字母大写,这样比较显眼。最好不要用GNUmakefile,这个名字是GNU的make识别的。

(4)在Makefile使用include关键字,可以把别的Makefile包含进来,很像C语言的include。

include的用法; include <filename> //filename可以是当前操作系统Shell的文件模式(可以保存路径和通配符)

64. sizeof求大小的常见文件

(1)int在32还是64位系统中,都是32位,4字节。 sizeof(11)=4

(2)字符串末尾为 \0, 算一个字节。sizeof(“Tencent”)=8

(3)指针大小在32位系统中为4字节,在64位系统中为8字节

65. 从文本文件的每一行中截取指定内容的数据: cut

cut, 剪切的意思,从文件的每一行剪切字节,字符和字段,并将这些字节字符字段写至标准输出。

比如: cut -c 2-5 target  //输出target中的2-5字符

66. 输入输出重定向:标准输入,标准输出,标准错误输出

(1)标准输入 stdin, 标准输出 stdout, 标准错误输出 stderr:分别由0,1,2描述

(2)将脚本demo.sh的标准输出和标准错误输出重定向至文件demo.log中,可以用以下方式:

bash demo.sh &> demo.log

bash demo.sh >& demo.log

bash demo.sh > demo.log 2>&1

67. 硬链接和软链接

(1)链接:

是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题。如果链接执行目录,用户就可以利用该链接直接进入被链接的目录,而不用写很长的目录名。而且,我们删除这个链接,也不会破坏原来的目录。

(2)硬链接:

只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引inode。当移除或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据,而不是文件在文件结构中的位置。

硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,有助于文件的安全。如果删除的文件有硬链接,那么这个文件依然会保留,知道所有对它的引用都被删除。

(3)软链接(符号链接):

软链接,其实就是新建一个文件,这个文件就是专门用来指向别的文件的(类似快捷键)。软链接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件,删了这个软链接文件,那就等于不需要这个链接,和原来的存在的实体源文件没有任何关系。

但是,如果删除原来的文件,则相应的软链接不可用(cat 软链接,提示没有该文件或目录)

(4)硬链接和软链接的区别

1)硬链接不会建立inode, 只是在原来的inode link count域增加1而已,因此,硬链接是不可以跨越文件系统的。硬链接删除的时候,系统调用会检查inode link count的值,如果大于等于1,那么inode不会被回收,因此内容不会被删除。

相反,软链接会重新建立一个inode, 该inode结构跟其他的不一样,只是一个致命源文件的字符串信息。一旦删除源文件,那么软链接将变得毫无意义。而 

2)硬链接实际上是为文件建一个别名,链接文件和源文件实际上是同一个文件,可以通过ls -l来查看,其inode号是相同的,说明他们是同一个文件。

而软链接建立的是一个指向,即链接文件内的内容时指向源文件的指针,他们是两个文件。

3)硬链接不可以跨文件系统,软链接可以。

4)硬链接不可以对一个不存在的文件名进行链接(文件名和inode必须存在),软链接可以(可以对不存在的filename链接,此时如果vi这个软链接文件,linux会自动新建一个文件名为filename的文件)

5)硬链接不可以对目录进行链接,硬链接不可以。

6)两种链接都可以通过命令ln来创建,ln默认创建的是硬链接。加-s即可创建软链接。

68.  arm-linux-gcc 命令的常用参数

(1)-o:用于指定输出的文本,如果不指定输出文件,则默认输出.out文件

(2)-c:将对源程序.c文件进行预处理,编译,汇编操作,生成.o文件

(3)-S:将对源程序.c文件进行预处理,编译,生成.s文件

(4)-g:加入GDB能够使用的调试信息,使用GDB调试时比较方便

69. 批量删除当前目下的所有.c文件

(1)rm *.c

(2)find . -name "*.c" -maxdepth 1 | xargs rm

70. locate命令查找文件

(1)locate:并不真正对硬盘上的文件系统进行查找,而是对文件名数据库进行检索,而且可以使用通配符?和 *

区别:

(2)whereis:只能用于程序名的搜索,而且只搜索二进制文件,man说明文件,源代码文件

(3)find:从指定的其实目录开始,递归的搜索其各个子目录,查找满足寻找条件的文件并对之才去相关的操作。

(4)type:用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。

71. 改变权限chmod,改变所有者chown,改变所属组chgrp

(1)改变权限:chmod 777 filepath  

(2)改变所有者:chown 拥有者 filepath

(3)改变所属组:chgrp 所属组 filepath

2和3的需求合到一起,可写为: chown 拥有者:所属组 filepath

72. 新建用户 useradd

创建一个管理员用户:useradd -u 0 -o admin

(1)-u 用户号:指定用户的用户号,系统的用户号为0。如果同时又-o选项,则可以重复使用其他用户的标识号,因为系统本身存在用户号为0的系统用户了,这里再想使用0,故此要加-o。

(2)-g:表示用户组

(3)-e:指定账号的有效期限,缺省表示永久有效

(4)-f:指定在密码过期后多少天即关闭该账号

(5)-p:表示创建密码

(6)-m:创建用户的主目录

(7)-M:不创建用户的主目录

(8)-o:允许使用重复的UID创建用户

(9)-d:新账号的主目录

73. Shell环境下,如何查看远程Linux系统运行的时间

(1)ssh user@被监控主机ip “uptime”:登录主机后执行uptime命令。

(2)uptime命令:用于查看服务器运行了多长时间以及有多少个用户登录。

(3)scp是远程文件传输的命令

74. 关于网络编程的描述小结

(1)一个Socket可以绑定多个网卡

(2)客户端和服务器都可以主动关闭Socket

(3)Socket支持阻塞模式和非阻塞模式

(4)TCP和UDP提供相同的服务时,会选用相同的端口号。

补:

数据包传递的过程:在网络层IP数据包向上传递时,会查看数据包中的协议类型。如果是TCP协议,则交给TCP。如果是UDP,则交给UDP。到了传输层,再根据端口号将数据传送到应用层的应用程序, TCP, UDP端口是独立的。

75. logcat命令

(1)logcat是Android中的一个命令行工具,可以用于得到程序的log信息

(2)logcat -v time:打印log的同时,打印系统时间

(3)logcat -c:清除已有log

76. history命令:查看最近的n条信息

history 4:表示查看最近的3条信息(不包括history)

history 数字:会把刚刚输入的history算作最后一条。

77. 从后台启动程序,应该在命令的结尾加上 &

后台运行可以有两种方式:

(1)命令前加nohup:nohup *.sh

(2)命令后加 &:*.sh &

78. 查看Linux机器的CPU, SWAP分区,硬盘信息

(1)查看CPU:cat /prop/cpuinfo

(2)查看SWAP分区:cat /prop/swaps

(3)查看硬盘信息: df -lh

79. 删除文件行相关的命令dd

(1)dd:删除当前行

(2)ndd:删除光标行往下n行(含光标行)

(3)dgg:删除光标当前行及以上内容

(4)dG:删除光标当前行及以下内容

(5)dH:删除当前页面第1行至光标行

(6)p:粘贴到光标下一行

(7)u:撤销一次操作

(8)Ctrl+r:反撤销(一次)

80. 打印相关的命令 plr

(1)lprm:用于将一个工作由打印机贮列中移除

(2)lpq:用于查看一个打印队列的状态,该程序可以查看打印机队列状态及其所包含的打印任务

(3)lpd:是一个常驻的打印机管理程序,它会根据/etc/printcap的内容来管理本地或远端的打印机

(4)lpr:实用程序用来将一个或多个文件放入打印队列等待打印

猜你喜欢

转载自blog.csdn.net/sulia1234567890/article/details/121213401