Linux多用户实现资源分配,帮助命令及shell(bash特点)

Linux如何实现资源的分配
(一)资源分配
Linux基于Unix开发,是一个多用户的操作系统,而且Linux每个进程都拥有一套完整的资源集,所以Linux要实现关于系统CPU,内存和io资源的分配。
CPU:将CPU运行时间分为很短的时间片,按时间片把CPU分配给不同进程使用,在分配的时间片内不能完成其计算,该进程暂停运行,等待下一轮,然后下一进程使用,直到运行完所有进程。(因为计算机速度快,所以给每个用户的感觉是自己独占了一台计算机)
内存:先把每个进程都存进虚拟内存,然后通过映射分配到真实内存的相应位置(如果进程占用完内存,则下个进程不能再使用,否则内存溢出)
io资源:使用io复用技术,先读取一个进程的部分资源,再停下来读取另一个进程的部分资源,接着上个进程的读取进度继续读取,一直这样直到读取完所有资源。
进程:直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。进程拥有代码和打开的文件资源、数据资源、独立的内存空间。
(二)线程,进程与协程
线程:线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。线程拥有自己的栈空间。
协程:协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。
对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。无论进程还是线程,都是由操作系统所管理的。而协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源。
Xshell命令
获取命令帮助
内部命令与外部命令:内部命令被构建在shell之中。当执行shell命令时,内部命令的执行速度非常快。这是因为没有其他的进程因为执行这条命令而被创建。比如,当执行“cd”命令时,没有进程被创建,在执行过程中只是简单的改变当前的目录。外部命令并没有被构建在shell中。这些可执行的外部命令保存在一个独立的文件当中。当一个外部命令被执行时,一个新的进程即被创建同时命令被执行。比如,当执行“cat”命令时,/usr/bin/cat就会被执行。
1.type 命令:判断命令是内/外部命令。
Linux多用户实现资源分配,帮助命令及shell(bash特点)
2.file 路径/命令:获取命令遵循的特定格式规范。
Linux多用户实现资源分配,帮助命令及shell(bash特点)
3.help 命令:获取内部命令的帮助(功能内容)------>echo $? 看返回值判断命令是否正确。
Linux多用户实现资源分配,帮助命令及shell(bash特点)
4."–help":获取大多数外部命令的帮助。
Linux多用户实现资源分配,帮助命令及shell(bash特点)
5.man命令:以全屏显示在线帮助,一般用man查看一个命令的帮助文档的时候,可以通过whatis查看一下该命令在man帮助文档中的入口,一条命令可能有多个man手册页入口(例如,whatis ls,1:用户指令,5:文件系统---->man 1 ls查看)
man命令文本搜索:按q退出;上下键移动;空格键:向文件尾翻一屏;b: 向文件首部翻一屏; Ctrl+d:向文件尾部翻半屏; Ctrl+u:向文件首部翻半屏; 回车键:向文件尾部翻一行; k: 向文件首部翻一行; G:跳转至最后一行; #G: 跳转至指定行; 1G:跳转至文件首部。/keyword:从文件首部向文件尾部依次查找;不区分字符大小写. ?keyword:从文件尾部向文件首部依次查找.n: 与查找命令方向相同; N: 与查找命令方向相反。
Linux多用户实现资源分配,帮助命令及shell(bash特点)
6.info命令:另一种在线帮助,和man功能类似,更加详细。
Linux多用户实现资源分配,帮助命令及shell(bash特点)
Linux文本编辑工具vi/vim(vi---->vim功能更多,比如语法着色,速度更高)
1.vim:是所有Unix及Linux系统下标准的编辑器,相当于Windows系统中的记事本,常用来编辑系统配置文件。
2.vimtutor:vim教程使用
3.vim模式及模式间切换:命令模式,输入模式,末行模式。命令–>输入:i键。命令–>末行::键。输入/末行—>命令:esc键。
4.命令模式操作键:↑↓←→(光标移动);Page down/up(向下/上翻页);home/end(跳至行首/尾);gg/G/#G(跳文件行首/跳文件末行尾/跳文件第#行)
输入模式操作键
末行模式操作键:保存文件(:w);退出vim(:q);强制退出(:q!);保存退出(:wq)。
shell
什么是shell:Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言,命令解释程序及程序设计语言。是用户和Linux内核之间的接口程序,当从shell或其他程序向Linux传递命令时,内核会做出相应的反应,其程序存在于用户空间,是人机交互的屏障,对内核起保护作用。
shell程序是独特的程序,负责解析用户提供的命令,shell在解析这个命令的时候,第一个要做的就是找到这个命令,我们键入命令的最左侧是如何找到的(在内部提供了一个环境变量,在众多的环境变量中有一个叫PATH,echo $PATH 从哪些路径中查找用户键入的命令字符串对应的命令文件)
常见shell的种类
1.bash
大多数Linux系统默认使用的shell,bash shell是Bourne shell的一个免费版本,他是最早的unix shell,下面会重点说明bash。
2. sh
是一个快捷方式,已经被/bin/bash所取代
3. csh
C shell使用的是“类c”语法,csh是具有C语言风格的一种shell,内部命令有52个,较为庞大。目前使用不多,已被/bin/tcsh取代。
4. ksh
语法和Bourne shell相同,同时具备了C shell的易用特点,与bash相比有一定的限制性。
bash的特点
1.补全
(1)命令补全
按照环境变量PATH定义的路径查找命名:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Linux多用户实现资源分配,帮助命令及shell(bash特点)
(2)路径补全
在当前显示的路径下查找目录:
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
Linux多用户实现资源分配,帮助命令及shell(bash特点)
2.保存历史命令
作用:方便命令操作;查看系统上执行过的命令
(1)查看历史命令
[[email protected] ~]# history ( 默认保存1000条命令)
Linux多用户实现资源分配,帮助命令及shell(bash特点)
(2)历史命令将保存在用户家目录下的.bash_history文件中
[[email protected] ~]# vim .bash_history
Linux多用户实现资源分配,帮助命令及shell(bash特点)
(3) 不同用户拥有独立的历史命令
(4)历史命令不会立即写入文件,当bash程序退出时,写入文件
(5)保持历史命令存在安全隐患,比如修改密码后可在历史命令中查找到修改后密码
[[email protected] ~]# echo $HISTSIZE 可查看历史命令保存条数
Linux多用户实现资源分配,帮助命令及shell(bash特点)

修改历史命令保存条数
临时修改(退出后恢复1000条):[[email protected] ~]# HISTSIZE=10
Linux多用户实现资源分配,帮助命令及shell(bash特点)
永久修改:[[email protected] ~]# vim /etc/profile
[[email protected] ~]# source /etc/profile
如果打开vim /etc/profile文件没有HISTSIZE=****,可以vim +/HISTSIZE /etc/profile可以直接定位到HISTSIZE进行修改。
Linux多用户实现资源分配,帮助命令及shell(bash特点)
Linux多用户实现资源分配,帮助命令及shell(bash特点)

(6)如何给历史命令添加时间戳
永久添加
[[email protected] ~]# vim /etc/profile
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
[[email protected] ~]# source /etc/profile
Linux多用户实现资源分配,帮助命令及shell(bash特点)
Linux多用户实现资源分配,帮助命令及shell(bash特点)
(7)创建多级目录
[[email protected] ~]# mkdir -p /data/123/456
[[email protected] ~]#mkdir dir1 在当前目录下建立dir1目录
[[email protected] ~]#mkdir -p dir2/bak 在dir2目录下建立bak目录,如果dir2目录不存在,那么同时建立dir2目录
Linux多用户实现资源分配,帮助命令及shell(bash特点)