子进程继承父进程
用户号UIDs和用户组号GIDs
环境Environment
堆栈
共享内存
打开文件的描述符
执行时关闭(Close-on-exec)标志
信号(Signal)控制设定
进程组号
当前工作目录
根目录
文件方式创建屏蔽字
资源限制
控制终端
子进程独有
进程号PID
不同的父进程号
自己的文件描述符和目录流的拷贝
子进程不继承父进程的进程正文(text),数据和其他锁定内存(memory locks)
不继承异步输入和输出
父进程和子进程拥有独立的地址空间和PID参数。
子进程从父进程继承了用户号和用户组号,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
经过fork()以后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把自己克隆了一遍。事实上,父进程只复制了自己的PCB块。而代码段,数据段和用户堆栈内存空间并没有复制一份,而是与子进程共享。只有当子进程在运行中出现写操作时,才会产生中断,并为子进程分配内存空间。由于父进程的PCB和子进程的一样,所以在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”
终止一个前台进程: ctrl+C;
终止一个后台进程:
1、使用kill命令;
2、使用fg命令将后台进程变为前台进程,然后 ctrl+C。
grep:
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。
grep全称是Global Regular Expr ession Print,表示全局正则表达式版本,它的使用权限是所有用户。
-E 表示使用扩展表达式
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
dd命令用于复制文件并对原文件的内容进行转换和格式化处理。
df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。
ps: Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。
accton:打开或关闭进程账号记录功能。
last:显示曾经登录过的用户。
lastcomm:显示已执行过的命令。
netst查看网络
free看内存
sizeof返回实际空间长度,包含\0,数组和指针最大的区别就是传递到函数的时候,数组只能传递指针进入,失去了数组的性质。
函数内sizeof数组名实际是sizeof指针,不同于常规的sizeof数组=数组长❌成员长
在64位系统中,字符指针大小为8
cat /proc/cpuinfo:查看一台linux机器的CPU信息 du:查看该目录占用文件系统数据块的情况
cat /proc/swaps:查看SWAP分区信息
df -lh:查看硬盘信息
pg:提供了一次性的查看进程结果,但所提供的查看结果不是动态连续的
jobs:查看后台进程作业
ls:显示当前目录中的文件名字
:q是没有修改内容时退出,如果有修改内容则会提示保存;
:wq是保存并退出;
:q!是不管有没有修改内容,都不保存强制退出;
fg:将后台中的命令调至前台继续运行
bg:将一个在后台暂停的命令,变成继续执行
ctrl + z:可以将一个正在前台执行的命令放到后台,并且暂停
arp -a 查看缓存记录
arp -d 删除某些内容
FTP是文件传输协议的缩写,包含了两个通道,一个叫控制通道,一个叫数据通道。
控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的。
数据通道:数据通道是和FTP服务器进行文件传输或者列表的通道。
首先,服务器端启动进程,调用Socket创建一个基于TCP协议的流套接字描述符。
其次,服务进程调用bind命名套接字,将套接字描述符绑定到本地地址和本地端口上。
再次,服务器端调用listen,开始侦听客户端的Socket连接请求。
接下来阻塞,直到收到了客户端的connect请求,调用accept进行相应。
因此,不阻塞bind和listen
SMTP(Simple Mail Transfe Protocol):即简单邮件传输协议
PPP(Public-Private-Partnership):即政府和社会资本合作,是公共基础设施中的一种项目运作方式
IP(Internet Protocol):网络之间互连协议
FTP(File Transfer Protocol):文件传输协议
网络层:网际协议 IP,地址解析协议 ARP,逆地址解析协议RARP,网际控制报文协议 ICMP;
运输层:用户数据报协议 UDP,传输控制协议 TCP;
应用层:文件传输协议 FTP,简单邮件传送协议 SMTP,远程终端协议 TELNET
socket存在两种模式:阻塞和非阻塞
系统调用read从socket中读取数据时,当read返回0的时候,表示socket中数据读取完毕
如果socket设置成非阻塞模式,当socket的输入缓冲区没有可读数据时,read操作会返回错误
ls -lh 可以查看文件权限,大小;
df 主要是查看文件系统占用的磁盘空间使用情况;
du 主要是可以查看指定文件和目录所占用的空间大小。
系统调用通过中断完成,这一过程中系统由用户态变为内核态。 在内核态下,系统可以无限制的访问内核资源
find . -name "*.txt"会列出当前目录和子目录中的以txt结尾的文件
ls *.txt只会列出当前目录下(不包含子目录)中以txt结尾的文件
tar -zcvf 目标文件 源文件
z表示使用gzip压缩
j表示使用bzip2压缩
c表示压缩
x表示解压缩
/ect/profile
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从 /etc/profile.d 目录的配置文件中搜集shell的设置.
/etc/bashrc
为每一个 运行bash shell 的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile
每个用户都可使用该文件输入 专用于 自己使用的shell信息, 当用户登录时,该文件仅仅执行一次 !默认情况下,他设置一些环境变量,执行~/.bashrc文件.
~/.bashrc
该文件包含专用于用户的bash shell的bash信息 ,当登录时以及每次打开新的shell时,该该文件被读取 .
~/.bash_logout
当每次退出系统(退出bash shell)时,执行该文件.
/etc/hosts 设定用户自已的IP与名字的对应表
/etc/HOSTNAME 设定用户的节点名
/etc/resolv.conf 设置DNS
/etc/gateways 设定路由器
:s/old/new 将当前行中查找到的第一个字符“old” 串替换为“new”
:s/old/new/g 将当前行中查找到的所有字符串“old” 替换为“new”
:#,#s/old/new/g 在行号“#,#”范围内替换所有的字符串“old”为“new”
:%s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new”
:s/old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认